Je dois copier une grande arborescence de répertoires, environ 1,8 To. C'est tout local. Par habitude j'utiliserais rsync
, cependant je me demande s'il y a beaucoup de raison, et si je devrais plutôt utiliser cp
.
Je suis inquiet pour les permissions et uid / gid, car ils doivent être conservés dans la copie (je sais que rsync le fait). Ainsi que des choses comme les liens symboliques.
La destination est vide, je n'ai donc pas à m'inquiéter de la mise à jour conditionnelle de certains fichiers. C'est tout le disque local, ainsi je n'ai pas à m'inquiéter de ssh ou du réseau.
La raison pour laquelle je serais tenté de ne pas utiliser rsync, c'est parce que rsync pourrait en faire plus que ce dont j'ai besoin. Fichiers de sommes de contrôle rsync. Je n’en ai pas besoin, et je crains que cela ne prenne plus de temps que cp.
Alors, que comptez-vous rsync
ou cp
?
Réponses:
J'utiliserais rsync car cela signifie que s'il est interrompu pour une raison quelconque, vous pouvez le redémarrer facilement avec un coût très faible. Et étant rsync, il peut même redémarrer à mi-chemin à travers un fichier volumineux. Comme d'autres le mentionnent, il peut facilement exclure des fichiers. Le moyen le plus simple de préserver la plupart des choses consiste à utiliser le
-a
drapeau - 'archive'. Alors:Bien que UID / GID et les liens symboliques soient préservés par
-a
(voir-lpgo
), votre question implique que vous souhaitiez peut-être une copie complète des informations du système de fichiers; et-a
n'inclut pas les liens en dur, les attributs étendus ni les ACL (sous Linux), ni les fourchettes ci-dessus ni les ressources (sous OS X). Ainsi, pour une copie robuste d'un système de fichiers, vous devez inclure ces indicateurs:La valeur par défaut cp va redémarrer, bien que l'
-u
indicateur "ne copie que lorsque le fichier SOURCE est plus récent que le fichier de destination ou lorsque le fichier de destination est manquant" . Et l'-a
indicateur (archive) sera récursif, pas une copie des fichiers si vous devez redémarrer et conserver les autorisations. Alors:la source
Lors de la copie sur le système de fichiers local, j'utilise toujours les options suivantes de rsync:
Voici mon raisonnement:
J'ai vu des transferts 17% plus rapides utilisant les paramètres rsync ci-dessus par rapport à la commande tar suivante, comme le suggère une autre réponse:
la source
rsync: --no-compress: unknown option
@ Ellis Percival.rm -rf /src/
.Lorsque je dois copier une grande quantité de données, j'utilise généralement une combinaison de tar et de rsync. La première passe est de le goudronner, quelque chose comme ceci:
Généralement, avec une grande quantité de fichiers, tar ne peut pas en gérer pour une raison quelconque. Ou bien le processus sera peut-être interrompu ou, s'il s'agit d'une migration de système de fichiers, vous voudrez peut-être effectuer la copie initiale avant l'étape de migration proprement dite. Quoi qu'il en soit, après la copie initiale, je fais une étape rsync pour tout synchroniser:
Notez que le slash final
/src/
est important.la source
pv
au milieu pour pouvoir suivre les progrès, en estimant la taille de toutes les données en utilisantdf
. J'ai aussi utilisé--numeric-owner
, car le disque source provenait d'un autre système et je ne voulaistar
pas déranger les propriétaires:tar -C /old-path --numeric-owner -S -c . | pv -tpeba -s 100G | tar -C /new-path --numeric-owner -S -xp
rsync
Voici le rsync que j'utilise, je préfère cp pour les commandes simples, pas ceci.
cpio
Voici un moyen encore plus sûr, cpio. C'est à peu près aussi rapide que le goudron, peut-être un peu plus vite.
le goudron
C'est aussi bon, et continue sur les échecs de lecture.
Notez que ce ne sont que des copies locales.
la source
Ce que tu préfères. Juste n'oubliez pas le
-a
commutateur lorsque vous décidez d'utilisercp
.Si vous avez vraiment besoin d'une réponse: j'utiliserais rsync parce que c'est beaucoup plus flexible. Besoin d'arrêter avant la fin de la copie? Juste ctrl-c et reprendre dès que votre dos. Besoin d'exclure certains fichiers? Il suffit d'utiliser
--exclude-from
. Besoin de changer de propriétaire ou d'autorisations? rsync le fera pour vous.la source
La
rsync
commande calcule toujours des sommes de contrôle sur chaque octet transféré.L'option de ligne de commande indique
--checksum
uniquement si les sommes de contrôle des fichiers sont utilisées pour déterminer les fichiers à transférer ou non, à savoir:La page de manuel dit aussi ceci:
Ainsi
rsync
, toujours, toujours, calcule une somme de contrôle de l’ensemble du fichier du côté réception, même lorsque l’-c/ --checksum
option est "désactivée".la source
rsync -aPhW --protocol=28
aide à accélérer ces grandes copies avec RSYNC. Je vais toujours au rsync parce que la pensée d'être à mi-chemin de 90GiB et ça me fait peur de m'éloigner du CPla source
rsync est génial, mais rencontre des problèmes avec des arborescences de répertoires très volumineuses, car il les stocke en mémoire. Je cherchais juste à voir s'ils régleraient ce problème quand j'ai trouvé ce fil.
J'ai aussi trouvé:
http://matthew.mceachen.us/geek/gigasync/
Vous pouvez également briser manuellement l’arbre et exécuter plusieurs rsyncs.
la source
Ce fil de discussion était très utile et, comme il y avait tellement d'options pour atteindre le résultat, j'ai décidé de comparer quelques-unes d'entre elles. Je pense que mes résultats peuvent aider les autres à savoir ce qui a fonctionné plus rapidement.
Pour déplacer 532 Go de données réparties sur 1 753 200 fichiers, nous avons eu ces temps:
rsync
a pris 232 minutestar
a pris 206 minutescpio
a pris 225 minutesrsync + parallel
a pris 209 minutesSur mon cas, j'ai préféré utiliser
rsync + parallel
. J'espère que cette information aidera plus de gens à choisir parmi ces alternatives.Le benchmark complet est publié ici
la source
cp
? C'est le titre de la question!cp
c'est peu sûr, c'est-à-dire que quand ça casse, il faut tout recommencer, c'est pour ça quersync
je préfère les options qui peuvent reprendre, ergo est mon préféré :)Lors de la copie d'un répertoire local, mon expérience est que "cp -van src dest" est 20% plus rapide que rsync. En ce qui concerne la possibilité de redémarrage, c'est ce que fait "-n". Il vous suffit de récupérer le fichier partiellement copié. Pas douloureux sauf si c'est un ISO ou autre.
la source
ARJ EST SI VIEILLE ÉCOLE !! Je doute vraiment que ARJ et / ou rsync donneront des performances.
Certainement ce que je fais toujours est d'utiliser cpio:
Ceci est presque rapide que le CP, nettement plus rapide que le goudron et sans canalisation.
la source
cpio
page de manuel de FreeBSD .cpio
a malheureusement une limite supérieure de 8 Go pour les fichiers.find
commande, comme vous l'avez énumérée, contient un tuyau:find . -print | cpio -pdm /target/folder
Vous voulez absolument essayer rclone . Cette chose est rapide folle:
Ceci est une copie locale de et vers un SSD LITEONIT LCS-256 (256 Go).
Vous pouvez ajouter
--ignore-checksum
sur la première manche pour le rendre encore plus rapide.la source
Les deux fonctionneront très bien.
la source
tar
ferait également le travail, mais ne reprendrait pas d’être interrompu comme le ferait rsync.la source
Et si vous utilisez ARJ?
où
-jm -m1
sont les niveaux de compression et en-je
fait un exécutable. Maintenant, vous avez une bash encapsulée de fichiers.Puis pour l'extraction sur la carte cible
où la carte source sera faite (où
-y
est toujours accepter, écraser, ignorer, etc.)On peut ensuite scp ftp le filepack vers la zone cible et l'exécuter, si cela est possible.
la source
Certaines accélérations peuvent être appliquées à
rsync
:Éviter
-z
/--compress
: la compression ne chargera que la CPU car le transfert ne se fait pas sur un réseau mais sur de la RAM.--append-verify
: reprendre un transfert interrompu. Cela semble être une bonne idée, mais le cas d'échec est dangereux: tout fichier de destination de la même taille (ou plus) que la source sera IGNORÉ. En outre, il contrôle l'ensemble du fichier à la fin, ce qui signifie qu'aucune accélération significative n'est nécessaire--no-whole-file
lors de l'ajout d'un cas d'échec dangereux.Utilisation
-S
/--sparse
: transforme les séquences de valeurs nulles en blocs clairsemés--partial
ou-P
qui est--partial --progress
: sauvegardez tous les fichiers partiellement transférés pour les reprendre ultérieurement. Remarque: les fichiers n'auront pas de nom temporaire. Veillez donc à ce que personne d'autre ne s'attend à utiliser la destination avant la fin de la copie.--no-whole-file
de sorte que tout ce qui doit être renvoyé utilise le transfert delta. Lire la moitié d'un fichier partiellement transféré est souvent beaucoup plus rapide que de le réécrire.--inplace
pour éviter la copie de fichier (mais seulement si rien ne lit la destination jusqu'à la fin du transfert)la source