Le guide du non-débutant pour la synchronisation de données avec Rsync

Table des matières:

Le guide du non-débutant pour la synchronisation de données avec Rsync
Le guide du non-débutant pour la synchronisation de données avec Rsync

Vidéo: Le guide du non-débutant pour la synchronisation de données avec Rsync

Vidéo: Le guide du non-débutant pour la synchronisation de données avec Rsync
Vidéo: Trouver l'adresse ip d'un site - YouTube 2024, Novembre
Anonim
Le protocole rsync peut être assez simple à utiliser pour les tâches de sauvegarde / synchronisation ordinaires, mais certaines de ses fonctionnalités plus avancées risquent de vous surprendre. Dans cet article, nous allons montrer comment même les plus grands stockeurs de données et passionnés de sauvegarde peuvent utiliser rsync comme solution unique pour tous leurs besoins en matière de redondance des données.
Le protocole rsync peut être assez simple à utiliser pour les tâches de sauvegarde / synchronisation ordinaires, mais certaines de ses fonctionnalités plus avancées risquent de vous surprendre. Dans cet article, nous allons montrer comment même les plus grands stockeurs de données et passionnés de sauvegarde peuvent utiliser rsync comme solution unique pour tous leurs besoins en matière de redondance des données.

Avertissement: Geeks avancés uniquement

Si vous êtes assis à penser «Qu'est-ce que c'est que rsync?» Ou «Je n'utilise rsync que pour des tâches très simples», vous voudrez peut-être consulter notre précédent article sur la manière d'utiliser rsync pour sauvegarder vos données sous Linux. Une introduction à rsync, vous guide dans l’installation et présente ses fonctions les plus élémentaires. Une fois que vous maîtrisez parfaitement l'utilisation de rsync (honnêtement, ce n'est pas si complexe) et que vous êtes à l'aise avec un terminal Linux, vous êtes prêt à passer à ce guide avancé.

Exécuter rsync sur Windows

Premièrement, plaçons nos lecteurs Windows sur la même page que nos gourous Linux. Bien que rsync soit conçu pour fonctionner sur des systèmes de type Unix, il n’ya aucune raison pour que vous ne puissiez pas l’utiliser aussi facilement sous Windows. Cygwin produit une merveilleuse API Linux que nous pouvons utiliser pour exécuter rsync. Visitez donc leur site Web et téléchargez la version 32 bits ou 64 bits, selon votre ordinateur.

L'installation est simple. vous pouvez conserver toutes les options à leurs valeurs par défaut jusqu'à l'écran «Select Packages».

Vous devez maintenant suivre les mêmes étapes pour Vim et SSH, mais les paquetages auront un aspect un peu différent lorsque vous les sélectionnerez. Voici donc quelques captures d'écran:
Vous devez maintenant suivre les mêmes étapes pour Vim et SSH, mais les paquetages auront un aspect un peu différent lorsque vous les sélectionnerez. Voici donc quelques captures d'écran:

Installer Vim:

Installation de SSH:
Installation de SSH:
Après avoir sélectionné ces trois packages, continuez de cliquer sur Suivant jusqu'à la fin de l'installation. Ensuite, vous pouvez ouvrir Cygwin en cliquant sur l’icône que le programme d’installation a placée sur votre bureau.
Après avoir sélectionné ces trois packages, continuez de cliquer sur Suivant jusqu'à la fin de l'installation. Ensuite, vous pouvez ouvrir Cygwin en cliquant sur l’icône que le programme d’installation a placée sur votre bureau.

Commandes rsync: simple à avancé

Maintenant que les utilisateurs de Windows se trouvent sur la même page, examinons une simple commande rsync et montrons comment l’utilisation de certains commutateurs avancés peut rapidement le rendre complexe.

Disons que vous avez un tas de fichiers à sauvegarder - qui n’en fait pas ces jours-ci? Vous branchez votre disque dur portable pour pouvoir sauvegarder les fichiers de votre ordinateur et lancez la commande suivante:

rsync -a /home/geek/files/ /mnt/usb/files/

