Il arrive très souvent que l’on ait besoin de transférer des fichiers rapidement, d’un serveur à un autre par exemple. Bien sûr, on peut utiliser le FTP mais il y a beaucoup plus rapide et efficace : je vous présente rsync.
Synchronisation distante
rsync (remote synchronization ou “synchronisation distante” en français) est un logiciel libre de synchronisation de fichiers (disponible sous toutes les plateformes) : la synchronisation est unidirectionnelle, c’est-à-dire qu’elle copie les fichiers de la source en direction de la destination.
rsync est donc utilisé pour réaliser des sauvegardes incrémentales ou pour diffuser le contenu d’un répertoire de référence.
Je vous donne ici les deux commandes que j’utilise quotidiennement lors de ma gestion des serveurs.
Copier tous les fichiers d’un répertoire du serveur A dans le répertoire équivalent du serveur B
Premièrement, connectez-vous via SSH à votre serveur A. Voici la commande :
/* Copie tous les fichiers de /home/website/ vers serveur B. */ rsync --ignore-existing --progress /home/movies/*.* matt@serveurB.net:/home/movies/ |
Explications :
--ignore-existingsignifie que si le fichier existe déjà, on ne le remplace pas.--progressmontre la vitesse du transfert et les noms des fichiers transférés.matt@serveurB.netest le nom du login SSH (matt) associé à l’adresse du serveur B (IP ou nom de domaine)./home/website/: répertoire vers lequel copier les fichiers.
En lançant cette commande, je récupère sur le serveur B tous les fichiers qui se trouvent dans le répertoire /home/movies/ du serveur A. Je ne remplace pas les fichiers existants : étant donné que je ne synchronise qu’avec rsync, ce serait inutile.
Copier tous les fichiers et sous-répertoires d’un répertoire (synchronisation récursive) sur le serveur B
/* Copie tous les fichiers et sous-dossiers de /home/series/ sur serveur B. */ rsync --ignore-existing --progress -r /home/series/*.* matt@serveurB.net:/home/series/ |
Explications : -r signifie de manière récursive, c’est-à-dire que tous les fichiers et sous-dossiers du répertoire /home/series/ seront copiés sur le serveur B.
C’est idéal pour sauvegarder les fichiers du site ou les ressources statiques. On lance la commande dans le terminal et hop, on peut aller se faire un café, tout tourne en fond de tâche.
Petit exemple fictif
Allez, juste pour le fun, voici un transfert initié avec rsync entre deux serveurs distants d’à peu près 8 000 kilomètres :
Bref, rsync, ça dépote et c’est une commande extrêmement pratique à l’usage.
Merci Matt pour ce petit tuto.
root@184.82.118.228 :
pwd ?
lol.
J’ai pris une seedbox pour un mois histoire de tester et d’étudier comment ça fonctionnait, c’est pour ça que je n’ai pas flouté l’IP ;-)