[gull] rsync, attention a l'option -t

Frédéric Dumas f.dumas at ellis.siteparc.fr
Sun Jan 30 17:03:13 CET 2022


Bonjour,

plutôt que cp, j’ai utilisé rsync -rv pour un réaliser un backup audio et vidéo de ~2To vers un disque externe. Seul le contenu m’intéressait, je n’ai donc pas préservé les propriétaires ni les permissions avec l’option -a.

Attention cependant. Il faut penser alors à ajouter l’option -t (qui est normalement implicite quand on utilise -a), sinon les fichiers sont copiés sur la cible avec la date du jour, et non la date de dernière modification qu’ils possèdent sur la source. J’avais d’abord pensé que ça n’avait pas d’importance dans mon cas, puisque seul le contenu m’était utile.

Mais l’importance existe pour rsync lui-même. Si les dates de dernières modification ne concordent pas sur la source et la cible, à la prochaine sauvegarde incrémentale, rsync -rv --del va considérer tous les fichiers comme ayant été modifiés. rsync recopiera alors la totalité des 2To fichier par fichier (pour lui tout a changé), et il n’y aura plus rien d’incrémental.

Si on se trouve confronté à ce problème, il est possible de débrayer la vérification sur horodatage, pour que rsync se contente de vérifier la concordance de taille, pour juger si un fichier a changé ou non. Mais c’est dommage d’affaiblir ainsi la fiabilité du backup.

Dans mon cas, j’ai juste relancé une nouvelle sauvegarde avec rsync -rvt --del vers la même cible, et elle a écrasé en totalité la première. Ce n’est pas élégant, mais maintenant les dates concordent et la prochaine sauvegarde sera incrémentale.


Un ami m’a donné le conseil suivant, que je n’ai pas suivi mais que je partage avec vous: avant d’ordonner la sauvegarde incrémentale avec rsync -rv --del, il m’aurait été possible de rectifier d'abord les dates sur le volume cible, grâce à find associé à touch:


find . -type f -exec touch -m -r {} ../cible/{} \;


où le répertoire courant « . » est la racine de la source et ../cible/ est le point de montage de la cible. find va alors parcourir tous les fichiers sous le répertoire courant, et touch va appliquer dans l'arborescence sous "../cible/" la date de modification (-m) qui correspond au fichier correspondant dans le répertoire courant.


À vérifier d’abord avec un test à blanc me dit mon ami:

find . -type f -exec echo touch -m -r {} ../cible/{} \;


Si ça peut être utile à quelqu’un ici.


--
Frédéric Dumas
f.dumas at ellis.siteparc.fr







More information about the gull mailing list