Ou, à quoi ressemblerait-il sur un ordinateur Windows avec Cygwin:

rsync -a /cygdrive/c/files/ /cygdrive/e/files/

Assez simple, et à ce stade, il n’est vraiment pas nécessaire d’utiliser rsync, vous pouvez simplement glisser-déposer les fichiers. Toutefois, si votre autre disque dur contient déjà certains des fichiers et n’a besoin que des versions mises à jour et des fichiers créés depuis la dernière synchronisation, cette commande est pratique car elle n’envoie que les nouvelles données sur le disque dur. Avec les gros fichiers, et en particulier le transfert de fichiers sur Internet, c'est un gros problème.

Sauvegarder vos fichiers sur un disque dur externe, puis le garder au même endroit que votre ordinateur est une très mauvaise idée. Voyons donc ce qu'il faudrait pour envoyer vos fichiers par Internet à un autre ordinateur ( celui que vous avez loué, un membre de la famille, etc.).

rsync -av --delete -e 'ssh -p 12345’ /home/geek/files/ [email protected]:/home/geek2/files/

La commande ci-dessus enverrait vos fichiers sur un autre ordinateur avec une adresse IP de 10.1.1.1. Cela supprime les fichiers superflus de la destination qui n’existent plus dans le répertoire source, affiche les noms de fichiers transférés afin que vous ayez une idée de ce qui se passe et tunnelise rsync via SSH sur le port 12345.

le

-a -v -e --delete

les commutateurs sont parmi les plus élémentaires et les plus couramment utilisés; Si vous lisez ce didacticiel, vous devriez déjà en savoir beaucoup sur eux. Voyons d’autres commutateurs parfois ignorés mais incroyablement utiles:

--progress

- Ce commutateur nous permet de voir la progression du transfert de chaque fichier. Il est particulièrement utile lors du transfert de fichiers volumineux sur Internet, mais il peut générer une quantité insensée d’informations lors du transfert de petits fichiers sur un réseau rapide.

Une commande rsync avec le

--progress

commutateur comme une sauvegarde est en cours:

Image
Image

--partial

- Il s'agit d'un autre commutateur particulièrement utile pour transférer des fichiers volumineux sur Internet. Si rsync est interrompu pour une raison quelconque au cours d’un transfert de fichier, le fichier partiellement transféré est conservé dans le répertoire de destination et le transfert reprend là où il s’est arrêté une fois la commande rsync exécutée. Lorsque vous transférez des fichiers volumineux sur Internet (par exemple, quelques gigaoctets), rien de moins que d’avoir une panne de quelques secondes, un écran bleu ou une erreur humaine qui retarde le transfert de votre fichier et vous oblige à tout recommencer.

-P

- cet interrupteur combine

--progress

et

--partial

utilisez-le plutôt et cela rendra votre commande rsync un peu plus nette.

-z

ou

--compress

- Ce commutateur obligera rsync à compresser les données de fichier lors de leur transfert, ce qui réduira la quantité de données à envoyer à la destination. C’est en fait un commutateur assez commun mais loin d’être essentiel, il ne vous profite vraiment que pour les transferts entre connexions lentes et ne fait rien pour les types de fichiers suivants: 7z, avi, bz2, deb, g, z iso, jpeg, jpg, mov, mp3, mp4, ogg, rpm, tbz, tgz, z, zip.

-h

ou

--human-readable

- Si vous utilisez le

--progress

vous voudrez certainement utiliser celui-ci également. Autrement dit, à moins que vous ne souhaitiez convertir des octets en mégaoctets à la volée. le

-h

switch convertit tous les nombres sortis en un format lisible par l’homme, ce qui vous permet de comprendre la quantité de données transférées.

-n

ou

--dry-run

- Ce commutateur est essentiel pour savoir quand vous écrivez et testez votre script rsync. Il effectue un essai mais n’effectue aucune modification - les modifications envisagées sont toujours restituées normalement. Vous pouvez donc tout lire et vous assurer que tout se passe bien avant de lancer votre script en production.

-R

ou

--relative

