Reprendre le transfert d'un seul fichier par rsync

22

Dans Ubuntu, je veux copier un gros fichier de mon disque dur vers un disque amovible par rsync. Pour une raison ou une autre, l'opération ne peut pas se terminer en une seule fois. J'essaie donc de comprendre comment utiliser rsync pour reprendre la copie de fichiers de l'endroit où il a été laissé la dernière fois.

J'ai essayé d'utiliser l'option --partial ou --inplace, mais avec --progress, j'ai trouvé que rsync avec --partial ou --inplace démarre en fait depuis le début au lieu de ce qui restait la dernière fois. L'arrêt précoce de rsync et la vérification de la taille du fichier reçu confirment également ce que j'ai trouvé.

Mais avec --append, rsync démarre à partir de ce qui restait la dernière fois.

Je suis confus comme je l'ai vu sur la page de manuel --partial, --inplace ou --append semble avoir trait à la reprise de la copie de ce qui a été laissé la dernière fois. Quelqu'un peut-il expliquer la différence? Pourquoi --partial ou --inplace ne fonctionne pas pour reprendre une copie? Est-il vrai que pour reprendre une copie, rsync doit travailler avec l'option --append?

De plus, si un fichier partiel a été laissé par mv ou cp et non par rsync, rsync --appendra-t-il correctement?

Merci et salutations!

Tim
la source
Ma compréhension du fonctionnement de rsync est limitée, mais pour répondre à votre dernière question. Si un cp est incomplet, rsync devrait reprendre la copie. Je crois que les fichiers de hachage rsync d'une manière qui trouverait la première partie du fichier identique, et copieraient la partie restante du fichier.
Scott McClenning du

Réponses:

25

En regardant quelques pages pour rsync:

--append
Cela provoque la mise à jour d'un fichier par rsync en ajoutant des données à la fin du fichier, ce qui suppose que les données qui existent déjà du côté de la réception sont identiques au début du fichier du côté de l'envoi.

--inplace
Cette option modifie la façon dont rsync transfère un fichier lorsque ses données doivent être mises à jour: au lieu de la méthode par défaut de création d'une nouvelle copie du fichier et de sa mise en place lorsqu'elle est terminée, rsync écrit à la place les données mises à jour directement dans la fichier de destination.

--partial
Par défaut, rsync supprimera tout fichier partiellement transféré si le transfert est interrompu. Dans certaines circonstances, il est préférable de conserver les fichiers partiellement transférés.

On dirait que si le fichier est très volumineux, vous voudrez l'utiliser --partial --append. ( --appendimplique --inplace) Si ce gros fichier change, supprimez le --appendet rsync vérifiera le début du fichier pour vous assurer qu'il correspond également au fichier source. --inplacepour moi, cela semble dangereux, sauf si vous synchronisez un gros fichier, vous ne voulez pas que rsync crée un nouveau fichier temporaire de la partie de début, continuez le transfert, puis supprimez l'ancien fichier pour mettre le nouveau fichier en place. Le transfert irait plus vite si vous pouviez utiliser le même fichier, sans parler de l'espace disque nécessaire au transfert serait moindre.

De plus, j'ai trouvé à partir d'un point de transfert de fichier entier qu'une copie est plus rapide que rsync. Cependant, si j'avais besoin de mettre à jour un fichier, j'ai eu rsync synchroniser le fichier plus rapidement que de retransférer à nouveau le fichier entier. (comme je l'ai dit plus haut) Rsync devrait pouvoir reprendre à partir d'un cp.

J'espère que ça aide.

Scott McClenning
la source
1
Vous voudrez peut-être jeter un œil à ce rapport de bogue: lists.samba.org/archive/rsync/2012-June/027615.html
Stefan Schmidt
Bon point sur l'utilisation du cp plus rapide par défaut, et rsync pour "réparer" un processus cp cassé! Neat :)
Samuel Lampa