Présentation
Rsync est un excellent moyen de synchroniser des fichiers entre serveurs ou simplement de déplacer des fichiers entre serveurs sans avoir besoin de FTP. Il connecte deux serveurs via le protocole SSH, permettant le transfert de données entre eux. Le démon rsync, traité plus loin dans cet article, utilise son propre protocole et s'exécute sur un port spécifié. Ci-dessous, nous allons passer en revue les bases; copier entre les serveurs, copier vers/depuis les démons rsync et maintenir les fichiers synchronisés les uns avec les autres sur différents serveurs.
Prérequis
– 2 serveurs Linux sur lesquels rsync est installé.
– Le serveur qui lance le transfert doit pouvoir accéder au port SSH du serveur de réception (ou au port rsync, en cas de connexion à un démon rsync).
– L'utilisateur doit disposer des autorisations pour utiliser rsync (les exemples ci-dessous seront exécutés en tant qu'utilisateur root).
Principes de base de Rsync
Rsync peut pousser des fichiers vers un autre serveur ou extraire des fichiers d'un autre serveur. La différence entre les deux réside dans la syntaxe. Si vous spécifiez d'abord votre fichier local, il lancera un push. Si vous spécifiez d'abord votre hôte distant, il lancera une extraction. Voyons le type exact de syntaxe ci-dessous.
rsync [-options] SOURCE [email protected]:DESTINATION
Tirer :
rsync [-options] [email protected]:SOURCE DESTINATION
Les [-options]
sont toutes les différentes options qui peuvent être utilisées. Certains que je vais citer et expliquer dans les exemples ci-dessous. Pour une liste complète de toutes les options, consultez la page du manuel.
SOURCE
représente le /directory/path/to/the/file/or/directory
qui sera copié.
DESTINATION
représente le /directory/path/to/the/new/location
sur l'hôte de réception.
Le [email protected]
est l'utilisateur sur l'hôte distant avec lequel rsync se connecte.
x.x.x.x
représente l'adresse IP de l'hôte distant. Il peut également s'agir d'un nom d'hôte si vous avez configuré DNS.
Maintenant, disons que vous devez spécifier un port en dehors du port par défaut 22 pour que rsync se connecte. Vous feriez cela avec l'option -e
. Voir l'exemple ci-dessous (remplacez PORT
avec le numéro de port auquel vous devez vous connecter).
Appuyez :
rsync [-other options] -e 'ssh -p PORT' SOURCE [email protected]:DESTINATION
Tirer :
rsync [-other options] -e 'ssh -p PORT' [email protected]:SOURCE DESTINATION
Exemples simples de transfert de fichiers
Tout d'abord, nous allons initier un push d'un fichier .txt d'un serveur à un autre.
rsync /home/simple.txt [email protected]:/home
Cette commande copiera le fichier simple.txt
depuis notre serveur local vers le /home
de notre serveur distant répertoire.
Transfert Rsync entre deux serveurs.
A droite, on a fait un ls
avant le rsync, puis à nouveau après son exécution, afin que nous puissions voir que le fichier a été copié.
Voici un exemple d'extraction :
rsync [email protected]:/home/pullme.txt /home
Le fichier pullme.txt
est sur le serveur distant (x.x.x.x) dans le /home
annuaire. Cette commande copiera le fichier dans le /home
du serveur local répertoire.
Vous pouvez pousser/extraire n'importe quel fichier unique que vous spécifiez en utilisant cette méthode. Passons maintenant aux répertoires.
Transfert de fichiers de répertoire
Déplacer un répertoire est simple. Ajoutez le -d
option, et il ne déplacera que le répertoire. Si vous souhaitez déplacer le répertoire et son contenu, utilisez -r
au lieu de copier de manière récursive tous les fichiers et sous-dossiers. Tant qu'on y est, abordons le -t
option. Cette option copiera la date et l'heure de la dernière modification du fichier. Utilisation de -t
est utile pour conserver des enregistrements précis de la dernière modification d'un fichier. Ces options fonctionneront en poussant ou en tirant.
Dans l'exemple ci-dessous, j'ai déplacé le pullme.txt
fichier dans un /transfer_me
annuaire. J'ai également créé le répertoire /simple
(qui contient le fichier simple.txt
) dans /transfer_me
. J'ai ensuite poussé le /transfer_me
répertoire vers le serveur distant.
rsync -rt /home/transfer_me [email protected]:/home
Répertoire Rsync
Comme vous pouvez le voir, le dossier sur le serveur distant (récepteur) contient tous les sous-répertoires et fichiers que le dossier local a créés sur le serveur initiateur.
Connexion à un démon Rsync
Cette section nécessite un serveur exécutant un démon rsync. Pour tester ces instructions, consultez notre article sur la configuration d'un démon rsync.
Maintenant que nous avons passé en revue le transfert de base de fichiers/répertoires avec rsync, nous pouvons passer à la connexion à un démon rsync. Un démon rsync s'exécute en permanence sur un serveur, vous pouvez donc pousser et/ou tirer du répertoire du démon rsync attribué à ce serveur à tout moment. Il existe deux formats pour tirer et pousser vers un démon rsync.
Tirer :
rsync [-options] rsync://[email protected][:PORT]SOURCE DESTINATION
Tirez (notez les deux-points après l'adresse IP/le nom d'hôte) :
rsync [-options] [email protected]::SOURCE DESTINATION
Appuyez :
rsync [-options] SOURCE rsync://[email protected][:PORT]DESTINATION
Appuyez (notez les doubles-points après l'adresse IP/le nom d'hôte) :
rsync [-options] SOURCE [email protected]::DESTINATION
Voir ci-dessous comment j'ai tiré du démon rsync (l'utilisation du numéro de port 873 ci-dessous est redondante, car c'est le port de connexion du démon rsync par défaut - je l'inclus pour montrer comment vous formateriez la commande si vous aviez configuré un port non par défaut sur votre démon rsync) :
rsync -rt rsync://[email protected]:873/files/ /home/pulledfromdaemon
Extraction du démon Rsync
Ici, files
est le nom du module. Puisque nous récupérons tout dans ce répertoire (pullme.txt
et simple.txt
) nous le laissons simplement au nom du module pour la source.
Synchroniser des fichiers avec Rsync
Nous allons maintenant discuter de la façon de synchroniser les fichiers. Vous pouvez effectuer une synchronisation avec une seule commande rsync, avec les bonnes options. Vous pouvez placer cette commande dans un script ou une tâche cron pour qu'elle s'exécute à la demande ou automatiquement. La commande varie selon que vous poussez, tirez ou utilisez le démon, mais les options restent les mêmes.
rsync -rtu --delete SOURCE [email protected]:/DESTINATION
Dans cet exemple, faites attention au -rtu --delete
options. Nous avons déjà parlé du -r
et -t
options–copie récursive et copie d'horodatage. Le -u
l'option indique à rsync de mettre à jour uniquement les fichiers différents/modifiés/ajoutés à partir de la SOURCE
à la DESTINATION
. L'option --delete
supprimera tous les fichiers de la DESTINATION
que la SOURCE
peut ne plus avoir. Avec ceci (et d'autres options, comme -l
pour les liens symboliques), vous pouvez maintenir à jour les répertoires de plusieurs emplacements avec la source.
Vous pouvez désormais rsynchroniser les fichiers entre les serveurs, les démons rsync et garder les fichiers synchronisés les uns avec les autres en toute simplicité. Merci d'avoir suivi ce guide ! Veuillez revenir ici pour plus de mises à jour ou jeter un œil aux nombreux services que nous proposons, y compris l'hébergement VPS.
En savoir plus sur nos services d'hébergement VPS et nos serveurs privés virtuels.