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

04 juin 2014

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

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

A bientôt !

Par
Créateur et administrateur.

Dans la même catégorie

Formater un tableau pour CURLOPT_POSTFIELDS
Email avec pièce jointe en PHP
PHP : modifier les attributs privés d'un objet
Tester l'existence d'un fichier dans l'include path
Convertir récursivement un objet PHP en tableau
PHP : formater un tableau en CSV
Comment envoyer un mail en ligne de commande ?
Exécuter un code PHP en ligne de commande
Doctrine 2 : générer les classes PHP depuis la base de données
Comment catcher les erreurs en PHP ?
Doctrine 2 : comment afficher la requête SQL ?
Comment construire une URL sans caractères spéciaux en PHP ?
Comment lister les fichiers PHP inclus sur ma page ?
Les fonctions anonymes récursives en PHP
Requête HTTP asynchrone en PHP
La résolution statique à la volée ou Late Static Bindings
Trouver les jours fériés français en PHP
Comment allumer son ordinateur à distance en PHP ?
Comment utiliser la balise meta viewport ?
Une version mobile de mon site avec le Zend Framework
Doctrine et le Zend Framework : Présentation, intégration et utilisation
Créer son flux RSS simplement avec Zend_Feed
Appliquer un layout sur un mail avec le Zend Framework
Comment lancer une requête multi-bases avec les fonctions MySQL ?
Implode / Explode : Du tableau à la chaine de caractères, de la chaine de caractères au tableau

Commentaire(s)