GNU/Linux >> Tutoriels Linux >  >> Linux

17 exemples de commande rsync (synchronisation à distance) utiles sous Linux

Comme son nom l'indique, la commande rsync est utilisée pour synchroniser (ou copier) des fichiers et des répertoires localement et à distance. L'une des caractéristiques importantes de rsync est qu'il fonctionne sur "l'algorithme de transfert delta ”, signifie qu'il synchronisera ou copiera uniquement les modifications de la source à la destination au lieu de copier l'intégralité du fichier, ce qui réduira finalement la quantité de données envoyées sur le réseau. Les geeks Linux utilisent généralement la commande rsync pour gérer les activités quotidiennes de sauvegarde, de mise en miroir et de restauration. Il utilise un shell distant comme SSH lors de la synchronisation des fichiers d'une machine locale à une machine distante et tout utilisateur du système peut utiliser la commande rsync car il ne nécessite pas de privilèges root ou sudo..

Dans cet article, nous discuterons de 17 exemples de commandes rsync utiles sous Linux, ces exemples aideront spécialement les débutants Linux à gérer plus efficacement leurs tâches de synchronisation, de mise en miroir et de sauvegarde.

La commande Rsync est disponible pour tous les systèmes d'exploitation UNIX et Linux. Lorsque nous effectuons une installation minimale de CentOS &RHEL OS, le package rsync ne fait pas partie de l'installation par défaut, donc pour installer rsync sur CentOS &RHEL, exécutez la commande under yum

~]# yum install rsync -y

Dans les systèmes d'exploitation similaires à Debian (Ubuntu et Linux Mint), utilisez la commande apt ci-dessous pour installer l'outil rysnc,

~]# apt install rsync -y

Syntaxe de la commande rsync :

Synchronisation locale :# rsync {options} {Source} {Destination}

Extraction de la synchronisation à distance :# rsync {options}  @ : 

Push de synchronisation à distance :# rsync       @ :

Certaines des options couramment utilisées dans la commande rsync sont répertoriées ci-dessous :

  • -v, –verbose                             Sortie détaillée
  • -q, –quiet                                 supprimer la sortie des messages
  • -a, –archive                             archiver les fichiers et le répertoire lors de la synchronisation ( -a égal aux options suivantes -rlptgoD)
  • -r, –recursive                           synchronise les fichiers et les répertoires de manière récursive
  • -b, –backup                             prend la sauvegarde pendant la synchronisation
  • -u, –update                             ne copie pas les fichiers de la source vers la destination si les fichiers de destination sont plus récents
  • -l, –links                                  copier les liens symboliques en tant que liens symboliques pendant la synchronisation
  • -n, –dry-run                            effectuer un essai sans synchronisation
  • -e, –rsh=COMMAND            mentionner le shell distant à utiliser dans rsync
  • -z, –compress                          compresse les données du fichier pendant le transfert
  • -h, –human-readable            affiche les numéros de sortie dans un format lisible par l'homme
  • –progress                                affiche la progression de la synchronisation pendant le transfert

Passons aux exemples utiles de la commande rsync

Exemple :1) Copier ou synchroniser des fichiers localement (rsync -zvh)

Supposons que nous voulions copier un fichier du répertoire personnel de l'utilisateur de pkumar vers le dossier /opt/back, exécutez la commande rsync ci-dessous

[[email protected] ~]# rsync -zvh /home/pkumar/OpenStack-Networking.pdf /opt/backupOpenStack-Networking.pdfsent 4,09 M octets   reçus 35 octets   2,73 M octets/secla taille totale est de 6,15 M l'accélération est de 1,50 [[email protected] ~]#

Ci-dessus, nous avons utilisé des options telles que -z pour la compression, -v pour une sortie détaillée et -h pour une sortie lisible par l'homme.

Exemple :2) Copier ou synchroniser le répertoire localement (rsync -zavh)

Supposons que nous voulions copier ou synchroniser le répertoire personnel de l'utilisateur de pkumar dans le dossier /opt/backup, exécutez la commande rsync ci-dessous avec les options -zavh ,

[[email protected] ~]# rsync -zavh /home/pkumar /opt/backupsending liste de fichiers incrémentielspkumar/pkumar/.bash_logoutpkumar/.bash_profilepkumar/.bashrcpkumar/OpenStack-Networking.pdfenvoyé 4,09 M octets reçus 96 octets 8,19 M la taille totale en octets/sec est de 6,15 M ; l'accélération est de 1,50[[email protected] ~]#

Vérifions si le répertoire est copié ou non, exécutez la commande ci-dessous,

[[email protected] ~]# ls -ld /opt/backup/*-rwx------. 1 racine   racine   6153239 7 avril 00:25 /opt/backup/OpenStack-Networking.pdfdrwx------. 2 pkumar pkumar      90 7 avril 00:25 /opt/backup/pkumar[[email protected] ~]#

Comme nous pouvons le voir, le répertoire "pkumar" est créé sur le dossier de destination et son contenu est également copié. Dans l'exemple ci-dessus, si vous utilisez trail / après le dossier source (/home/pkumar/), la commande rsync ne créera pas le répertoire pkumar sur la destination mais copiera uniquement le contenu.

[[email protected] ~]# rsync -zavh /home/pkumar/ /opt/backup

Exemple :3) Copier des fichiers et des répertoires de manière récursive localement (rsync -zrvh ou rsync -zavh)

Supposons que nous ayons plusieurs fichiers et répertoires dans le répertoire personnel de l'utilisateur pkumar, utilisez la commande rsync ci-dessous pour copier les fichiers et les répertoires de manière récursive, utilisez l'option -a ou -r pour copier les fichiers et les répertoires de manière récursive.

Remarque  :Dans la commande rsync -a L'option est utilisée pour l'archivage lors de la copie ou de la synchronisation et, en dehors de l'archivage, une option est également utilisée pour les éléments suivants :

  • copie récursive des fichiers et des répertoires
  • copier les liens symboliques en tant que liens symboliques
  • préserver les autorisations
  • préserver le groupe
  • préserver l'heure de modification
  • préserver la propriété
[[email protected] ~]# rsync -zrvh /home/pkumar /opt/backupor[[email protected] ~]# rsync -zavh /home/pkumar /opt/backup

Exemple :4) Copier ou synchroniser des fichiers et des répertoires d'un système local vers un système distant

Supposons que nous voulions copier le dossier "/home/pkumar/techi ” de la machine locale à la machine distante (192.168.1.29) sous le /opt

[[email protected] ~]# rsync -zarvh /home/pkumar/techi [email protected]:/opt[email protected]'s password :……………………………………… …………techi/OTRS/techi/OTRS/Database-Selection-OTRS-Installation-CentOS7.jpgtechi/OTRS/Install-OTRS-Accept-License.pngtechi/OTRS/Install-OTRS-CentOS7-RHEL7.jpgtechi /OTRS/mysql-secure-installation-centos7-part2.jpgsent 34.85M bytes  reçu 2.65K bytes  6.34M bytes/sectotal size is 37.77M speedup is 1.08…………………………………………… ………………[[email protected] ~]#

Exemple :5) Copier ou synchroniser des fichiers et des répertoires d'une machine distante vers un système local

Supposons que nous voulions copier des fichiers et des répertoires de la machine distante (192.168.1.29) vers notre système local, dans l'exemple ci-dessous, je copie le dossier distant "/opt/rpms_db ” sur ma machine locale sous /tmp dossier

[[email protected] ~]# rsync -zarvh [email protected] :/opt/rpms_db /tmp[email protected]'s password :réception de la liste de fichiers incrémentielle………………………………… …………………………rpms_db/rpms_db/httpd-2.4.6-88.el7.centos.x86_64.rpmrpms_db/httpd-tools-2.4.6-88.el7.centos.x86_64.rpmrpms_db/postfix- 2.10.1-7.el7.x86_64.rpmrpms_db/pytalloc-2.1.13-1.el7.x86_64.rpmrpms_db/samba-4.8.3-4.el7.x86_64.rpmrpms_db/samba-client-libs-4.8.3- 4.el7.x86_64.rpmrpms_db/samba-common-4.8.3-4.el7.noarch.rpmrpms_db/samba-common-libs-4.8.3-4.el7.x86_64.rpmrpms_db/samba-common-tools-4.8. 3-4.el7.x86_64.rpmrpms_db/samba-libs-4.8.3-4.el7.x86_64.rpmsent 484 octets reçus 15,45 M octets  1,07 M octets/secla taille totale est de 16,37 M l'accélération est de 1,06[[email protected] ~] #

