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 peuvent vous surprendre. Dans cet article, nous allons montrer comment même les plus grands stockeurs de données et les passionnés de sauvegarde peuvent utiliser rsync comme une solution unique pour tous leurs besoins de redondance des données.

Avertissement: Advanced Geeks Only

Si vous êtes assis là à penser « Qu’est-ce que c’est que rsync? » ou « Je n’utilise rsync que pour des tâches vraiment simples », vous voudrez peut-être consulter notre article précédent sur la façon d’utiliser rsync pour sauvegarder vos données sous Linux, qui donne une introduction à rsync, vous guide tout au long de l’installation et présente ses éléments les plus élémentaires les fonctions. Une fois que vous avez une bonne compréhension de 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écution de rsync sur Windows

Tout d’abord, mettons 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’y a 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, alors rendez-vous sur 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’à ce que vous arriviez à l’écran «Sélectionner les packages».

Maintenant, vous devez faire les mêmes étapes pour Vim et SSH, mais les packages vont être un peu différents lorsque vous allez les sélectionner, voici donc quelques captures d’écran:

Installation de Vim:

Installation de SSH:

Une fois que vous avez sélectionné ces trois packages, cliquez 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: simples à avancées

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

Supposons que vous ayez un tas de fichiers à sauvegarder – qui ne le fait pas de nos jours? Vous branchez votre disque dur portable pour pouvoir sauvegarder les fichiers de votre ordinateur et émettez la commande suivante:

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

Ou, à quoi cela ressemblerait 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, car vous pouvez simplement faire glisser et déposer les fichiers. Cependant, si votre autre disque dur contient déjà certains fichiers et a juste besoin des versions mises à jour ainsi que des fichiers créés depuis la dernière synchronisation, cette commande est pratique car elle n’envoie que les nouvelles données au disque dur. Avec les gros fichiers, et surtout le transfert de fichiers sur Internet, c’est un gros problème.

Sauvegarder vos fichiers sur un disque dur externe, puis conserver le disque dur au même emplacement que votre ordinateur est une très mauvaise idée, alors examinons ce qu’il faudrait pour commencer à envoyer vos fichiers sur Internet vers un autre ordinateur ( celui que vous avez loué, un membre de votre famille, etc.).

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

La commande ci-dessus enverrait vos fichiers à un autre ordinateur avec une adresse IP de 10.1.1.1. Il supprimerait les fichiers superflus de la destination qui n’existent plus dans le répertoire source, produirait les noms de fichiers en cours de transfert afin que vous ayez une idée de ce qui se passe, et tunneler rsync via SSH sur le port 12345.

le -a -v -e --delete les commutateurs sont parmi les plus basiques et les plus couramment utilisés; vous devriez déjà en savoir beaucoup à leur sujet si vous lisez ce didacticiel. Passons en revue certains autres commutateurs qui sont 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 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 basculer lorsqu’une sauvegarde est en cours:

--partial – Il s’agit d’un autre commutateur particulièrement utile lors du transfert de fichiers volumineux sur Internet. Si rsync est interrompu pour une raison quelconque au milieu 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’était arrêté une fois que la commande rsync est à nouveau exécutée. Lors du transfert de fichiers volumineux sur Internet (par exemple, quelques gigaoctets), rien de pire que d’avoir une interruption de quelques secondes sur Internet, un écran bleu ou une erreur humaine déclenche votre transfert de fichiers et doit recommencer.

-P – ce commutateur combine --progress et --partial, utilisez-le à la place et cela rendra votre commande rsync un peu plus nette.

-z ou --compress – Ce commutateur permet à rsync de compresser les données du fichier lors de leur transfert, ce qui réduit la quantité de données à envoyer à la destination. Il s’agit en fait d’un commutateur assez courant mais loin d’être essentiel, il ne vous est vraiment bénéfique que pour les transferts entre connexions lentes, et il 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 commutateur, vous voudrez certainement utiliser celui-ci également. Autrement dit, sauf si vous souhaitez convertir des octets en mégaoctets à la volée. le -h Le commutateur convertit tous les nombres sortis dans un format lisible par l’homme, afin que vous puissiez réellement 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 pour la première fois. Il effectue un essai, mais n’apporte aucune modification – les modifications potentielles sont toujours générées normalement, vous pouvez donc tout lire et vous assurer que tout semble correct 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 loin dans ce guide afin de 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 a juste besoin d’un fichier texte brut avec un répertoire ou un chemin de fichier sur chaque ligne.

--include-from – Semblable à --exclude-from, mais il établit un lien vers un fichier qui contient des répertoires et des chemins de fichiers de données que vous souhaitez sauvegarder.

--stats – 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, juste pour pouvoir surveiller la quantité de trafic envoyée sur votre réseau et autres.

--log-file – Cela vous permet d’envoyer la sortie rsync vers un fichier journal. Nous vous le recommandons vivement pour les sauvegardes automatisées dans lesquelles vous n’êtes pas là pour lire la sortie vous-même. Donnez toujours une fois aux fichiers journaux pendant votre temps libre pour vous assurer que tout fonctionne correctement. En outre, c’est un commutateur crucial pour un administrateur système à utiliser, donc vous ne vous demandez pas comment vos sauvegardes ont échoué pendant que vous laissiez le stagiaire en charge.

Jetons un œil à notre commande rsync maintenant que nous avons ajouté quelques commutateurs:

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 toujours assez simple, mais nous n’avons toujours pas créé de solution de sauvegarde décente. Même si nos fichiers se trouvent désormais dans deux emplacements physiques différents, cette sauvegarde ne fait rien pour nous protéger contre l’une des principales causes de perte de données: l’erreur humaine.

