Exemples sur la façon d'utiliser RSYNC pour les sauvegardes et synchonisations de données locales et distantes

Exemples sur la façon d'utiliser RSYNC pour les sauvegardes et synchonisations de données locales et distantes

RSYNC est un outil très utile qui permet aux administrateurs système Linux de synchroniser les données localement ou avec un système de fichiers distant via le protocole SSH ou en utilisant le démon rsync. En utilisant rsync est plus pratique que de simplement copier des données, car il est capable de repérer et de synchroniser uniquement les différences entre une source et une destination. Le programme a des options pour préserver les autorisations standard et étendues du système de fichiers, compresser les données pendant les transferts et plus. Nous verrons les plus utilisés dans ce guide.

Dans ce tutoriel, vous apprendrez:

  • Comment utiliser RSYNC pour synchroniser les données
  • Comment utiliser RSYNC avec un système de fichiers distant via SSH
  • Comment utiliser RSYNC avec un système de fichiers distant via le démon RSYNC
  • Comment exclure les fichiers de la synchronisation

Exigences et conventions logicielles utilisées

Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Indépendant de la distribution
Logiciel L'application RSYNC et éventuellement le démon RSYNC
Autre Aucune exigence particulière n'est nécessaire pour suivre ce guide.
Conventions # - Exige que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur non privilégié régulier

Rsync - utilisation

Commençons par l'usage de base RSYNC. Supposons que nous ayons un répertoire sur notre système de fichiers local, et que nous voulons synchroniser son contenu avec un autre répertoire, peut-être sur un appareil USB externe, afin de créer une sauvegarde de nos fichiers. Pour le bien de notre exemple, notre répertoire source sera / mnt / data / source, et notre destination sera montée à / run / media / egdoc / destination. Notre destination contient deux fichiers: fichier1.SMS et fichier2.SMS, Alors que la destination est vide. La première fois que nous courons rsync Toutes les données sont copiées:

Le chemin de destination est la dernière chose que nous avons fournie dans la commande. Si nous énumérons maintenant son contenu, nous pouvons voir qu'il contient désormais les fichiers source:



$ ls / run / media / egdoc / destination / -l total 0 -rw-r - r--. 1 Egdoc Egdoc 0 oct 6 19:42 Fichier1.txt -rw-r - r--. 1 Egdoc Egdoc 0 oct 6 19:42 Fichier2.SMS

Les temps suivants, nous exécutons RSYNC pour synchroniser les deux répertoires, seuls de nouveaux fichiers et des fichiers modifiés seront copiés: cela permettra d'économiser beaucoup de temps et de ressources. Vérifions-le: nous modifions d'abord le contenu du fichier1.txt à l'intérieur du répertoire source:

$ echo linuxconfig> / mnt / data / source / file1.SMS

Ensuite, nous courirons rsync Encore une fois, regardez la sortie:

$ RSync -av / mnt / data / source / / run / media / egdoc / destination d'envoi de listes de fichiers incrémentales Fichier.txt envoyé 159 octets reçus 35 octets 388.00 octets / sec La taille totale est de 12 accélération est 0.06

Le seul fichier copié est celui que nous avons modifié, fichier1.SMS.

Créer une copie miroir de la source vers la destination

Par défaut rsync s'assure simplement que tous les fichiers dans le répertoire source (sauf celui spécifié comme exceptions) sont copiés à la destination: il ne prend pas en charge de garder les deux répertoires identiques, et il ne supprime pas les fichiers; Par conséquent, si nous voulons créer une copie miroir de la source en destination, nous devons utiliser le --supprimer Option, qui provoque la suppression des fichiers existants uniquement à l'intérieur de la destination.

Supposons que nous créons un nouveau fichier appelé fichier3.SMS Dans le répertoire de destination:

$ touch / run / media / egdoc / destination / file3.SMS


Le fichier n'existe pas dans le répertoire source, donc si nous exécutons rsync avec le --supprimer Option, il est supprimé:

$ RSYNC -AV --Delete / Mnt / Data / Source / / Run / Media / Egdoc / Destination Envoi de la liste de fichiers incrémentiels Suppression du fichier 3.SMS ./ Envoyé 95 octets reçus 28 octets 246.00 octets / sec La taille totale est de 0 accélération est 0.00 

Étant donné que cette synchronisation est potentiellement destructrice, vous voudrez peut-être d'abord lancer RSYNC avec le --à sec Option, afin de faire afficher le programme les opérations qui seraient effectuées, sans modifier réellement le système de fichiers.

Synchroniser les fichiers à distance

Jusqu'à présent, nous avons vu comment utiliser RSYNC pour synchroniser deux systèmes de fichiers locaux. Le programme peut également être utilisé pour synchroniser les fichiers à distance, en utilisant un shell distant comme RSH ou ssh, ou la rsync démon. Nous explorerons les deux méthodes.