- Ce commutateur doit être utilisé si le répertoire de destination n’existe pas déjà. Nous utiliserons cette option plus tard dans ce guide pour pouvoir créer des répertoires sur la machine cible avec des horodatages dans les noms de dossier.

--exclude-from

- Ce commutateur est utilisé pour créer un lien vers une liste d’exclusion contenant des chemins de répertoire que vous ne souhaitez pas sauvegarder. Il faut juste un fichier texte avec un répertoire ou un chemin sur chaque ligne.

--include-from

- Semblable à

--exclude-from

mais il est lié à un fichier contenant des répertoires et des chemins de fichiers de données que vous souhaitez sauvegarder.

--stats

- Ce n'est pas vraiment un commutateur important, mais si vous êtes un administrateur système, il peut être utile de connaître les statistiques détaillées de chaque sauvegarde, afin que vous puissiez surveiller la quantité de trafic envoyé sur votre réseau, etc.

--log-file

- Cela vous permet d’envoyer la sortie rsync dans un fichier journal. Nous le recommandons vivement pour les sauvegardes automatiques dans lesquelles vous n’êtes pas là pour lire vous-même le résultat. Donnez toujours une fois les fichiers journaux dans votre temps libre pour vous assurer que tout fonctionne correctement. En outre, c’est un commutateur crucial pour un administrateur système, vous ne devez donc pas vous demander comment vos sauvegardes ont échoué lorsque vous avez quitté l’internaute en charge.

Jetons un coup d’œil à notre commande rsync maintenant que nous avons ajouté quelques commutateurs supplémentaires:

rsync -avzhP --delete --stats --log-file=/home/geek/rsynclogs/backup.log --exclude-from '/home/geek/exclude.txt' -e 'ssh -p 12345' /home/geek/files/ [email protected]:/home/geek2/files/

La commande est encore assez simple, mais nous n’avons toujours pas créé de solution de sauvegarde décente. Même si nos fichiers se trouvent maintenant dans deux emplacements physiques différents, cette sauvegarde ne nous protège en rien contre l’une des principales causes de perte de données: l’erreur humaine.

Sauvegardes d'instantané

Si vous supprimez accidentellement un fichier, si un virus corrompt l'un de vos fichiers ou si quelque chose d'autre se produit, vos fichiers sont altérés de manière indésirable, puis vous exécutez votre script de sauvegarde rsync, vos données sauvegardées sont écrasées par les modifications indésirables. Lorsqu'une telle chose se produit (pas si, mais quand), votre solution de sauvegarde n'a rien fait pour vous protéger de votre perte de données.

Le créateur de rsync s’est rendu compte de cela et a ajouté le

--backup

et

--backup-dir

arguments afin que les utilisateurs puissent exécuter des sauvegardes différentielles. Le tout premier exemple sur le site Web de rsync montre un script dans lequel une sauvegarde complète est exécutée tous les sept jours, puis les modifications apportées à ces fichiers sont sauvegardées quotidiennement dans des répertoires distincts. Le problème avec cette méthode est que pour récupérer vos fichiers, vous devez les récupérer sept fois. De plus, la plupart des geeks exécutent leurs sauvegardes plusieurs fois par jour, vous pouvez donc facilement disposer de plus de 20 répertoires de sauvegarde différents à tout moment. Désormais, non seulement la récupération de vos fichiers est une tâche ardue, mais le simple fait de parcourir vos données sauvegardées peut prendre beaucoup de temps - vous devez connaître la dernière modification d’un fichier pour pouvoir retrouver la copie sauvegardée la plus récente. De plus, il n’est pas efficace de n’effectuer que des sauvegardes incrémentielles hebdomadaires (voire moins souvent dans certains cas).

Sauvegardes instantanées à la rescousse! Les sauvegardes instantanées ne sont rien de plus que des sauvegardes incrémentielles, mais elles utilisent des liens physiques pour conserver la structure de fichier de la source d'origine. Cela risque d’être difficile à comprendre au début, alors prenons un exemple.

Imaginez que nous ayons un script de sauvegarde en cours d'exécution qui sauvegarde automatiquement nos données toutes les deux heures. Chaque fois que rsync le fait, il nomme chaque sauvegarde au format suivant: Sauvegarde-mois-jour-année-heure.

