Rsync

De Wiki doc

Révision datée du 20 décembre 2020 à 18:25 par Ycharbi (discussion | contributions) (Changement de catégorie.)

Rsync est un outil de synchronisation de fichiers unidirectionnel (à l'inverse de Unison). Il comporte un grand nombre d'options et peut exploiter SSH afin de d'agir sur deux machines au travers du réseau.

INFORMATION

On entend par unidirectionnel le fait que le delta entre deux fichiers soit toujours comparé de la source à la destination et non l'inverse (ce sera toujours la destination qui se ferra écraser - pas de notion de date).

Installation

Rsync est un outil développé en Python disponible dans la plupart des distributions Linux. Sous Debian, on peut l'obtenir via Apt.

apt install rsync

Utilisation

ATTENTION

Comme de nombreux outils de transferts, les répertoires ne sont pas géré de la même façon si un / a été précisé ou non. Par exemple, un transfert via Rsync du répertoire DOSSIER-SOURCE vers DOSSIER-DESTINIATION créera ce dernier avec le contenu du premier alors qu'un DOSSIER-SOURCE/ copiera son contenu dans la destination (ce sera l'équivalent d'un cp DOSSIER-SOURCE/* DOSSIER-DESTINATION en somme).

Basique

Dans son plus simple emploi, Rsync s'utilise comme la commande cp.

rsync DOSSIER/SOURCE DOSSIER/DESTINATION

Utilisation

Il est possible d'ajouter un ensemble de paramètres à l'outil afin de répondre à des besoins spécifiques.

Maintient des permissions sources

rsync -a SOURCE DESTINATION

Maintient des permissions de destination

rsync -a -A --no-perms --no-owner --no-group SOURCE DESTINATION

Transfert via SSH

rsync -a SOURCE utilisateur@DESTINATION

Transfert via relay SSH

La'usage d'un relay SSH est utile si la machine est inaccessible directement (NAT, pare-feux, clé SSH...).

rsync -a -e "ssh -J utilisateur@IPRELAI:PORT" SOURCE utilisateur@IP/DESTINATION

Compression

rsync -z SOURCE DESTINATION

Verbosité

rsync -v --progress SOURCE DESTINATION

Statistiques

rsync --stats SOURCE DESTINATION

Usage fréquent

Voici la commande que j'utilise souvent pour transférer des fichiers dans mon réseau local.

rsync -av --progress SOURCE utilisateur@IP/DESTINATION

Source