RSYNC : Comment synchroniser des fichiers à travers une connexion ssh ?

Envoyer un fichier sur une machine distante grâce à rsync en SSH ou en mode démon.

Rsync est un logiciel de synchronisation de fichiers entre une ou plusieurs machines. Rsync permet de transférer des fichiers via un protocole de shell distant (rsh, ssh) mais il peut aussi fonctionner en mode client / serveur démon. En mode démon, rsync utilise son protocole natif pour le transfert sur le port TCP 873. En mode direct, ssh est le protocole par défaut pour les versions modernes de rsync.

Utiliser rsync avec ssh

# Transférer le fichier "fichier_ou_dossier_a_transferer" local # vers le dossier "/home/nico" de la machine "machine_distante" rsync -rzhcp fichier_ou_dossier_a_transferer nico@machine_distante:/home/nico; # Options utiles : # --progress : voir l'avancement du transfert # --filter '. rsync_filters.txt' : filtrer certains fichiers ou dossiers # --delete-after : supprime les fichiers après le transfert # -e "ssh -p numero_port" : spécifier un port si la connexion ssh de la machine distante n'est pas sur le port 22 # -r : récursif # -z : compression des données # -c : utilise la somme de contrôle (checksum), pas la date ni la taille # -p : préserve les permissions sur les fichiers

Pour faire fonctionner rsync en mode démon, il faut d'abord créer son fichier de configuration : rsyncd.conf.

Configuration du démon rsync

cat /etc/rsyncd.conf uid = nico gid = nico [nicohome] path = /home/nico comment = Synchronisation du dossier home read only = false

Lancement du démon rsync

rsync --daemon # On vérifie que le port rsync est ouvert nmap -p1-65535 localhost Starting Nmap 6.00 ( http://nmap.org ) at 2014-06-04 09:00 CEST Nmap scan report for localhost (127.0.0.1) Host is up (0.0033s latency). Other addresses for localhost (not scanned): 127.0.0.1 Not shown: 65521 closed ports PORT STATE SERVICE 873/tcp open rsync

La commande pour le transfert est pratiquement la même que précédemment. Il faut remplacer la syntaxe utilisateur@machine:repertoire par utilisateur@machine::aire_definie_dans_la_conf.

Synchronisation de fichier avec le démon rsync

rsync -rzhcp fichier_ou_dossier_a_transferer nico@machine_distante::nicohome

La source et la destination peuvent être locales, en revanche elles ne peuvent pas toutes les deux être distantes dans la même commande.