Ainsi, à la fin d’une journée type, nous aurions une liste de dossiers dans notre répertoire de destination comme ceci:

Lorsque vous parcourez l’un de ces répertoires, vous voyez tous les fichiers du répertoire source exactement tels qu’ils étaient à ce moment-là. Cependant, il n'y aurait pas de doublons dans deux répertoires. rsync accomplit cela avec l’utilisation de hardlinking à travers le
Lorsque vous parcourez l’un de ces répertoires, vous voyez tous les fichiers du répertoire source exactement tels qu’ils étaient à ce moment-là. Cependant, il n'y aurait pas de doublons dans deux répertoires. rsync accomplit cela avec l’utilisation de hardlinking à travers le

--link-dest=DIR

argument.

Bien sûr, pour avoir ces noms de répertoires bien datés et bien datés, nous devrons renforcer un peu notre script rsync. Examinons ce qui serait nécessaire pour réaliser une solution de sauvegarde comme celle-ci, puis nous expliquerons le script plus en détail:

#!/bin/bash

#copy old time.txt to time2.txt

yes | cp ~/backup/time.txt ~/backup/time2.txt

#overwrite old time.txt file with new time

echo `date +”%F-%I%p”` > ~/backup/time.txt

#make the log file

echo “” > ~/backup/rsync-`date +”%F-%I%p”`.log

#rsync command

rsync -avzhPR --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r --delete --stats --log-file=~/backup/rsync-`date +”%F-%I%p”`.log --exclude-from '~/exclude.txt' --link-dest=/home/geek2/files/`cat ~/backup/time2.txt` -e 'ssh -p 12345' /home/geek/files/ [email protected]:/home/geek2/files/`date +”%F-%I%p”`/

#don’t forget to scp the log file and put it with the backup

scp -P 12345 ~/backup/rsync-`cat ~/backup/time.txt`.log [email protected]:/home/geek2/files/`cat ~/backup/time.txt`/rsync-`cat ~/backup/time.txt`.log

Ce serait un script de capture instantanée rsync typique. Au cas où nous vous perdrions quelque part, disséquons-les un par un:

La première ligne de notre script copie le contenu de time.txt dans time2.txt. Le tuyau oui consiste à confirmer que nous voulons écraser le fichier. Ensuite, nous prenons l'heure actuelle et la mettons dans time.txt. Ces fichiers seront utiles plus tard.

La ligne suivante crée le fichier journal rsync en l’appelant rsync-date.log (où date correspond à la date et à l’heure réelles).

Maintenant, la commande complexe rsync sur laquelle nous vous avons prévenu:

-avzhPR, -e, --delete, --stats, --log-file, --exclude-from, --link-dest

- Juste les interrupteurs dont nous avons parlé plus tôt; faites défiler vers le haut si vous avez besoin d'un rappel.

--chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r

- Ce sont les autorisations pour le répertoire de destination. Puisque nous créons ce répertoire au milieu de notre script rsync, nous devons spécifier les autorisations pour que notre utilisateur puisse y écrire des fichiers.

Utilisation des commandes de date et de chat

Nous allons passer en revue chaque utilisation des commandes date et cat dans la commande rsync, dans l’ordre dans lequel elles se produisent. Remarque: nous sommes conscients qu'il existe d'autres moyens d'accomplir cette fonctionnalité, notamment avec l'utilisation de la déclaration de variables, mais pour les besoins de ce guide, nous avons décidé d'utiliser cette méthode.

Le fichier journal est spécifié comme suit:

~/backup/rsync-`date +”%F-%I%p”`.log

Alternativement, nous aurions pu le spécifier comme suit:

~/backup/rsync-`cat ~/backup/time.txt`.log

De toute façon, le

--log-file

commande devrait pouvoir trouver le fichier journal daté créé précédemment et y écrire.

Le fichier de destination du lien est spécifié comme suit:

--link-dest=/home/geek2/files/`cat ~/backup/time2.txt`

Cela signifie que le

--link-dest

