Je fais habituellement rsync -n
avant de faire un rsync
réel. La chose est, comment pourrais-je automatiser la deuxième exécution pour réutiliser exactement la liste générée avec --dry-run
?
Je veux dire, si je lance rsync -n
puis j'obtiens une simulation de ce que rsync
ferait, mon idée serait de prendre cette sortie, de la traiter puis de faire en quelque sorte rsync
seulement --include-from
cette sortie, donc la liste complète ne doit être calculée qu'une seule fois.
Si cela n'a même aucun sens, faites-le moi savoir.
Au fait, j'ai tendance à utiliser rsync -hva --progress --stats --delete --exclude-from "$EXCLUDEFILE"
. Si vous avez également une suggestion sur les options que vous utiliseriez, faites-le moi savoir. J'essaie de dupliquer le contenu d'un disque dur externe (qui ne contient que des images, des vidéos et des documents) sur un autre disque dur externe.
Il est certainement possible d'utiliser la liste de fichiers générée lors d'un essai à sec comme fichier inclus. Dans l'idéal, cependant, les lignes supplémentaires en haut et en bas de la sortie d'essai à sec doivent être supprimées.
Exemple de sortie:
sending incremental file list
[LIST OF FILES]
sent 226 bytes received 34 bytes 520.00 bytes/sec
total size is 648,373,274 speedup is 2,493,743.36 (DRY RUN)
Pour supprimer ces lignes, canalisez la sortie rsync
dans head
et dans tail
. Ensuite, enregistrez la sortie traitée dans un fichier include:
rsync --dry-run -avz source/ destination/ | head --lines=-3 | tail --lines=+3 > include.txt
Enfin, dites à rsync
d'utiliser le fichier include généré (en ajoutant des options supplémentaires si vous le souhaitez):
rsync --include-from=include.txt --exclude=* source/ dest/