Page d'accueil » comment » 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

    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 en tant que solution unique pour tous leurs besoins de redondance de 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 tout au long de 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:

    Installer Vim:

    Installation de SSH:

    Après avoir sélectionné ces trois packages, continuez à 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 commutateurs avancés peut rapidement le rendre complexe..

    Disons que vous avez un tas de fichiers qui doivent être sauvegardés - qui ne le fait pas ces jours-ci? Vous branchez votre disque dur portable afin de pouvoir sauvegarder les fichiers de votre ordinateur et lancez la commande suivante:

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

    Ou, à quoi ça ressemblerait sur un ordinateur Windows avec Cygwin:

    rsync -a / cygdrive / c / fichiers / / cygdrive / e / fichiers /

    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 conserver 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 ( un 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 supprimerait les fichiers superflus de la destination qui n'existaient plus dans le répertoire source, générerait les noms de fichiers transférés afin que vous ayez une idée de ce qui se passait, et mettrait en tunnel 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; vous devriez déjà en savoir beaucoup à leur sujet si vous lisez ce tutoriel. Passons en revue d'autres commutateurs parfois ignorés mais incroyablement utiles:

    --le progrès - Ce commutateur nous permet de voir la progression du transfert de chaque fichier. Ceci est particulièrement utile lors du transfert de gros fichiers 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 --le progrès commutateur comme une sauvegarde est en cours:

    --partiel - Ceci est un autre commutateur particulièrement utile lors du transfert de gros fichiers 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 pire que d'avoir une panne de quelques secondes, un écran bleu ou une erreur humaine qui retarde le transfert de votre fichier et que vous devez tout recommencer à zéro.

    -P - cet interrupteur combine --le progrès et --partiel, alors utilisez-le à la place et cela rendra votre commande rsync un peu plus nette.

    -z ou --compresse - 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 courant 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 --lisible par l'homme - Si vous utilisez le --le progrès 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, de sorte que vous puissiez réellement comprendre la quantité de données transférées.

    -n ou --à sec - Ce commutateur est essentiel pour savoir quand vous écrivez votre script rsync et que vous le testez pour la première fois. Il effectue un essai mais n'effectue aucune modification. Les modifications éventuelles 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 --relatif - 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..

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

    --inclure-de - Semblable à --exclure de, mais il est lié à un fichier contenant des répertoires et des chemins de fichiers de données que vous voulez sauvegarder.

    --Statistiques - 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 le volume de trafic envoyé sur votre réseau et autres..

    --fichier journal - 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, de sorte que vous ne vous demandez plus comment vos sauvegardes ont échoué pendant que vous avez quitté l’intern 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: une 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 et vos données sauvegardées sont écrasées par 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’est rendu compte de cela et a ajouté le --sauvegarde et --répertoire de sauvegarde 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 avoir plus de 20 répertoires de sauvegarde différents à tout moment. La récupération de vos fichiers est non seulement 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 fois qu'un fichier a été modifié pour trouver sa copie sauvegardée la plus récente. En plus de tout cela, il est inefficace de ne lancer 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 peut être difficile à comprendre au début, alors jetons un coup d'œil à 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à. 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 de répertoires bien datés et bien datés, nous devrons renforcer un peu notre script rsync. Jetons un coup d'œil à 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 en time2.txt

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

    # overwrite ancien fichier time.txt avec nouvelle heure

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

    # faire le fichier journal

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

    commande #rsync

    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”' /

    # n'oubliez pas de scp le fichier journal et de le mettre avec la sauvegarde

    scp -P 12345 ~ / backup / rsync-'cat ~ / backup / time.txt'.log [email protected]: / home / geek2 / fichiers / '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 recyclage.

    --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

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

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

    De toute façon, le --fichier journal la commande devrait pouvoir trouver le fichier journal daté précédemment créé 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 commande cherche le répertoire créé à 14h00 et ne transfère que les données modifiées depuis (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 commande peut référencer 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 / fichiers / '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 rsync 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 faire preuve d'un peu plus de créativité..

    La plupart des distributions Linux peuvent utiliser la commande pkill. Veillez donc à ajouter les éléments suivants 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. Peu importe la sécurité de cet endroit é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 chiffre uniquement vos données lors de leur transfert, mais les fichiers sont largement ouverts une fois qu'ils ont atteint leur destination..

    L'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..

    Pour cette raison, il est préférable / 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 ne gênera pas ses performances. Il existe d'autres options disponibles qui fonctionnent de manière similaire à rsync ou même en implémenter, telles que Duplicity, mais elles manquent de certaines des fonctionnalités que rsync a à offrir.

    Une fois que vous avez configuré vos sauvegardes d'instantanés 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..