La commande ci-dessus créera automatiquement un dossier "rpms_db" sous le dossier /tmp sur notre machine locale.

[[email protected] ~]# ls -l /tmp/total 8-rwx------. 1 root root  827 6 avril 12:54 ks-script-avmuxwdrwxr-xr-x. 2 racine racine 4096 7 avril 01:42 rpms_db-rw-------. 1 root root    0 6 avril 12:35 yum.log[[email protected] ~]# ls -l /tmp/rpms_db/total 16028……………………………………-rw-r-- r--. 1 racine racine 2844028 12 novembre 09:28 httpd-2.4.6-88.el7.centos.x86_64.rpm-rw-r--r--. 1 racine racine   92504 12 novembre 09:28 httpd-tools-2.4.6-88.el7.centos.x86_64.rpm-rw-r--r--. 1 racine racine 2558136 12 novembre 09:44 postfix-2.10.1-7.el7.x86_64.rpm-rw-r--r--. 1 racine racine   17404 12 novembre 09:44 pytalloc-2.1.13-1.el7.x86_64.rpm-rw-r--r--. 1 racine 696472 12 novembre 09:46 samba-4.8.3-4.el7.x86_64.rpm-rw-r--r--. 1 racine racine 5070800 12 novembre 09:46 samba-client-libs-4.8.3-4.el7.x86_64.rpm-rw-r--r--. 1 racine 210984 12 novembre 10:19 samba-common-4.8.3-4.el7.noarch.rpm-rw-r--r--. 1 racine racine 167512 12 novembre 09:46 samba-common-libs-4.8.3-4.el7.x86_64.rpm-rw-r--r--. 1 racine 458380 12 novembre 09:46 samba-common-tools-4.8.3-4.el7.x86_64.rpm-rw-r--r--. 1 root root  282332 12 novembre 09:46 samba-libs-4.8.3-4.el7.x86_64.rpm……………………………………[[email protected] ~]#

Exemple :6) Spécifiez le shell distant lors de la synchronisation (rsync -e ssh)

Dans la commande rsync, nous pouvons spécifier le shell distant comme ssh lors de la synchronisation, supposons que nous voulions utiliser une communication sécurisée entre la source et la machine de destination via rsync, nous devrions alors utiliser ssh comme shell distant, l'exemple est illustré ci-dessous

[[email protected] ~]# rsync -zarvh -e ssh [email protected] :/opt/rpms_db /tmp[email protected] : réception de la liste de fichiers incrémentiels………………………… ……………………………………………………rpms_db/rpms_db/httpd-2.4.6-88.el7.centos.x86_64.rpmrpms_db/httpd-tools-2.4.6-88. el7.centos.x86_64.rpmrpms_db/postfix-2.10.1-7.el7.x86_64.rpmrpms_db/pytalloc-2.1.13-1.el7.x86_64.rpmrpms_db/samba-4.8.3-4.el7.x86_64.rpmrpms_db/ samba-client-libs-4.8.3-4.el7.x86_64.rpmrpms_db/samba-common-4.8.3-4.el7.noarch.rpmrpms_db/samba-common-libs-4.8.3-4.el7.x86_64. rpmrpms_db/samba-common-tools-4.8.3-4.el7.x86_64.rpmrpms_db/samba-libs-4.8.3-4.el7.x86_64.rpmsent 484 octets reçus 15,45 M octets  1,82 M octets/sec la taille totale est de 16,37 M l'accélération est de 1,06[[email protected] ~]#

Exemple :7) Afficher la progression de la synchronisation dans la sortie de la commande rsync

Si vous souhaitez voir la progression de la synchronisation ou de la copie dans la commande rsync, utilisez « –progress ", l'exemple est montré ci-dessous

