Dernière mise à jour : Debian 10.8 / Buster
rsync est un utilitaire de recopie utilisable pour effectuer des sauvegardes simples, incrémentielles, des synchronisations ...
En cas d'interruption en cours d'exécution, rsync peut-être relancé, les transferts reprennent à partir du point d'avancement
La recopie peut s'effectuer en local ou sur un système distant
Sommaire
Installer rsync à partir des dépôts :
$ sudo aptitude install rsync
$ rsync /source/ /destination/
Si l'on souhaite que le répertoire "source" soit créé dans le répertoire "destination", remplacer /source/ par /source
$ rsync /source /destination
$ rsync -rt /source/ /destination/
$ rsync -av /source/ /destination/
La signification des options est la suivante :
-av = -rlptgoDv
-r : recopie récursive dossiers, sous-dossiers, etc....
-l : préservation des liens symboliques
-p : préservation des permissions
-t : préservation des dates
-g : préservation des groupes
-o : propriétaire du fichier de destination identique à celui du fichier source
-D : préservation des périphériques
-v : verbeux
Options supplémentaires pour la conservation des attributs, utiles pour la copie des fichiers systèmes linux
-A, --acls preserve ACLs (implies -p) -X, --xattr preserve extended attributes
-H --hard-links preserve hard links
-S --sparse turn sequences of nulls into sparse blocks
Filtres
L'option --filter permet d'indiquer les répertoires ou fichiers à ne pas recopier à partir de motifs
--filter={"- *.iso","- *.vdi","- .Trash/","- lost+found/","- *.tmp","- .thumbnails/"}
Note : A l'intérieur de {...}, aucun espace n'est autorisé entre les motifs
Exclusions
L'option --exclude permet d'indiquer des répertoires à ne pas copier.
--exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/home/*"}
Les répertoires exclus sont créés mais vides (pour ne pas les créer, supprimer /*)
Attention, le chemin des répertoires à exclure est relatif à la source. En tenir compte, si la source n'est pas la racine, /home par exemple.
A l'intérieur de {...}, aucun espace n'est autorisé entre les répertoires. S'il y a un seul répertoire ou fichier dans la liste, mettre une virgule avant la parenthèse de fermeture.
Suppression, dans la destination, des fichiers qui n'existent pas (ou plus) dans la source
--delete : suppression des fichiers de "destination" qui n'existent plus dans la "source"
Remplacer --delete par
--delete-excluded : suppression des fichiers de "destination" exclus par --filter ou --exclude
La syntaxe de rsync étant particulière et "pointue", il est prudent de simuler l'action d'une commande avant de l'exécuter avec l'option
--dry-run
Suivi de l'avancement
--progress
Synchronisation
La commande rsync effectue la recopie dans le cache d'Entrées / Sorties et se termine donc généralement avant la fin de la recopie physique sur le media. Celui-ci ne doit donc pas être retiré (cas d'une clé USB) avant la fin de la synchronisation. Pour être averti de cette fin, rajouter la commande sync après la commande rsync, par exemple
$ rsync -av /source/ /destination/ ; sync
A utiliser en cas d'erreurs (?)
--ignore-errors : effacement même en cas d'erreurs E/S
--force : suppression des répertoires même non-vides
Sauvegarde système (répertoire /), sur un périphérique de stockage (/dev/sdb1), monté en /mnt :
$ sudo mount /dev/sdb1 /mnt
$ sudo rsync -aAXHv --delete-excluded --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/home/*"} / /mnt/
Sauvegarde répertoire /home, sur un périphérique de stockage (dev/sdb2), monté en /mnt :
$ sudo mount /dev/sdb2 /mnt
$ sudo rsync -av --delete-excluded --filter={"- Trash/","- lost+found/","- *.tmp","- .thumbnails/"} /home/ /mnt/
Installer ssh client sur le pc local et ssh serveur sur le pc distant : voir ssh
l'option -z permet de compresser les données
du contenu du répertoire local home
$ rsync -avz --delete --ignore-errors --force /home/ user@192.168.0.16:/home/user/backup/