commande reçoit le répertoire de la sauvegarde précédente. Si nous exécutons des sauvegardes toutes les deux heures et qu’il est 16 h 00 au moment où nous avons exécuté ce script, la

--link-dest

La commande recherche le répertoire créé à 14h00 et ne transfère que les données modifiées (le cas échéant).

Pour rappel, c’est pourquoi time.txt est copié dans time2.txt au début du script, de sorte que

--link-dest

La commande peut faire référence à cette heure plus tard.

Le répertoire de destination est spécifié comme suit:

[email protected]:/home/geek2/files/`date +”%F-%I%p”`

Cette commande place simplement les fichiers source dans un répertoire portant le titre de la date et de l'heure actuelles.

Enfin, nous nous assurons qu'une copie du fichier journal est placée dans la sauvegarde.

scp -P 12345 ~/backup/rsync-`cat ~/backup/time.txt`.log [email protected]:/home/geek2/files/`cat ~/backup/time.txt`/rsync-`cat ~/backup/time.txt`.log

Nous utilisons une copie sécurisée sur le port 12345 pour prendre le journal rsync et le placer dans le répertoire approprié. Pour sélectionner le fichier journal correct et vous assurer qu'il se trouve au bon endroit, le fichier time.txt doit être référencé via la commande cat. Si vous vous demandez pourquoi nous avons décidé de modifier time.txt au lieu d'utiliser uniquement la commande date, c'est parce que beaucoup de temps aurait pu s'écouler lorsque la commande rsync était en cours d'exécution. Par conséquent, pour que le moment le document texte que nous avons créé précédemment.

Automatisation

Utilisez Cron sous Linux ou Planificateur de tâches sous Windows pour automatiser votre script rsync. Une chose à laquelle vous devez faire attention est de vous assurer que vous terminez tous les processus en cours d’exécution avant de continuer un nouveau. Le planificateur de tâches semble fermer automatiquement toutes les instances en cours d'exécution, mais pour Linux, vous devez faire preuve d'un peu plus de créativité.

La plupart des distributions Linux peuvent utiliser la commande pkill. Assurez-vous simplement d’ajouter ce qui suit au début de votre script rsync:

pkill -9 rsync

Cryptage

Non, nous n’avons pas encore fini. Nous disposons enfin d'une solution de sauvegarde fantastique (et gratuite!), Mais tous nos fichiers sont toujours susceptibles de vol. J'espère que vous sauvegardez vos fichiers à des centaines de kilomètres. Quel que soit le niveau de sécurité de ce lieu éloigné, le vol et le piratage informatique peuvent toujours poser problème.

Dans nos exemples, nous avons tunnellisé tout notre trafic rsync via SSH, ce qui signifie que tous nos fichiers sont cryptés lorsqu'ils sont en transit vers leur destination. Cependant, nous devons nous assurer que la destination est tout aussi sécurisée. Gardez à l'esprit que rsync crypte uniquement vos données lors de leur transfert, mais les fichiers sont largement ouverts une fois qu'ils ont atteint leur destination.

Une des meilleures fonctionnalités de rsync est qu’il ne transfère que les modifications apportées à chaque fichier. Si tous vos fichiers sont cryptés et que vous apportez une modification mineure, vous devrez retransmettre l'intégralité du fichier car le cryptage aura pour effet de rendre toutes les données aléatoires, après toute modification.

C’est pourquoi il est préférable d’utiliser un type de chiffrement de disque, tel que BitLocker pour Windows ou dm-crypt pour Linux. De cette façon, vos données sont protégées en cas de vol, mais les fichiers peuvent être transférés avec rsync et votre cryptage n’entravera pas ses performances. Il existe d'autres options disponibles qui fonctionnent de manière similaire à rsync ou même en implémentent, telles que Duplicity, mais elles manquent de certaines fonctionnalités offertes par rsync.

Une fois que vous avez configuré vos sauvegardes de capture instantanée hors site et chiffré vos disques durs source et cible, félicitez-vous pour maîtriser rsync et mettre en œuvre la solution de sauvegarde de données la plus fiable possible.

Conseillé: