Un article sur la configuration des blogs Ghost dit d'utiliser scp
pour copier de ma machine locale vers un serveur distant:
scp -r ghost-0.3 root@*your-server-ip*:~/
Cependant, Railscast 339: Chef Solo Basics utilise scp
pour copier dans la direction opposée (du serveur distant vers la machine locale):
scp -r [email protected]:/var/chef .
Dans le même Railscast, lorsque l'auteur souhaite copier des fichiers sur le serveur distant (même sens que le premier exemple), il utilise rsync
:
rsync -r . [email protected]:/var/chef
Pourquoi utiliser la rsync
commande if scp
va copier dans les deux sens? En quoi scp
diffère- rsync
t-il?
Réponses:
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
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, lesrsync
optimisations n'aideront pas beaucoup.Pour les tâches récurrentes, comme les
cron
travaux, utilisezrsync
. 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 .la source
scp
est plus susceptible d'être disponible sur un système de type Unix, vous évitez donc de temps en temps une "commande introuvable" ennuyeuse.scp
etrsync
:rsync -a
versusscp -rp
pour conserver les temps de modification et les autorisations.rysnc peut être utile pour fonctionner sur des connexions lentes et peu fiables. Donc, si votre téléchargement s'interrompt au milieu d'un gros fichier, rysnc pourra continuer à partir de là où il s'était arrêté lors d'un nouvel appel.
Utilisation
rsync -vP username@host:/path/to/file .
L'option -P conserve les fichiers partiellement téléchargés et indique également la progression.
Comme d'habitude, vérifiez
man rsync
la source
Différence b / w scp et rsync sur un paramètre différent
1. Performance sur latence
scp
: scp est relativement moins optimiser et vitessersync
: rsync est comparativement plus optimisé et plus rapidehttps://www.disk91.com/2014/technology/networks/compare-performance-of-different-file-transfer-protocol-over-latency/
2. Traitement des interruptions
scp
: l'outil de ligne de commande scp ne peut pas reprendre les téléchargements interrompus à partir de connexions réseau perduesrsync
: Si la session rsync ci-dessus elle-même est interrompue, vous pouvez la reprendre autant de fois que vous le souhaitez en tapant la même commande. rsync redémarrera automatiquement le transfert là où il s'était arrêté.http://ask.xmodulo.com/resume-large-scp-file-transfer-linux.html
3. Exemple de commande
scp
rsync
L'
-P
option est la même que pour--partial --progress
permettre à rsync de fonctionner avec des fichiers partiellement téléchargés. L'--rsh=ssh
option indique à rsync d'utiliser ssh comme shell distant.4. Sécurité:
scp est plus sécurisé. Vous devez utiliser
rsync --rsh=ssh
pour le rendre aussi sécurisé que scp.document homme pour en savoir plus:
la source
The scp protocol is outdated, inflexible and not readily fixed. We recommend the use of more modern protocols like sftp and rsync for file transfer instead.
Une caractéristique majeure de
rsync
overscp
(à côté de l'algorithme delta et du chiffrement s'il est utilisé avec ssh) est qu'il vérifie automatiquement si le fichier transféré a été transféré correctement. Scp ne le fera pas, ce qui pourrait occasionnellement entraîner une corruption lors du transfert de fichiers plus volumineux. Donc en général rsync est une copie avec garantie .Les pages de manuel Centos mentionnent ceci à la fin de la
--checksum
description de l' option:la source
Il y a une distinction pour moi qui
scp
est toujours cryptée avec ssh (shell sécurisé), alors qu'ellersync
n'est pas nécessairement cryptée. Plus précisément,rsync
n'effectue aucun chiffrement seul; il est toujours capable d'utiliser d'autres mécanismes (ssh par exemple) pour effectuer le chiffrement.En plus de la sécurité, le cryptage a également un impact majeur sur votre vitesse de transfert, ainsi que la surcharge du processeur. (Mon expérience est que cela
rsync
peut être beaucoup plus rapide quescp
.)Consultez cet article pour savoir quand le
rsync
cryptage est activé.la source
scp est préférable pour un fichier.
OU une combinaison de
tar
& compression pour les petits ensembles de données comme les arbres de code source avec de petites ressources (par exemple : images, sqlite, etc. ).Pourtant , lorsque vous commencez à traiter des volumes plus importants, dites:
Il devient peu pratique de construire un fichier zip / tar.gz à transférer avec scp à ce stade, jusqu'aux limites physiques du serveur hébergé.
À titre d'exercice, vous pouvez faire quelques gymnastique comme la tuyauterie
tar
dansssh
et redirigeant les résultats dans un distant fichier. (évitant d'avoir à créer un swap ou un clone temporaire aka zip ou tar.gz)Cependant ,
rsync simplifie ce processus et vous permet de transférer des données sans consommer d'espace disque supplémentaire.
Aussi ,
Les mises à jour continues (cron?) Utilisent des changements minimes par rapport aux copies clonées complètes accélèrent les migrations de données importantes au fil du temps.
tl; dr
scp
== petite échelle (avec de la place pour créer des fichiers compressés sur le même lecteur)rsync
== grande échelle (avec la nécessité de sauvegarder des données volumineuses et pas de place)la source
il vaut mieux penser dans un contexte pratique. Dans notre équipe, nous utilisons
rsync -aP
pour remplacer un mauvais hôte cassandra dans notre cluster. Nous ne pouvons pas faire cela avec scp (lent et pas de préservation des progrès).la source