Dans Ubuntu, je veux copier un gros fichier de mon disque dur vers un lecteur amovible en rsync
. Pour une autre raison, l'opération ne peut pas être terminée en une seule fois. J'essaie donc de comprendre comment utiliser rsync
pour reprendre la copie du fichier là où il s'était arrêté la dernière fois.
J'ai essayé d'utiliser l'option --partial
ou --inplace
, mais avec --progress
, je l' ai trouvé rsync
avec --partial
ou --inplace
commence en fait dès le début au lieu de partir de ce qui restait la dernière fois. Arrêter manuellement rsync
tôt et vérifier la taille du fichier reçu a également confirmé ce que j’ai trouvé.
Mais avec --append
, rsync commence à partir de ce qui restait la dernière fois.
Je suis confus que j'ai vu sur la page de manuel --partial
, --inplace
et --append
semble se rapporter à la copie de reprendre ce qui restait la dernière fois. Est-ce que quelqu'un est capable d'expliquer la différence? Pourquoi ne pas --partial
ou --inplace
travailler pour reprendre la copie? Est-il vrai que pour reprendre la copie, rsync
doit travailler avec l' --append
option?
De plus, si un fichier partiel a été laissé par, mv
ou cp
non par rsync, la rsync --append
copie sera-t-elle correctement reprise?
--append
faitrsync
croire que, si deux fichiers correspondants ont une longueur différente, le plus court est identique à la partie initiale du plus long. Donc, oui, si vous commencez à copier un fichier volumineux aveccp
et interrompez le processus de copie, alors vousrsync --append
ne copiez que la partie restante du fichier. ( Remarque: sicp
est interrompu par une panne système, il y a une petite chance que le contenu du fichier et les métadonnées ne soient pas synchronisés, c'est-à-dire que le fichier est corrompu. Dans ce cas,rsync
une nouvelle exécution sans--append
corriger le problème.)--partial
sans--append
.--append
et--append-verify
avez un cas d'échec dangereux: lorsque le fichier du destinataire est de la même taille ou plus, mais contient des données différentes. Je suggère une solution basée à la--no-whole-file
place.Soyez conscient que cela
--append
implique--inplace
, ce qui implique lui-même--partial
.En utilisant simplement,
--partial
vous devriezrsync
laisser des transferts partiels et les reprendre lors de tentatives ultérieures.En utilisant,
--append
vous devriezrsync
laisser à la fois des fichiers partiels et les reprendre la prochaine fois. Après le transfertrsync
devrait vérifier la somme de contrôle des données transmises uniquement.--append-verify
inclut l'ensemble du fichier dans la vérification de la somme de contrôle, y compris toute partie transférée lors d'un transfert précédent.Avec une vérification de somme de contrôle
--append
ou--append-verify
un échec, le fichier doit être complètement retransmis (en utilisant--inplace
)Vous devriez pouvoir reprendre une opération
mv
oucp
avec,rsync
mais vous pouvez utiliser l'--append-verify
option pour plus de tranquillité d'esprit.Notez que l'utilisation ne
--append
permetrsync
de copier que les fichiers dont la taille sur le destinataire est inférieure à celle de l'expéditeur (quels que soient l'horodatage) ou qui sont absents sur le destinataire. Par documentation sur cette option:Plus d'infos dans la page de manuel
la source
--append
et--append-verify
avoir un cas d'échec dangereux: lorsque le fichier du destinataire est de la même taille ou plus grand mais contient des données différentes. Je suggère une solution basée à la--no-whole-file
place.--checksum
convient de l'utiliser. Je ne peux pas le trouver spécifié explicitement, mais logiquement, n'importe laquelle des options de reprise doit impliquer,--no-whole-file
car elle--whole-file
devrait être incompatible.--append-verify
ignorera les fichiers de taille identique ou plus grande avec des dates différentes , ce qui peut être "inattendu". Il n’est pas nécessaire d’utiliser--checksum
tous les fichiers, comme lersync
fera toute une somme de contrôle, mais uniquement sur ce qui est transféré.--checksum
indiquersync
à la somme de contrôle des fichiers avant de l’ envoyer, ce qui garantit que tous les fichiers modifiés sont transférés, quelle que soit leur taille ou leur taille. Avez-vous une source pour le--append-verify
comportement inattendu car ce que vous décrivez ne correspond pas à la documentation ou à mon expérience (limitée)?--append-verify
fait référence à--append
ce qui dit:If a file needs to be transferred and its size on the receiver is the same or longer than the size on the sender, the file is skipped.
Même si un fichier doit être transféré à cause de--checksum
, il peut toujours être ignoré.David Schwartz a raison,
--partial
(ou mieux-P
) fait ce que vous voulez. J'ai vérifié cela sur un fichier 37G qui a été arrêté ~ 8g dessus, sur un réseau. rsync a rapidement analysé les premières parties du partiel (indiquant les progrès réalisés grâce à-P
), puis a repris le transfert à la fin du fichier partiel.la source
--whole-file
description de l' option.--no-W
(ce qui fonctionne réellement!)--no-W
sauf si vous comprenez exactement ce que cela signifie pour les fichiers locaux. Voir unix.stackexchange.com/a/181018/100397Vous faisiez bien
--partial
ce que vous voulez. Il semble commencer depuis le début car il commence toujours au début de la liste des fragments de données de fichier qu'il doit copier. Cette--append
option est dangereuse et entraînera un fichier corrompu si les données ne correspondent pas pour une raison quelconque.la source
--append
poursuivies à partir du décalage d'octet).Par défaut, cette option
rsync
est activée--whole-file
si vous effectuez un transfert de disque local vers un disque local. Cela redémarrera un transfert interrompu depuis le début, plutôt que de vérifier les pièces déjà présentes.Pour désactiver ceci, utilisez:
La combinaison de cela avec
--inplace
ou--partial
permettra de reprendre le transfert plus tard.Mon alias pour utiliser
rsync
pour copier est:Avertissement : soyez prudent d'utiliser
--append-verify
comme il sauter tous les fichiers de destination qui sont de la même taille ou plus.la source
rsync
compare les fichiers source et les fichiers de destination correspondants avant le transfert afin d’envoyer uniquement les parties modifiées (transfert delta).--no-whole-file
ditrsync
de faire la même chose pour la copie locale à locale. La documentation n'indique pas que cela aurait une incidence sur la reprise des transferts partiels de fichiers individuels.rsync
ignorera les fichiers avec exactement la même taille et les mêmes horodatages. Ni--append-verify
ne--no-whole-file
devrait ni changer ce comportement, mais--checksum
devrait fonctionner avec soit pour la tranquillité d'esprit au coût de disque IO--append-verify
ignorera les fichiers de taille identique ou plus grande avec des dates différentes , ce qui peut être "inattendu". Il n’est pas nécessaire d’utiliser--checksum
tous les fichiers, comme lersync
fera toute une somme de contrôle, mais uniquement sur ce qui est transféré.