[[email protected] ~]# rsync -avh --progress [email protected] :/opt/rpms_db /tmp[email protected] : réception de la liste de fichiers incrémentiels………………………… …………………………………………………………………………..rpms_db/rpms_db/httpd-2.4.6-88.el7.centos.x86_64.rpm          2.84 M 100 %   35,22 Mo/s    0:00:00 (xfr#6, to-chk=18/25)rpms_db/httpd-tools-2.4.6-88.el7.centos.x86_64.rpm         92,50 K 100 %    1,13 Mo /s    0:00:00 (xfr#7, to-chk=17/25)rpms_db/postfix-2.10.1-7.el7.x86_64.rpm          2.56M 100%   14.44MB/s    0:00:00 (xfr #17, to-chk=7/25)rpms_db/samba-4.8.3-4.el7.x86_64.rpm        696.47K 100%    3.71MB/s    0:00:00 (xfr#19, to-chk=5/ 25)rpms_db/samba-client-libs-4.8.3-4.el7.x86_64.rpm          5.07M 100%   19.90MB/s    0:00:00 (xfr#20, to-chk=4/25)rpms_db/samba -common-4.8.3-4.el7.noarch.rpm        210.98K 100%  844.42kB/s    0:00:00 (xfr#21, to-chk=3/25)rpms_db/samba-common-libs-4.8. 3-4.el7.x86_64.rpm        167.51K 100%  667.70kB/s    0:00:00 (xfr#22, to-chk=2/25)rpms_db/samba-common-tools-4.8.3-4.el7 .x86_6 4.rpm        458.38K 100%    1.77MB/s    0:00:00 (xfr#23, to-chk=1/25)rpms_db/samba-libs-4.8.3-4.el7.x86_64.rpm        282.33K 100% 1,09 Mo/s    0:00:00 (xfr#24, to-chk=0/25)envoyé 484 octets reçu 16,38 Moctets  3,64 Moctets/staille totale :16,37 M l'accélération est de 1,00[[email protected] ~]# 

Lire aussi : 14 exemples de commandes SCP pour transférer des fichiers en toute sécurité sous Linux

Exemple :8) Copier la structure du répertoire sans copier les fichiers

Il existe certains scénarios dans lesquels nous voulons copier la structure de répertoires en sautant les fichiers uniquement de la machine locale vers la télécommande ou vice versa.

Supposons que nous voulions copier la structure de répertoires de "/home/pkumar" de la machine locale vers la machine distante (192.168.1.29) sous le dossier /opt.

[email protected] ~]# rsync -av -f"+ */" ​​-f"- *" /home/pkumar [email protected]:/opt/[email protected]'s password:building file list . .. done………………………………………………pkumar/envoyé 43 octets reçu 19 octets 17,71 octets/secla taille totale est de 0 l'accélération est de 0,00[[email protected] ~]#

Exemple :9) Reprendre le transfert de fichiers volumineux après avoir échoué dans scp

Il existe certains scénarios dans le profil d'administration Linux dans lesquels nous avons commencé à copier un fichier plus volumineux à l'aide de la commande scp, mais il s'est terminé au milieu et nous ne pouvons pas nous permettre de recommencer à le copier à l'aide de scp en raison de sa grande taille et de sa consommation de temps.

Ainsi, dans cette situation, la commande rsync peut être utilisée car elle peut commencer à copier le fichier à partir de là où il s'est arrêté ou s'est terminé, ou en d'autres termes, rsync peut transférer les fichiers partiellement copiés à l'aide de la commande scp. L'exemple est montré ci-dessous,

[[email protected] ~]# scp [email protected] :/root/ubuntu-18.04-desktop-amd64.iso /opt[email protected]'s password:ubuntu-18.04-desktop-amd64.iso                   28 % 526 Mo  61,5 Mo/s   00:21 ETA^CKélevé par le signal 2.[[email protected] ~]#[[email protected] ~]# rsync -P --rsh=ssh [email protected]:/root/ubuntu-18.04 -desktop-amd64.iso /opt[email protected]'s password:ubuntu-18.04-desktop-amd64.iso  1 921 843 200 100 %   18,47 Mo/s    0:01:39 (xfr#1, to-chk=0/1) [[email protected] ~]#

