GNU/Linux >> Tutoriels Linux >  >> Linux

5 astuces rsync avancées pour les administrateurs système Linux

Dans un article précédent intitulé Outils d'administration système :Utiliser rsync pour gérer la sauvegarde, la restauration et la synchronisation des fichiers, j'ai parlé de cp et sftp , et j'ai regardé les bases de rsync pour déplacer des fichiers. Il y a aussi quelques autres excellents articles ici sur Activer Sysadmin sur tar et SSH que vous devriez consulter. Copier des fichiers vers et depuis des systèmes distants et avoir un moyen simple d'exécuter une sauvegarde de quelque chose sur lequel vous travaillez (ou, d'ailleurs, des données critiques de l'entreprise) sont des outils de base utiles dans la boîte à outils sysadmin que j'utilise encore et encore. Parfois, cependant, vous voudrez peut-être faire quelque chose d'un peu plus sophistiqué, comme déplacer des données sur un lien moins fiable ou plus lent. Rsync peut fournir un cryptage pour le protéger en transit, une compression pour le rendre plus fluide et des sommes de contrôle pour vous assurer d'obtenir ce que vous attendiez.

[ Les lecteurs ont également aimé : Comment copier en toute sécurité des fichiers entre des hôtes Linux à l'aide de SCP et SFTP ]

Maintenir un site Web

J'ai commencé à utiliser rsync pour synchroniser une version locale d'un site Web que j'administrais à l'époque des ténèbres, lorsque CI/CD n'était qu'une étincelle dans les yeux de son père. Je pourrais conserver une copie locale sur laquelle travailler et également avoir une sauvegarde de la dernière version du site. Je vais utiliser ce scénario comme exemple. Vous pouvez utiliser rsync pour synchroniser n'importe quel système de fichiers distant pour les sauvegardes ou comme moyen rapide de créer un pipeline de test à la production. Je l'ai également utilisé pour synchroniser un répertoire, puis utilisé tar pour créer des sauvegardes locales :

skipworthy  ~  enable  websync  ls -al
total 8
drwxrwxr-x 2 skipworthy skipworthy 4096 Dec 16 13:57 .
drwxrwxr-x 5 skipworthy skipworthy 4096 Dec 16 14:01 ..
 skipworthy  ~  enable  websync  rsync -aruv 192.168.11.111:/usr/share/httpd/enable ./
receiving incremental file list
enable/
enable/bar
enable/foo
enable/index

sent 85 bytes  received 229 bytes  209.33 bytes/sec
total size is 0  speedup is 0.00
skipworthy  ~  enable  websync  ls -l
total 4
dr-xr-xr-x 2 skipworthy skipworthy 4096 Dec 16 13:49 enable

Comme avant avec le rsync local , nous fonctionnons en mode archive, en préservant mtime et les attributs de fichier, récursifs dans les sous-répertoires et ne mettant à jour que les données nouvelles ou modifiées.

Remarque :-v signifie presque toujours verbeux , en envoyant la sortie à la console.

Supposons que je veuille ajouter une page au site et la télécharger :

skipworthy  ~  enable  websync  rsync -aruv ./* 192.168.11.111:/usr/share/httpd/enable
sending incremental file list
pagetwo
rsync: recv_generator: mkdir "/usr/share/httpd/enable/enable" failed: Permission denied (13)

C'est le bon moment pour noter qu'il y a certaines choses auxquelles vous devez penser lorsque vous utilisez rsync pour envoyer des fichiers. Rsync a besoin d'une autorisation pour l'ensemble de l'arborescence de répertoires, pas seulement pour le répertoire de destination. Il existe plusieurs façons d'y parvenir. D'une part, il est possible de spécifier le uid et gid du rsync démon dans /etc/rsyncd.conf . Une autre méthode consiste à exécuter rsync en tant qu'utilisateur avec les autorisations requises. Ces deux éléments peuvent être problématiques dans un environnement sécurisé, alors soyez prudent ici.

Notez également que par défaut, lorsque vous utilisez rsync à distance, vous vous connectez directement au rsync service sur le port 873 . Vous devez y penser lors de la configuration des règles et des autorisations du pare-feu. De plus, il existe des autorisations SELinux, qui sont une toute autre discussion et n'entrent pas dans le cadre de cet article. Une solution au problème des autorisations de répertoire et aux problèmes de sécurité, en général, consiste à utiliser SSH (cela devrait vous sembler familier maintenant). SSH configure un tunnel crypté et peut être configuré pour écouter sur n'importe quel port, sans oublier que vous pouvez spécifier une clé SSH pour sécuriser davantage la connexion et rendre les connexions à distance un peu plus conviviales pour l'automatisation.

Fonctionnalités avancées

Pour cet exemple suivant, je vais appliquer ces modifications en tant qu'utilisateur root. S'il vous plaît, ne faites pas comme moi :

rsync -aruv -e ssh  ./* [email protected]:/usr/share/httpd/enable
[email protected]'s password:
sending incremental file list
pagetwo

sent 246 bytes  received 36 bytes  43.38 bytes/sec
total size is 31  speedup is 0.11

Notez à nouveau que les options SSH habituelles sont disponibles pour les connexions, y compris la spécification du port et de l'emplacement de la clé. Rsync vous permet également de sélectionner l'option shell distant, tant qu'il est installé aux deux extrémités et configuré dans .ssh/config .

Sommes de contrôle

J'ai mentionné les sommes de contrôle plus tôt, et il y a deux choses potentiellement utiles ici. Tout d'abord, rsync exécute une somme de contrôle par défaut, puis la vérifie sur la cible, ce qui vous avertira en cas de perte ou d'endommagement de données en vol.

Deuxièmement, vous pouvez également utiliser des sommes de contrôle pour déterminer quels fichiers transférer (c'est-à-dire quels fichiers sont réellement différents entre la source et la destination), ce qui est utile si vous n'êtes pas sûr que le mtime /une heure représente la version réelle du fichier que vous voulez. J'ai eu des systèmes de fichiers que j'essayais de synchroniser et qui étaient touchés par une autre application, donc les heures étaient incorrectes.

skipworthy  ~  enable  websync  rsync -aruv -e ssh --checksum 192.168.11.111:/usr/share/httpd/enable ./
receiving incremental file list

sent 26 bytes  received 364 bytes  780.00 bytes/sec

Remarque  :Cela entraîne des frais généraux supplémentaires lors du traitement et du transfert, car une somme de contrôle est générée pour chaque fichier de chaque côté, puis comparée.

Compression

Une autre astuce utile est la compression. Le -z l'option compressera le flux, --zc définit le type de compression, et --zl définit le niveau :

skipworthy  ~  enable  websync  rsync -aruv -e ssh --zc=zlib --zl=6 192.168.11.111:/usr/share/httpd/enable ./
receiving incremental file list

sent 26 bytes  received 248 bytes  548.00 bytes/sec
total size is 31  speedup is 0.11

Si vous ne spécifiez pas le type ou le niveau, rsync utilise une liste fournie dans le RSYNC_COMPRESS_LIST variable d'environnement à négocier pour un type et un niveau de compression communs.

[ Vous souhaitez en savoir plus sur l'automatisation du système ? Démarrez avec The Automated Enterprise, un livre gratuit de Red Hat. ] 

Récapitulez

Alors voilà :rsync est encore un autre de ces outils qui est toujours utile et pertinent pour l'administration des systèmes Linux - un outil que j'ai été heureux d'avoir à plusieurs reprises dans ma carrière. Il y a beaucoup, beaucoup plus de choses que vous pouvez faire avec et que nous n'avions pas la place d'explorer ici. Comme toujours, consultez les pages de manuel !


Linux
  1. 3 conseils pour imprimer avec Linux

  2. 8 conseils pour la ligne de commande Linux

  3. Comment utiliser rsync avancé pour les sauvegardes Linux volumineuses

  4. Démystifier Ansible pour les administrateurs système Linux

  5. Écrire des applications Python, créer des laboratoires Linux et plus de conseils pour les administrateurs système

Conseils pour utiliser la commande top sous Linux

Exemples de commandes Linux Rsync pour les débutants

Guide de démarrage rapide d'Ansible pour les administrateurs système Linux

30 exercices d'autorisations Linux pour les administrateurs système

40 commandes réseau Linux utiles pour les administrateurs système modernes

Utilitaire de sauvegarde Linux pour les sauvegardes incrémentielles