Sauvegardes d’instantanés

Si vous supprimez accidentellement un fichier, un virus corrompt l’un de vos fichiers, ou quelque chose d’autre se produit par lequel vos fichiers sont modifiés de manière indésirable, puis vous exécutez votre script de sauvegarde rsync, vos données sauvegardées sont écrasées avec les modifications indésirables. Quand 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’en est rendu compte 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 efficacement sept fois différents. De plus, la plupart des geeks exécutent leurs sauvegardes plusieurs fois par jour, vous pouvez donc facilement avoir plus de 20 répertoires de sauvegarde différents à tout moment. Non seulement la récupération de vos fichiers est maintenant une tâche difficile, mais même le simple fait de parcourir vos données sauvegardées peut prendre beaucoup de temps – vous devez savoir la dernière fois qu’un fichier a été modifié afin de trouver sa copie la plus récente sauvegardée. De plus, il est inefficace d’exécuter uniquement des sauvegardes incrémentielles hebdomadaires (ou encore moins souvent dans certains cas).

Sauvegardes instantanées à la rescousse! Les sauvegardes de clichés ne sont rien de plus que des sauvegardes incrémentielles, mais elles utilisent des liens physiques pour conserver la structure de fichiers de la source d’origine. Cela peut être difficile d’envelopper votre tête au début, alors jetons un coup d’œil à un exemple.

Imaginez que nous avons 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: Sauvegarde mois-jour-année-heure.

Donc, à la fin d’une journée typique, 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 à l’époque. Pourtant, 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 d’annuaire joliment et soigneusement datés, nous allons devoir renforcer un peu notre script rsync. Voyons ce qu’il faudrait 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 rsync d’instantané typique. Au cas où nous vous aurions perdu quelque part, disséquons-le morceau par morceau:

La première ligne de notre script copie le contenu de time.txt dans time2.txt. La pipe oui est pour confirmer que nous voulons écraser le fichier. Ensuite, nous prenons l’heure actuelle et la mettons dans time.txt. Ces fichiers vous seront utiles ultérieurement.

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

Maintenant, la commande rsync complexe dont nous vous avons averti:

-avzhPR, -e, --delete, --stats, --log-file, --exclude-from, --link-dest – Juste les commutateurs 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 afin que notre utilisateur puisse y écrire des fichiers.

L’utilisation des commandes date et cat

Nous allons passer en revue chaque utilisation des commandes date et cat dans la commande rsync, dans l’ordre où elles se produisent. Remarque: nous savons qu’il existe d’autres façons d’accomplir cette fonctionnalité, en particulier avec l’utilisation de déclarations 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:

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

De toute façon, le --log-file La commande doit 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 La 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, alors le --link-dest La commande recherche le répertoire créé à 14h00 et transfère uniquement les données qui ont changé depuis (le cas échéant).

Pour réitérer, c’est pourquoi time.txt est copié dans time2.txt au début du script, donc le --link-dest La commande peut référencer ce moment plus tard.

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

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

Cette commande place simplement les fichiers source dans un répertoire qui a un 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 retrouve 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 cat time.txt au lieu d’utiliser simplement la commande date, c’est parce que beaucoup de temps aurait pu s’écouler pendant que la commande rsync était en cours d’exécution, donc pour nous assurer d’avoir le bon moment, nous cat le document texte que nous avons créé plus tôt.

Automatisation

Utilisez Cron sous Linux ou le Planificateur de tâches sous Windows pour automatiser votre script rsync. Une chose à laquelle vous devez faire attention est de vous assurer de mettre fin à tous les processus rsync en cours d’exécution avant d’en poursuivre un nouveau. Le Planificateur de tâches semble fermer automatiquement toutes les instances déjà en cours d’exécution, mais pour Linux, vous devrez être un peu plus créatif.

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

pkill -9 rsync

Chiffrement

Non, nous n’avons pas encore fini. Nous avons enfin une solution de sauvegarde fantastique (et gratuite!) En place, mais tous nos fichiers sont toujours sujets au vol. Nous espérons que vous sauvegardez vos fichiers à des centaines de kilomètres. Peu importe la sécurité de cet endroit lointain, le vol et le piratage peuvent toujours être des problèmes.

Dans nos exemples, nous avons tunnelé tout notre trafic rsync via SSH, ce qui signifie que tous nos fichiers sont cryptés pendant le transit vers leur destination. Cependant, nous devons nous assurer que la destination est tout aussi sûre. Gardez à l’esprit que rsync ne crypte vos données que lors de leur transfert, mais les fichiers sont grands ouverts une fois qu’ils ont atteint leur destination.

L’une des meilleures fonctionnalités de rsync est qu’il transfère uniquement les modifications dans chaque fichier. Si vous avez tous vos fichiers cryptés et apportez une modification mineure, le fichier entier devra être retransmis à la suite du cryptage randomisant complètement toutes les données après toute modification.

Pour cette raison, il est préférable / plus simple 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 une forme, comme Duplicity, mais elles manquent de certaines des fonctionnalités que rsync a à offrir.

Après avoir configuré vos sauvegardes instantanées à un emplacement hors site et chiffré vos disques durs source et de destination, donnez-vous une tape dans le dos pour maîtriser rsync et mettre en œuvre la solution de sauvegarde de données la plus infaillible possible.

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici