Tout d’abord, en ce qui concerne la partie "CV" de votre question, --partialindique simplement à la partie destinataire de conserver les fichiers partiellement transférés si la partie envoyée disparaît comme si ceux-ci étaient complètement transférés.
Lors du transfert de fichiers, ils sont temporairement enregistrés en tant que fichiers masqués dans leurs dossiers cibles (par exemple .TheFileYouAreSending.lRWzDC) ou dans un dossier spécifiquement choisi si vous définissez le --partial-dircommutateur. Lorsqu'un transfert échoue et --partialn'est pas défini, ce fichier caché restera dans le dossier cible sous ce nom cryptique, mais s'il --partialest défini, le fichier sera renommé en nom de fichier cible réel (dans ce cas, TheFileYouAreSending), même si le fichier n'est pas complet. Le fait est que vous pouvez terminer le transfert ultérieurement en exécutant à nouveau rsync avec --appendou --append-verify.
Donc, --partialne reprend pas lui-même un transfert échoué ou annulé. Pour le reprendre, vous devrez utiliser l'un des indicateurs susmentionnés lors de la prochaine exécution. Donc, si vous devez vous assurer que la cible ne contiendra jamais de fichiers qui semblent être corrects mais qui sont en réalité incomplets, vous ne devriez pas les utiliser --partial. Inversement, si vous voulez vous assurer de ne jamais laisser de fichiers égarés perdus et cachés dans le répertoire cible, et si vous savez que vous pourrez terminer le transfert ultérieurement, --partialvous pouvez vous aider.
En ce qui concerne le --appendcommutateur mentionné ci-dessus, il s'agit du commutateur "resume", que vous pouvez utiliser, que vous l'utilisiez ou non --partial. En fait, lorsque vous utilisez --append, aucun fichier temporaire n'est créé. Les fichiers sont écrits directement dans leurs cibles. À cet égard, --appenddonne le même résultat que --partialsur un transfert ayant échoué, mais sans créer ces fichiers temporaires masqués.
Donc, pour résumer, si vous déplacez des fichiers volumineux et que vous souhaitez avoir la possibilité de reprendre une opération rsync annulée ou ayant échoué à partir du point exact qui rsyncs'est arrêté, vous devez utiliser la touche --appendou pour --append-verifyactiver la prochaine tentative.
Comme @Alex le souligne ci-dessous, depuis la version 3.0.0 a rsyncmaintenant une nouvelle option --append-verify, qui se comporte comme --appendauparavant. Vous voulez probablement toujours le comportement de --append-verify, alors vérifiez votre version avec rsync --version. Si vous êtes sur un Mac et ne pas utiliser rsyncde homebrew, vous (au moins jusqu'au El Capitan) une version plus ancienne et la nécessité d'utiliser --appendplutôt que --append-verify. Pourquoi ils n'ont pas gardé ce comportement --appendet nommé le nouveau venu --append-no-verifyest un peu déroutant. De toute façon, --appendsur rsyncavant la version 3 est le même que --append-verifysur les versions plus récentes.
--append-verifyn'est pas dangereux: il lira et comparera toujours les données aux deux extrémités et ne supposera pas qu'elles sont égales. Pour ce faire, elle utilise des sommes de contrôle, ce qui facilite les choses sur le réseau, mais nécessite la lecture de la quantité de données partagée aux deux extrémités du câble avant de pouvoir reprendre le transfert en ajoutant à la cible.
Deuxièmement, vous avez dit "avoir entendu dire que rsync était capable de trouver des différences entre la source et la destination, et donc de simplement copier les différences".
C'est exact, et cela s'appelle le transfert delta, mais c'est une chose différente. Pour l'activer, vous ajoutez le -c, ou --checksumbasculez. Une fois ce commutateur utilisé, rsync examinera les fichiers existant aux deux extrémités du fil. Cela se fait par morceaux, compare les sommes de contrôle des deux côtés et, si elles diffèrent, ne transfère que les parties différentes du fichier. Mais, comme @Jonathan le souligne ci-dessous, la comparaison n'est effectuée que lorsque les fichiers ont la même taille aux deux extrémités - des tailles différentes obligeront rsync à télécharger l'intégralité du fichier, en remplaçant la cible par le même nom.
Cela nécessite un peu de calcul aux deux extrémités, mais peut s'avérer extrêmement efficace pour réduire la charge du réseau si, par exemple, vous sauvegardez fréquemment des fichiers très volumineux, des fichiers de taille fixe contenant souvent des modifications mineures. Les exemples qui me viennent à l’esprit sont les fichiers d’image de disque dur virtuel utilisés dans des machines virtuelles ou des cibles iSCSI.
Il est à noter que si vous utilisez --checksumpour transférer un lot de fichiers complètement nouveaux sur le système cible, rsync calculera toujours leurs sommes de contrôle sur le système source avant de les transférer. Pourquoi je ne sais pas :)
Donc, en bref:
Si vous utilisez souvent rsync juste « passer des choses de A à B » et que vous voulez la possibilité d'annuler cette opération et reprendre plus tard, ne pas utiliser --checksum, mais n'utiliser .--append-verify
Si vous utilisez souvent rsync pour sauvegarder des --append-verifyfichiers , leur utilisation ne vous aidera probablement pas beaucoup, sauf si vous avez l'habitude d'envoyer de gros fichiers dont la taille ne cesse de croître, mais qui sont rarement modifiés une fois écrits. En prime, si vous sauvegardez sur un stockage prenant en charge les instantanés tels que btrfsou zfs, l'ajout du --inplacecommutateur vous aidera à réduire la taille des instantanés, car les fichiers modifiés ne sont pas recréés, mais les blocs modifiés sont écrits directement par-dessus les anciens. Ce commutateur est également utile si vous souhaitez éviter que rsync ne crée des copies de fichiers sur la cible lorsque des modifications mineures ont eu lieu.
Lors de l'utilisation --append-verify, rsync se comportera comme il le fait toujours pour tous les fichiers de même taille. S'ils diffèrent par la modification ou d'autres horodatages, la cible sera remplacée par la source sans examiner ces fichiers plus à fond. --checksumcomparera le contenu (sommes de contrôle) de chaque paire de fichiers de nom et de taille identiques.
MIS À JOUR 2015-09-01 Modifié pour refléter les remarques de @Alex (merci!)
MIS À JOUR 2017-07-14 Modifié pour refléter les remarques de @Jonathan (merci!)