Exécuter RSYNC via SSH

Pour le bien de notre exemple, nous utiliserons toujours le même répertoire source que nous avons utilisé dans les exemples précédents, mais en tant que destination, nous utiliserons un répertoire sur une machine distante avec IP 192.168.122.32. J'ai précédemment configuré un serveur OpenSSH avec une connexion basée sur des clés sur la machine, donc je n'aurai pas besoin de fournir un mot de passe pour y accéder.

Comment nous pouvons courirrsync via ssh? Tout d'abord, pour qu'une synchronisation à distance fonctionne, RSYNC doit être installé à la fois sur la source et la machine distante. RSYNC essaie de contacter un système de fichiers distant à l'aide d'un programme de shell distant chaque fois que la destination ou le chemin source contient un : personnage. Dans les versions modernes de RSYNC ssh est utilisé par défaut; Pour utiliser un autre shell distant, ou pour déclarer explicitement le shell, nous pouvons utiliser le -e option et fournir comme argument. En supposant que notre répertoire de destination sur la machine distante est / Home / Egdoc / Destination, Nous pouvons courir:

$ RSync -av -e ssh / mnt / data / source / egdoc @ 192.168.122.32: / home / egdoc / destination

Notez que nous avons spécifié la destination dans le formulaire @: / path / vers / répertoire.

Contacter une machine distante via le démon RSYNC

L'autre méthode que nous pouvons utiliser pour synchroniser les fichiers avec une machine distante consiste à utiliser le démon rsync. Cela nécessite évidemment que le démon est installé et fonctionne sur la machine de destination. RSYNC essaie de contacter la machine distante en parlant au démon chaque fois que la source ou le chemin de destination contient un :: (double côlon) séparateur après la spécification de l'hôte, ou lorsqu'une URL RSYNC est spécifiée comme rsync: //.



En supposant que le démon rsync écoute sur le port 873 (la valeur par défaut), sur la machine distante, nous pouvons le contacter en exécutant:

$ RSync -av / mnt / data / source / 192.168.122.32 ::module/destination

Alternativement, nous pouvons utiliser un URL RSYNC:

$ RSync -av / mnt / data / source / rsync: // 192.168.122.32 /module/destination

Dans les deux exemples, module (mis en surbrillance dans la commande), ne représente pas le nom d'un répertoire sur la machine distante, mais le nom d'une ressource, ou module dans la terminologie RSYNC, configuré par l'administrateur, et rendu accessible via le démon RSYNC. Le module peut pointer vers n'importe quel chemin du système de fichiers.

Excluant les fichiers de la synchronisation

Parfois, nous voulons exclure certains fichiers ou répertoires de la synchronisation. Il existe essentiellement deux façons d'accomplir cette tâche: en spécifiant un modèle d'exclusion directement avec --exclure (plusieurs modèles peuvent être spécifiés en répétant l'option), ou en écrivant tous les modèles dans un fichier (un par ligne). Lorsque vous utilisez cette dernière méthode, nous devons transmettre le chemin du fichier comme argument au --exclure de option.

Tous les fichiers et répertoires correspondant au modèle seront exclus de la synchronisation. Par exemple, pour exclure tous les fichiers avec le «.Txt »Extension que nous exécutrions:

$ RSync -av / mnt / data / source / / run / media / egdoc / destination --exclude = *.SMS


Conclusions

Dans cet article, nous avons examiné rapidement RSYNC, un outil très utile que nous pouvons utiliser pour synchroniser les fichiers et les répertoires à la fois sur les systèmes de fichiers locaux et distants. Nous avons vu le programme les plus utilisées les options, et ce qu'ils nous permettent d'accomplir, comment spécifier les répertoires source et de destination, et les méthodes que nous pouvons utiliser pour contacter un système de fichiers distant. Enfin, nous avons vu comment exclure les fichiers de la synchronisation, spécifiant les modèles d'exclusion directement ou dans un fichier. RSYNC a beaucoup d'options, trop pour mentionner ici. Comme toujours, nous pouvons trouver toutes les informations dont nous avons besoin dans le manuel du programme!

Tutoriels Linux connexes:

  • Choses à installer sur Ubuntu 20.04
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Masterring Bash Script Loops
  • Ubuntu 20.04 astuces et choses que vous ne savez peut-être pas
  • Ubuntu 20.04 Guide
  • Exemples RSync dans Linux
  • Boucles imbriquées dans les scripts bash
  • Manipulation de Big Data pour le plaisir et le profit Partie 1
  • Mint 20: Mieux que Ubuntu et Microsoft Windows?