GNU/Linux >> Tutoriels Linux >  >> Linux

Comment utiliser Rsync pour copier/synchroniser des fichiers entre des serveurs

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.


Linux
  1. Comment utiliser Rsync pour synchroniser des fichiers nouveaux ou modifiés/modifiés sous Linux

  2. Comment utiliser rsyslog pour créer un serveur d'agrégation de journaux Linux

  3. Comment transférer des fichiers entre serveurs sous Linux à l'aide de SCP et FTP

  4. Comment synchroniser des fichiers entre deux télécommandes ?

  5. Comment copier des répertoires de manière récursive à l'aide de rsync tout en excluant des fichiers spécifiques

Comment utiliser la commande rsync pour copier des données localement et via SSH

Comment synchroniser automatiquement des fichiers entre deux serveurs Linux

Comment synchroniser automatiquement deux serveurs Web sous Linux

Comment utiliser FTP pour déplacer des fichiers entre votre ordinateur et votre appareil Android

Comment utiliser Docker Cp pour copier des fichiers entre l'hôte et les conteneurs

Utiliser NTP pour synchroniser l'heure