Exemple :10) Supprimer les fichiers à destination s'ils ne sont pas présents dans la source (–delete)

Si vous avez déjà synchronisé des fichiers de la source à la destination et que vous avez supprimé les fichiers de la source, vous pouvez forcer la commande rsync à supprimer les fichiers sur la destination à l'aide de l'option –delete, l'exemple est illustré ci-dessous

[[email protected] ~]# rsync -avz --delete /opt/rpms_db [email protected] :/tmp/rpms_db[email protected]'s password :envoi d'une liste de fichiers incrémentielsuppression rpms_db/apr-util-1.5. 2-6.el7.x86_64.rpmsuppression rpms_db/apr-1.4.8-3.el7_4.1.x86_64.rpmrpms_db/sent 862 octets reçus 105 octets 276,29 octets/sectaille totale :15 947 152 vitesse :16 491,37 [[email protected] ~] #

Exemple :11) Limiter la taille du transfert de fichiers (–max-size)

Si vous ne souhaitez pas transférer ou copier les fichiers volumineux à l'aide de rsync, utilisez l'option '-max-size={specify-size-here}' , supposons que nous ne voulons pas transférer les fichiers dont la taille est supérieure à 500K,

Remarque :Pour spécifier la taille en Mo, utilisez M et pour Go, utilisez G.

[[email protected] ~]# rsync -avz --max-size='500K' /opt/rpms_db [email protected] :/tmp

Exemple :12) Ne pas synchroniser/copier le fichier modifié à destination

Il existe certains scénarios dans lesquels nous avons modifié les fichiers à destination et nous ne voulons pas écraser les fichiers modifiés à partir de la source lors de la synchronisation, cela peut donc être facilement réalisé en utilisant -u option dans la commande rsync

[[email protected] ~]# rsync -avzu [email protected] :/opt/techi /home/pkumar/techi[email protected]'s password :réception de listes de fichiers incrémentielsenvoyé 37 octets reçu 4 960 octets 1 427,71 octets/sectotal la taille est de 37 771 649 l'accélération est de 7 558,87 [[email protected] ~]#

Exemple :13) Supprimer des fichiers de la source après la synchronisation (–remove-source-files)

Supposons que vous souhaitiez supprimer les fichiers de la source une fois la synchronisation terminée à l'aide de la commande rsync. Dans l'exemple ci-dessous, le dossier du système local "/home/pkumar/techi.tgz " est synchronisé avec le système distant (192.168.1.29), une fois la synchronisation terminée, il supprimera le fichier de la source.

[[email protected] ~]# rsync --remove-source-files -zvh /home/pkumar/techi.tgz [email protected]:/opt[email protected]'s password:techi.tgzsent 597 bytes reçus 43 octets 182,86 octets/secla taille totale est de 518 l'accélération est de 0,81[[email protected] ~]#[[email protected] ~]# ls -l /home/pkumar/techi.tgzls :impossible d'accéder à /home/pkumar/techi.tgz :Aucun fichier ou répertoire de ce type[[email protected] ~]#

Exemple :14) Exécuter à blanc la commande rsync avant la synchronisation réelle

Il peut y avoir des situations où nous ne sommes pas sur le comportement de la commande rsync donc dans de tels cas, il est préférable de faire un essai à vide de rsync

[[email protected] ~]# rsync --dry-run --remove-source-files -zvh /home/pkumar/projects.tar [email protected] :/opt[email protected]'s password:projects .tarsent 51 octets reçus 19 octets 7,37 octets/secla taille totale est de 981,24 M l'accélération est de 14 017 682,29 (DRY RUN)[[email protected] ~]#

Exemple :15) Inclure et exclure des fichiers lors de la synchronisation avec rsync

Dans certaines situations, nous souhaitons copier ou synchroniser des fichiers et des répertoires d'un type spécifique et exclure des fichiers ou des répertoires d'un type spécifique. La commande Rsync prend en charge les options d'inclusion et d'exclusion.

Dans l'exemple ci-dessous, vous souhaitez copier les fichiers de type pdf et rpm et exclure les types de fichiers png.

