GNU/Linux >> Tutoriels Linux >  >> Linux

Commande Linux rsync avec des exemples pratiques

Rsync est un outil de copie de fichiers rapide et extraordinairement polyvalent. Il peut copier localement, vers/depuis un autre hôte sur n'importe quel shell distant, ou vers/depuis un démon rsync distant. Il offre un grand nombre d'options qui contrôlent chaque aspect de son comportement et permettent des spécifications très flexibles de l'ensemble de fichiers à copier. Il est célèbre pour son algorithme de transfert delta, qui réduit la quantité de données envoyées sur le réseau en envoyant uniquement les différences entre les fichiers source et les fichiers existants dans la destination. Rsync est largement utilisé pour les sauvegardes et la mise en miroir et comme commande de copie améliorée pour une utilisation quotidienne.

Rsync trouve les fichiers qui doivent être transférés à l'aide d'un algorithme de "vérification rapide" (par défaut) qui recherche les fichiers dont la taille ou la dernière modification a été modifiée. Toute modification des autres attributs conservés (comme demandé par les options) est effectuée directement sur le fichier de destination lorsque la vérification rapide indique que les données du fichier n'ont pas besoin d'être mises à jour.

Certaines des fonctionnalités supplémentaires de rsync sont

  • prise en charge de la copie de liens, d'appareils, de propriétaires, de groupes et d'autorisations
  • options d'exclusion et d'exclusion de similaires à GNU tar
  • un mode d'exclusion CVS pour ignorer les mêmes fichiers que CVS ignorerait
  • peut utiliser n'importe quel shell distant transparent, y compris ssh ou rsh
  • ne nécessite pas de privilèges de super-utilisateur
  • tuyautage des transferts de fichiers pour minimiser les coûts de latence
  • prise en charge des démons rsync anonymes ou authentifiés (idéal pour la mise en miroir)

Syntaxe

La syntaxe de base de la commande rsync est :

# rsync options source destination

Certaines des options couramment utilisées :

  • –supprimer  :supprimer les fichiers qui n'existent pas sur l'expéditeur (système).
  • -v  :Sortie détaillée
  • -e "options ssh" :spécifiez le ssh comme shell distant
  • -a :mode archivage
  • -r :récursivité dans les répertoires
  • -z  :compresser les données du fichier

Exemples de commandes rsync sous Linux

synchroniser le fichier et les répertoires sur le système local

# rsync -zvr /usr/  /root/sync-data/

La commande ci-dessus copiera ou synchronisera tous les fichiers et répertoires du dossier /usr vers le dossier /root/sync-data.

synchroniser les fichiers localement en préservant les autorisations

-a les options font ce qui suit :elles fournissent des fonctionnalités récursives et préservent les autorisations, les liens symboliques, les informations sur les utilisateurs et les groupes.

# rsync -azv /usr/ /root/sync-data/

synchroniser/copier les fichiers de la machine locale vers le serveur distant

# rsync -avz /root/sync-data/ [email protected]:/tmp

La commande ci-dessus copiera les données du dossier /root/syc-data sur la machine distante avec les informations d'identification de l'utilisateur root dans le dossier /tmp.

synchroniser/copier les fichiers du serveur distant vers la machine locale

# rsync -avz [email protected]:/tmp/src /opt 
[email protected]'s password: 
receiving file list ... done 
src/ 
src/debug/ 
src/kernels/
sent 38 bytes  received 99 bytes  10.96 bytes/sec 
total size is 0  speedup is 0.00

La commande ci-dessus copiera le dossier /tmp/src du serveur distant dans le dossier /opt de la machine locale.

Synchronisation à distance via ssh

rsync nous permet de synchroniser des fichiers sur une machine distante et vice versa via ssh, c'est-à-dire une communication sécurisée. Utilisez "rsync -e ssh" pour spécifier le shell distant à utiliser. Dans notre cas, rsync utilisera ssh.

# rsync -avz -e ssh [email protected]:/var/lib/rpm  /opt 
The authenticity of host '192.168.2.149 (192.168.2.149)' can't be established. 
RSA key fingerprint is 45:fc:99:57:34:ba:6a:bb:e3:6f:00:bb:ca:15:3d:c3. 
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.2.149' (RSA) to the list of known hosts.
[email protected]'s password: 
receiving file list ... done 
rpm/ 
rpm/.rpm.lock 
rpm/Basenames 
rpm/Conflictname 
............
rpm/Triggername
sent 422 bytes  received 12521670 bytes  115410.99 bytes/sec 
total size is 35467264  speedup is 2.83

