La principale différence entre ces outils réside dans la façon dont ils copient les fichiers.
scp
lit essentiellement le fichier source et l'écrit dans la destination. Il effectue une copie linéaire simple, localement ou sur un réseau.
rsync
copie également les fichiers localement ou sur un réseau. Mais il utilise un algorithme de transfert delta spécial et quelques optimisations pour rendre l'opération beaucoup plus rapide. Considérez l'appel.
rsync A host:B
rsync
vérifiera la taille des fichiers et les horodatages de modification de A et B , et ignorera tout traitement supplémentaire s'ils correspondent.
Si le fichier de destination B existe déjà, l'algorithme de transfert delta s'assurera que seules les différences entre A et B sont envoyées sur le câble.
rsync
écrit les données dans un fichier temporaire T , puis remplacer le fichier de destination B avec T pour faire le look de mise à jour « atomique » à des processus qui pourraient utiliser B .
Une autre différence entre eux concerne l'invocation. rsync
a une pléthore d'options de ligne de commande, permettant à l'utilisateur d'affiner son comportement. Il prend en charge des règles de filtrage complexes, s'exécute en mode batch, en mode démon, etc. scp
ne dispose que de quelques commutateurs.
En résumé, utilisez scp
pour vos tâches quotidiennes. Commandes que vous saisissez de temps en temps sur votre shell interactif. Il est plus simple à utiliser et, dans ces cas, les rsync
optimisations n'aideront pas beaucoup.
Pour les tâches récurrentes, comme les cron
travaux, utilisez rsync
. Comme mentionné, lors de plusieurs invocations, il tirera parti des données déjà transférées, en effectuant très rapidement et en économisant des ressources. C'est un excellent outil pour garder deux répertoires synchronisés sur un réseau.
En outre, lorsque vous traitez des fichiers volumineux, utilisez rsync
l' -P
option. Si le transfert est interrompu, vous pouvez le reprendre là où il s'est arrêté en relançant la commande. Voir la réponse de Sid Kshatriya .