Rsync (Synchronisation à distance) est la commande la plus couramment utilisée pour copier et synchroniser des fichiers et des répertoires à distance aussi bien que localement dans Linux/Unix systèmes.
Avec l’aide du rsync commande, vous pouvez copier et synchroniser vos données à distance et localement sur des répertoires, des disques et des réseaux, effectuer des sauvegardes de données et miroir entre deux machines Linux.
Cet article explique dix l’utilisation de base et avancée de la rsync commande pour transférer vos fichiers à distance et localement dans Basé sur Linux Machines. Vous n’avez pas besoin d’être un racine utilisateur pour exécuter le rsync commander.
Quelques avantages et fonctionnalités de la commande Rsync
- Il copie et synchronise efficacement les fichiers vers ou depuis un système distant.
- Prend en charge la copie de liens, d’appareils, de propriétaires, de groupes et d’autorisations.
- C’est plus rapide que scp (Copie sécurisée) car rsync utilise un protocole de mise à jour à distance qui permet de transférer uniquement les différences entre deux ensembles de fichiers. La première fois, il copie tout le contenu d’un fichier ou d’un répertoire de la source à la destination, mais la prochaine fois, il ne copie que les blocs et octets modifiés vers la destination.
- Rsync consomme moins utilisation de la bande passante car il utilise la méthode de compression et de décompression lors de l’envoi et de la réception de données aux deux extrémités.
La syntaxe de base de la commande rsync
# rsync options source destination
Quelques options courantes utilisées avec les commandes rsync
- -v : verbeux
- -r : copie les données de manière récursive (mais ne conserve pas les horodatages et les autorisations lors du transfert de données.
- -une : mode archive, qui permet de copier des fichiers de manière récursive et préserve également les liens symboliques, les autorisations de fichiers, les propriétés des utilisateurs et des groupes et les horodatages.
- -z : compresser les données du fichier.
- -h : lisibles par l’homme, les nombres de sortie dans un format lisible par l’homme.
[ You might also like: How to Sync Files/Directories Using Rsync with Non-standard SSH Port ]
Installer Rsync dans le système Linux
Nous pouvons installer le rsync package à l’aide de la commande suivante dans votre distribution Linux.
$ sudo apt-get install rsync [On Debian/Ubuntu & Mint] $ pacman -S rsync [On Arch Linux] $ emerge sys-apps/rsync [On Gentoo] $ sudo dnf install rsync [On Fedora/CentOS/RHEL and Rocky Linux/AlmaLinux] $ sudo zypper install rsync [On openSUSE]
1. Copiez/synchronisez les fichiers et le répertoire localement
Copier/synchroniser un fichier sur un ordinateur local
La commande suivante synchronisera un seul fichier sur une machine locale d’un emplacement à un autre. Ici dans cet exemple, un nom de fichier backup.tar doit être copié ou synchronisé sur /tmp/sauvegardes/ dossier.
[[email protected]]# rsync -zvh backup.tar.gz /tmp/backups/ created directory /tmp/backups backup.tar.gz sent 224.54K bytes received 70 bytes 449.21K bytes/sec total size is 224.40K speedup is 1.00
Dans l’exemple ci-dessus, vous pouvez voir que si la destination n’existe pas déjà, rsync créera automatiquement un répertoire pour la destination.
Copier/synchroniser un répertoire sur un ordinateur local
La commande suivante transférera ou synchronisera tous les fichiers d’un répertoire vers un autre répertoire sur la même machine. Ici dans cet exemple, /root/rpmpkgs contient des fichiers de package rpm et vous souhaitez que ce répertoire soit copié à l’intérieur /tmp/sauvegardes/ dossier.
[[email protected]]# rsync -avzh /root/rpmpkgs /tmp/backups/ sending incremental file list rpmpkgs/ rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm sent 3.47M bytes received 96 bytes 2.32M bytes/sec total size is 3.74M speedup is 1.08
2. Copier/synchroniser des fichiers et un répertoire vers ou depuis un serveur
Copier un répertoire d’un serveur local vers un serveur distant
Cette commande synchronisera un répertoire d’une machine locale vers une machine distante. Par exemple, il y a un dossier sur votre ordinateur local « rpmpkgs » qui contient quelques RPM packages et que vous souhaitez que le contenu de ce répertoire local soit envoyé à un serveur distant, vous pouvez utiliser la commande suivante.
[[email protected]:~]# rsync -avzh /root/rpmpkgs [email protected]:/root/ The authenticity of host '192.168.0.141 (192.168.0.141)' can't be established. ED25519 key fingerprint is SHA256:bH2tiWQn4S5o6qmZhmtXcBROV5TU5H4t2C42QDEMx1c. This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '192.168.0.141' (ED25519) to the list of known hosts. [email protected]'s password: sending incremental file list rpmpkgs/ rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm sent 3.74M bytes received 96 bytes 439.88K bytes/sec total size is 3.74M speedup is 1.00
Copier/synchroniser un répertoire distant sur une machine locale
Cette commande vous aidera à synchroniser un répertoire distant avec un répertoire local. Ici dans cet exemple, un répertoire /root/rpmpkgs qui se trouve sur un serveur distant est en cours de copie sur votre ordinateur local dans /tmp/myrpms.
[[email protected]:~]# rsync -avzh [email protected]:/root/rpmpkgs /tmp/myrpms [email protected]'s password: receiving incremental file list created directory /tmp/myrpms rpmpkgs/ rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm sent 104 bytes received 3.49M bytes 997.68K bytes/sec total size is 3.74M speedup is 1.07
3. Rsync sur SSH
Avec rsync, on peut utiliser SSH (Enveloppe de protection) pour le transfert de données, en utilisant SSH protocole lors du transfert de nos données, vous pouvez être assuré que vos données sont transférées dans une connexion sécurisée avec cryptage afin que personne ne puisse lire vos données pendant qu’elles sont transférées par fil sur Internet.
[ You might also like: How to Secure and Harden OpenSSH Server ]
Aussi lorsque nous utilisons rsync nous devons fournir le utilisateur/racine mot de passe pour accomplir cette tâche particulière, donc en utilisant le SSH option enverra vos identifiants de manière cryptée afin que votre le mot de passe sera en sécurité.
Copier un fichier d’un serveur distant vers un serveur local avec SSH
Pour spécifier un protocole avec rsync vous devez donner le « -e” avec le nom du protocole que vous souhaitez utiliser. Ici, dans cet exemple, nous utiliserons le « ssh » avec le « -e” et effectuez le transfert de données.
[[email protected]:~]# rsync -avzhe ssh [email protected]:/root/anaconda-ks.cfg /tmp [email protected]'s password: receiving incremental file list anaconda-ks.cfg sent 43 bytes received 1.10K bytes 325.43 bytes/sec total size is 1.90K speedup is 1.67
Copier un fichier d’un serveur local vers un serveur distant avec SSH
[[email protected]:~]# rsync -avzhe ssh backup.tar.gz [email protected]:/backups/ [email protected]'s password: sending incremental file list created directory /backups backup.tar.gz sent 224.59K bytes received 66 bytes 64.19K bytes/sec total size is 224.40K speedup is 1.00
[ You might also like: How to Use Rsync to Sync New or Changed/Modified Files in Linux ]
4. Afficher la progression lors du transfert de données avec rsync
Pour afficher la progression lors du transfert des données d’une machine à une autre, nous pouvons utiliser le ‘-le progrès’ option. Il affiche les fichiers et le temps restant pour terminer le transfert.
[[email protected]:/]# rsync -avzhe ssh --progress /root/rpmpkgs [email protected]:/root/rpmpkgs [email protected]'s password: sending incremental file list rpmpkgs/ rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm 1.47M 100% 31.80MB/s 0:00:00 (xfr#1, to-chk=3/5) rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm 138.01K 100% 2.69MB/s 0:00:00 (xfr#2, to-chk=2/5) rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm 2.01M 100% 18.45MB/s 0:00:00 (xfr#3, to-chk=1/5) rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm 120.48K 100% 1.04MB/s 0:00:00 (xfr#4, to-chk=0/5) sent 3.74M bytes received 96 bytes 1.50M bytes/sec total size is 3.74M speedup is 1.00
5. Utilisation des options –inclure et –exclure
Ces deux options nous permettent de comprendre et exclure fichiers en spécifiant des paramètres avec ces options nous aide à spécifier les fichiers ou répertoires que vous souhaitez inclure dans votre synchronisation et exclure les fichiers et dossiers avec lesquels vous ne souhaitez pas être transférés.
Ici, dans cet exemple, la commande rsync inclura uniquement les fichiers et le répertoire commençant par ‘R‘ et excluez tous les autres fichiers et répertoires.
[[email protected]:/]# rsync -avze ssh --include 'R*' --exclude '*' [email protected]:/var/lib/rpm/ /root/rpm [email protected]'s password: receiving incremental file list created directory /root/rpm ./ Requirename sent 61 bytes received 273,074 bytes 60,696.67 bytes/sec total size is 761,856 speedup is 2.79
6. Utilisation de l’option –supprimer
Si un fichier ou un répertoire n’existe pas à la source, mais existe déjà à la destination, vous souhaiterez peut-être supprimer ce fichier/répertoire existant sur la cible lors de la synchronisation.
Nous pouvons utiliser le ‘-effacer‘ option pour supprimer les fichiers qui ne se trouvent pas dans le répertoire source.
La source et la cible sont synchronisées. Créez maintenant un nouveau fichier test.txt à la cible.
[[email protected]:~]# cd /root/rpm/ [[email protected]:~/rpm]# touch test.txt [[email protected]:~/rpm]# rsync -avz --delete [email protected]:/var/lib/rpm/ /root/rpm/ [email protected]'s password: receiving incremental file list deleting test.txt ./ .dbenv.lock .rpm.lock Basenames Conflictname Dirnames Enhancename Filetriggername Group Installtid Name Obsoletename Packages Providename Sha1header Sigmd5 Suggestname Supplementname Transfiletriggername Triggername __db.001 __db.002 __db.003 sent 445 bytes received 18,543,954 bytes 2,472,586.53 bytes/sec total size is 71,151,616 speedup is 3.84
La cible a le nouveau fichier appelé test.txt, lors de la synchronisation avec la source avec le ‘-effacer‘, il a supprimé le fichier test.txt.
7. Définir la taille maximale des fichiers à transférer
Vous pouvez spécifier le Max taille du fichier à transférer ou à synchroniser. Vous pouvez le faire avec le « -taille max” option. Ici, dans cet exemple, la taille maximale du fichier est 200k, donc cette commande ne transférera que les fichiers qui sont égaux ou inférieurs à 200k.
[[email protected]:~]# rsync -avzhe ssh --max-size="200k" /var/lib/rpm/ [email protected]:/root/tmprpm [email protected]'s password: sending incremental file list created directory /root/tmprpm ./ .dbenv.lock .rpm.lock Conflictname Enhancename Filetriggername Group Installtid Name Obsoletename Recommendname Requirename Sha1header Sigmd5 Suggestname Supplementname Transfiletriggername Triggername __db.002 sent 129.52K bytes received 396 bytes 28.87K bytes/sec total size is 71.15M speedup is 547.66
8. Supprimer automatiquement les fichiers source après un transfert réussi
Maintenant, supposons que vous ayez le serveur Web principal et un serveur de sauvegarde de données, vous avez créé une sauvegarde quotidienne et l’avez synchronisée avec votre serveur de sauvegarde, maintenant vous ne voulez pas conserver cette copie locale de sauvegarde sur votre serveur Web.
Alors, allez-vous attendre la fin du transfert, puis supprimer ce fichier de sauvegarde local manuellement ? Bien sûr que non. Cette suppression automatique peut se faire à l’aide du ‘–remove-source-files‘option.
[[email protected]:~]# rsync --remove-source-files -zvh backup.tar.gz [email protected]:/tmp/backups/ [email protected]'s password: backup.tar.gz sent 795 bytes received 2.33K bytes 894.29 bytes/sec total size is 267.30K speedup is 85.40 [[email protected]:~]# ls -l backup.tar.gz ls: cannot access 'backup.tar.gz': No such file or directory
9. Faites un essai avec rsync
Si vous êtes un débutant utilisant rsync et que vous ne savez pas exactement ce que votre commande va faire. Rsync pourrait vraiment gâcher les choses dans votre dossier de destination, puis annuler peut être un travail fastidieux.
[ You might also like: How to Sync Two Apache Web Servers/Websites Using Rsync ]
L’utilisation de cette option n’apportera aucune modification aux fichiers et affichera la sortie de la commande, si la sortie montre exactement la même chose que vous voulez faire, vous pouvez supprimer le ‘-à sec‘ à partir de votre commande et exécutez-le sur le terminal.
[[email protected]:~]# rsync --dry-run --remove-source-files -zvh backup.tar.gz [email protected]:/tmp/backups/ [email protected]'s password: backup.tar.gz sent 50 bytes received 19 bytes 19.71 bytes/sec total size is 267.30K speedup is 3,873.97 (DRY RUN)
10. Rsync Définir la limite de bande passante et transférer le fichier
Vous pouvez définir la limite de bande passante lors du transfert de données d’une machine à une autre à l’aide de ‘–wlimit‘option. Cette option nous aide à limiter E/S bande passante.
[[email protected]]# rsync --bwlimit=100 -avzhe ssh /var/lib/rpm/ [email protected]:/root/tmprpm/ [email protected]'s password: sending incremental file list sent 324 bytes received 12 bytes 61.09 bytes/sec total size is 38.08M speedup is 113347.05
De plus, par défaut, rsync synchronise uniquement les blocs et les octets modifiés, si vous souhaitez explicitement synchroniser l’ensemble du fichier, vous utilisez le ‘-W‘ option avec elle.
[[email protected]]# rsync -zvhW backup.tar /tmp/backups/backup.tar backup.tar sent 14.71M bytes received 31 bytes 3.27M bytes/sec total size is 16.18M speedup is 1.10
C’est tout avec rsync maintenant, vous pouvez voir pages de manuel pour plus d’options. Restez connecté avec Tecmint pour des tutoriels plus passionnants et intéressants à l’avenir. Laissez votre commentaires et suggestions.
.