288 votes

Quelle est la différence entre scp et rsync ?

Dans cet article sur la mise en place d'un service de blogs fantômes. https://www.digitalocean.com/community/articles/how-to-host-ghost-with-nginx-on-digitalocean il est indiqué d'utiliser scp pour copier les fichiers de la machine locale vers le serveur avec une commande comme celle-ci

scp -r ghost-0.3 root@*your-server-ip*:~/

Cependant, dans ce railcast (abonnement payant requis) http://railscasts.com/episodes/339-chef-solo-basics?view=asciicast ), il utilise scp pour faire l'inverse, pour copier du serveur distant vers la machine locale avec une commande comme celle-ci

 scp -r root@178.xxx.xxx.xxx:/var/chef .

Ainsi, dans un tutoriel, scp copie les fichiers d'une manière, dans l'autre scp copie les fichiers d'une autre manière. Dans le même Railscast, lorsque l'auteur veut copier des fichiers sur le serveur distant, il utilise rsync

rsync -r . root@178.xxx.xxx.xxx:/var/chef

Pourquoi les rsync si la commande scp se copiera dans les deux sens ? Quelle est la différence entre les deux ?

1 votes

À part le fait qu'il est plus simple et toujours crypté, personne n'a indiqué que scp pouvait faire mieux que "rsync -aA". je préfère "rsync -aAX --delete source dest". vérifiez bsync pour la synchronisation bidirectionnelle.

421voto

Rafa Points 2010

La principale différence entre ces outils est la façon dont ils copient les fichiers.

Scp lit essentiellement le fichier source et l'écrit sur la destination. Il effectue une copie linéaire simple, localement ou sur un réseau.

Rsync copie également des fichiers localement ou sur un réseau. Mais il utilise un algorithme spécial de transfert delta et quelques optimisations pour rendre l'opération beaucoup plus rapide. Considérons l'appel.

rsync A host:B
  • 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és sur le fil.

  • Rsync vérifiera la taille des fichiers et l'horodatage des modifications dans les deux cas. A et B et de ne pas poursuivre le traitement s'ils correspondent.

  • Rsync écrira les données dans un fichier temporaire T puis remplacer le fichier de destination B avec T pour que la mise à jour ait l'air "atomique" pour les processus qui pourraient utiliser B .

Une autre différence entre eux concerne l'invocation. Rsync dispose d'une pléthore d'options de ligne de commande, permettant à l'utilisateur d'affiner son comportement. Il supporte des règles de filtrage complexes, fonctionne en mode batch, en mode démon, etc. Scp n'a que quelques interrupteurs.

En résumé, utilisez scp pour vos tâches quotidiennes. Des commandes que vous tapez de temps en temps sur votre shell interactif. C'est plus simple à utiliser, et dans ces cas-là rsync les optimisations ne seront pas d'un grand secours.

Pour les tâches récurrentes, comme cron emplois, utilisez rsync . Comme nous l'avons mentionné, en cas d'invocations multiples, il tire parti des données déjà transférées, ce qui lui permet d'être très rapide et d'économiser des ressources. C'est un excellent outil pour garder deux répertoires synchronisés sur un réseau.

26 votes

Vous dites utiliser scp pour vos tâches quotidiennes. D'après votre explication et l'OP, il semble que l'interface des deux outils soit identique lorsqu'ils sont utilisés sans options. Si rsync a une implémentation supérieure et que les interfaces sont identiques, pourquoi ne pas toujours utiliser rsync ?

13 votes

Leur interface n'est pas la même, même sans options. Rsync a une interprétation spéciale de la barre oblique de fin de l'argument source (synchronisation du répertoire lui-même et non de son contenu). Il peut y avoir d'autres problèmes, je n'en suis pas sûr.

8 votes

En outre, je suppose que scp est plus susceptible d'être disponible sur un système de type Unix, ce qui permet d'éviter un ennuyeux "commande non trouvée" de temps à autre.

86voto

Sid Kshatriya Points 3274

rysnc peut être utile pour fonctionner sur des connexions lentes et peu fiables. Ainsi, si votre téléchargement s'interrompt au milieu d'un gros fichier, rysnc sera capable de reprendre là où il s'est arrêté lorsqu'il sera invoqué à nouveau.

Utilisez rsync -vP username@host:/path/to/file .

L'option -P préserve les fichiers partiellement téléchargés et indique également la progression.

Comme d'habitude, vérifiez man rsync

52voto

FullStack Points 648

Différence entre scp et rsync sur différents paramètres

1. Performance par rapport au temps de latence

  • scp scp est relativement moins optimisé et rapide

  • rsync : rsync est comparativement plus optimisé et plus rapide

https://www.disk91.com/2014/technology/networks/compare-performance-of-different-file-transfer-protocol-over-latency/

2. Traitement des interruptions

  • scp Outil de ligne de commande scp : impossible de reprendre des téléchargements interrompus à la suite d'une perte de connexion au réseau

  • rsync : Si la session rsync ci-dessus est interrompue, vous pouvez la reprendre autant de fois que vous le souhaitez en tapant la même commande. rsync reprendra automatiquement le transfert là où il s'est arrêté.

http://ask.xmodulo.com/resume-large-scp-file-transfer-linux.html

3. Exemple de commande

scp

$ scp source_file_path destination_file_path

rsync

$ cd /path/to/directory/of/partially_downloaded_file
$ rsync -P --rsh=ssh userid@remotehost.com:bigdata.tgz ./bigdata.tgz 

En -P est identique à l'option --partial --progress permettant à rsync de fonctionner avec des fichiers partiellement téléchargés. Les --rsh=ssh indique à rsync d'utiliser ssh comme shell distant.

4. Sécurité :

scp est plus sûr. Vous devez utiliser rsync --rsh=ssh pour le rendre aussi sûr que scp.

document de l'homme pour en savoir plus :

performance chart

11voto

count0 Points 1431

L'une des principales caractéristiques de la rsync plus scp (à part l'algorithme delta et le cryptage s'il est utilisé avec ssh), c'est qu'il est automatiquement vérifie si le fichier transféré a été transféré correctement. Scp ne le fait pas, ce qui peut parfois entraîner une corruption lors du transfert de fichiers volumineux. Ainsi, en règle générale rsync est une copie avec garantie .

Les pages de manuel de Centos mentionnent la fin de la section --checksum description de l'option :

Notez que rsync vérifie toujours que chaque fichier transféré est bien de type correctement reconstruit du côté de la réception en vérifiant un fichier entier. qui est générée lors du transfert du fichier, mais que les automatique après le transfert n'a rien à voir avec l'option avant le transfert de cette Cette vérification automatique après le transfert n'a rien à voir avec la vérification avant le transfert de l'option "Ce fichier doit-il être mis à jour ? avant le transfert.

5voto

Samuel Li Points 308

Pour moi, il y a une distinction à faire entre scp est toujours cryptée avec ssh (secure shell), tandis que rsync n'est pas nécessairement cryptée. Plus précisément, rsync n'effectue aucun chiffrement en lui-même ; il est toujours capable d'utiliser d'autres mécanismes (ssh par exemple) pour effectuer le chiffrement.

Outre la sécurité, le cryptage a également un impact majeur sur la vitesse de transfert, ainsi que sur la charge de travail de l'unité centrale. (D'après mon expérience, le rsync peut être beaucoup plus rapide que le scp .)

Consultez ce document poste pour quand rsync a le cryptage sur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X