Afficher la progression de la synchronisation

Nous pouvons utiliser l'option "-progress" pour afficher la progression de la synchronisation.

# rsync -avz  --progress [email protected]:/usr   /opt 
[email protected]'s password: 
receiving file list ... 
44609 files to consider 
usr/ 
usr/tmp -> ../var/tmp 
usr/bin/ 
usr/bin/.fipscheck.hmac 
65 100%   63.48kB/s    0:00:00 (xfer#1, to-check=44605/44609) 
usr/bin/.ssh.hmac 
65 100%   63.48kB/s    0:00:00 (xfer#2, to-check=44604/44609) 
usr/bin/GET 
14519 100%  248.75kB/s    0:00:00 (xfer#3, to-check=44603/44609) 
usr/bin/HEAD 
14519 100%  232.44kB/s    0:00:00 (xfer#4, to-check=44602/44609)
............

Inclure et exclure les options dans rsync

rsync nous permet de spécifier le modèle que nous voulons inclure et exclure des fichiers ou des répertoires lors de la synchronisation.

# rsync -avz --include 'P*' --exclude '*' [email protected]:/var/lib/rpm/  /opt 
[email protected]'s password: 
receiving file list ... done 
./ 
Packages 
Providename 
Provideversion 
Pubkeys
sent 129 bytes  received 9395561 bytes  695977.04 bytes/sec 
total size is 28999680  speedup is 3.09

L'exemple ci-dessus inclut uniquement les fichiers ou répertoires commençant par "P" et exclut tous les autres fichiers. (en utilisant rsync exclure ‘*’ )

Supprimer les fichiers à la cible si les fichiers ne sont pas présents à la source

Avec l'aide de l'option "–delete" dans rsync, nous pouvons supprimer les fichiers créés à la cible si les mêmes fichiers ne sont pas présents à la source.

# rsync -avz --delete [email protected]:/var/lib/rpm/  /opt

EXEMPLE :9 AFFICHER LES CHANGEMENTS ENTRE LA SOURCE ET LA CIBLE À L'AIDE DE L'OPTION "-I"

Afficher les changements entre la source et la cible

Vous pouvez voir les changements entre les fichiers source et cible en utilisant l'option "-i". Par exemple :

# rsync -avzi [email protected]:/var/lib/rpm/ /opt
 [email protected]'s password:
 receiving file list ... done
 >f+++++++ .rpm.lock
 >f+++++++ Basenames
 >f+++++++ Conflictname
 >f+++++++ Dirnames
 >f+++++++ Filedigests
 >f+++++++ Group
 >f+++++++ Installtid
 >f+++++++ Name
 >f+++++++ Obsoletename
 >f+++++++ Requirename
 >f+++++++ Requireversion
 >f+++++++ Sha1header
 >f+++++++ Sigmd5
 >f+++++++ Triggername
sent 328 bytes  received 3126214 bytes  297765.90 bytes/sec
total size is 35467264  speedup is 11.34

Limiter la taille du fichier de transfert

Vous pouvez forcer rsync à ne pas transférer les fichiers dont la taille dépasse une certaine taille en utilisant l'option "–max-size".

# rsync -avz --max-size='200k' [email protected]:/var/lib/rpm/ /opt

La commande ci-dessus fait en sorte que rsync ne transfère que les fichiers inférieurs ou égaux à 200K. Nous pouvons indiquer M pour mégaoctets et G pour gigaoctets.


Linux
  1. Commande Linux wc avec exemples

  2. 25 exemples pratiques de commande de recherche utiles sous Linux

  3. Commande JQ sous Linux avec exemples

  4. Exemples pratiques de la commande rsync sous Linux

  5. Exemples pratiques de la commande Unzip sous Linux

12 exemples pratiques d'In Command sous Linux

La commande Wait sous Linux expliquée avec des exemples pratiques

15 exemples pratiques de commande Rsync sous Linux

Tutoriel sur la commande de recherche Linux (avec exemples)

Commande lsof sous Linux avec exemples

Commande comm Linux avec exemples