rsync - Transferts de fichiers

Dernière mise à jour : Debian 10.8 / Buster

rsync est un utilitaire de recopie utilisable pour effectuer des sauvegardes simples, incrémentielles, des synchronisations ...

Sommaire

1 - Utilisation en local

1.1 - Installation

Installer rsync à partir des dépôts :

$ sudo aptitude install rsync

1.2 - Principe

$ rsync /source/ /destination/
$ rsync /source /destination

1.3 - Options

$ 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
-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

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

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.

--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

1.4 - Utilisation

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
--progress

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
--ignore-errors : effacement même en cas d'erreurs E/S
--force : suppression des répertoires même non-vides

1.5 - Exemple : Sauvegarde système

$ sudo mount /dev/sdb1 /mnt
$ sudo rsync -aAXHv --delete-excluded --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/home/*"} / /mnt/

1.6 - Exemple : Sauvegarde home

$ sudo mount /dev/sdb2 /mnt
$ sudo rsync -av --delete-excluded --filter={"- Trash/","- lost+found/","- *.tmp","- .thumbnails/"} /home/ /mnt/

2 - Utilisation sur un système distant via ssh

2.1 - Installation

2.2 - Utilisation

$ rsync -avz --delete --ignore-errors --force /home/ user@192.168.0.16:/home/user/backup/