Utiliser rsync
Syntaxe de base
- Pour copier le répertoire source dans le répertoire destination :
rsync [options] /source /destination
- Pour copier le contenu du répertoire source dans le répertoire destination :
rsync [options] /source/ /destination
- On peut remplacer
/destination
par /destination/
le résultat est le même.
Options
-
L'option -a est l'option d'archivage qui résume les options suivantes : rlptgoD. Ce qui signifie : récursivité sur les répertoires, liens symboliques traités comme tels, permissions, time, groups, owners préservés, devices préservés (Je ne comprends pas cette histoire de devices)
-
On y ajoute classiquement -v pour avoir la liste des fichiers transférés, mais -q (quiet) est à préférer dans le cas de l'appel d'un script par cron.
-
Pour effectuer une sauvegarde incrémentielle, c'est l'option - u (--update) qu'il faut utiliser. Cela force rsync à ignorer les fichiers pour lesquels le fichier de destination existe déjà et avec une date postérieure à la source. En cas d'égalité de date, la mise à jour ne s'effectue que si les tailles sont différentes.
-
Pour que les suppressions soient aussi prises en compte l'option --delete efface tous les fichiers superflus côté réception, mais pas les répertoires. Cette option est potentiellement dangereuse.
-
L'effacement des fichiers superflus peut être fait avant, pendant ou après la synchronisation. Par défaut, --delete correspond à --delete-before ; --del à --delete-during.
-
On peut tester au préalable avec l'option -n (--dry-run) qui dit à rsync de ne rien faire mais de rapporter toutes les actions qu'il aurait faites.
En cas d'erreur
Cependant, rsync est suffisament rusé pour garder un backup des fichiers effacés ou renommés.
-
-b (--backup) renomme les fichiers de destination préexistants, dont le fichier originel a été modifié, en leur ajoutant un suffixe.
-
--suffix modifie le suffixe utilisé, qui est un « ~ » par défaut ou vide dans le cas où on utilise un répertoire pour recueillir les fichiers backupés.
-
--backup-dir=/destination/deleted/ permet de désigner le répertoire utilisé pour ce backup. Il doit être judicieux de vidanger ce répertoire régulièrement, car je soupçonne qu'il grossit rapidement.
rsync -aub --del --suffix .bak --backup-dir=/backup/deleted /source /destination
Dernières astuces
Sources
D’autres notes