[[email protected] ~]# rsync -avz -e ssh --include '*.pdf *.rpm' --exclude '*.png' /home/pkumar/techi [email protected] :/opt[ mot de passe de l'e-mail protégé] :envoi du fichier incrémentiel listtechi/techi/OpenStack-Networking.pdftechi/httpd-2.4.6-88.el7.centos.x86_64.rpmtechi/httpd-tools-2.4.6-88.el7.centos. x86_64.rpmtechi/postfix-2.10.1-7.el7.x86_64.rpmsent 9 469 912 octets reçus 96 octets 2 705 716,57 octets/secla taille totale est de 11 647 907 l'accélération est de 1,23[[email protected] ~]#

Exemple :16) Placer une restriction sur la vitesse de transfert de données dans rsync (–bwlimit=)

Dans la commande rsync, nous pouvons définir la limite de bande passante pour le transfert de données d'une machine à une autre, utilisez '–bwlimit= ' option dans la commande rsync pour limiter la vitesse de transfert de données.

Supposons que nous voulions définir un taux de transfert de données maximal (vitesse) de 600 Ko/s avec rsync, l'exemple est illustré ci-dessous

[[email protected] ~]# rsync -avz --progress --bwlimit=600 /home/pkumar/techi [email protected]:/opt[email protected]'s password:envoi de fichier incrémentiel listtechi/techi/ OpenStack-Networking.pdf6,153,239 100%  910.02kB/s    0:00:06 (xfr#1, to-chk=6/8)techi/httpd-2.4.6-88.el7.centos.x86_64.rpm2,844,028 100 %  615,28 Ko/s    0:00:04 (xfr#2, to-chk=5/8)techi/httpd-tools-2.4.6-88.el7.centos.x86_64.rpm92,504 100 %  507,51 Ko/ s    0:00:00 (xfr#3, to-chk=4/8)techi/pkumar-2.png0 100 %    0.00kB/s    0:00:00 (xfr#4, to-chk=3/8) techi/pkumar-3.png0 100%    0.00kB/s    0:00:00 (xfr#5, to-chk=2/8)techi/pkumar.png0 100%    0.00kB/s    0:00:00 (xfr# 6, to-chk=1/8)techi/postfix-2.10.1-7.el7.x86_64.rpm2,558,136 100%  594.80kB/s    0:00:04 (xfr#7, to-chk=0/8 )envoyé 9 470 087 octets reçu 153 octets 485 653,33 octets/secla taille totale est de 11 647 907 l'accélération est de 1,23[[email protected] ~]#

Exemple :17) Afficher la différence de fichiers et de répertoires entre la source et la destination

Utilisez "-i ” option dans la commande rsync pour répertorier la différence de fichiers et de répertoires entre la source et la destination. L'exemple est montré ci-dessous

[[email protected]teway ~]# rsync -avzi /home/pkumar/techi [email protected]:/opt[email protected]'s password:sending incrémental file list.d..t..... . techi/ 

Selon la sortie de la commande ci-dessus, il existe une différence dans le fichier appelé "projects.txt" sur la destination. Voici la signification des mots-clés dans la sortie ci-dessus,

  • d :indique un changement dans le fichier de destination
  • f :indique un fichier
  • t :indique un changement d'horodatage
  • s :indique un changement de taille

C'est tout de ce tutoriel, au cas où ces exemples vous permettraient de comprendre la commande rsync plus efficacement, veuillez partager vos commentaires et commentaires

Lire aussi  : 17 commandes tar utiles avec des exemples pratiques sous Linux

Lire aussi  :Comment faire pivoter et compresser les fichiers journaux sous Linux avec Logrotate


Linux
  1. Commande Rsync :20 exemples utiles sous Linux

  2. 12 exemples de commandes Wget utiles sous Linux

  3. Commande ls sous Linux :17 exemples utiles expliqués

  4. Exemples pratiques de la commande rsync sous Linux

  5. 14 exemples de commandes "cat" utiles sous Linux

15 exemples utiles de commande touch dans le système Linux

15 exemples pratiques de commande Rsync sous Linux

9 exemples utiles de commande tactile sous Linux

10 exemples utiles de la commande Sort sous Linux

Exemples de commandes Linux rsync

12 exemples de commandes de date Linux utiles