27Jun
rsync est un protocole construit pour les systèmes de type Unix qui offre une polyvalence incroyable pour la sauvegarde et la synchronisation des données. Il peut être utilisé localement pour sauvegarder des fichiers dans différents répertoires ou peut être configuré pour être synchronisé sur Internet avec d'autres hôtes.
Il peut être utilisé sur les systèmes Windows mais n'est disponible que via différents ports( comme Cygwin), donc dans ce tutoriel, nous parlerons de la configuration sous Linux. Premièrement, nous devons installer / mettre à jour le client rsync. Sur les distributions Red Hat, la commande est "yum install rsync" et sur Debian c'est "sudo apt-get install rsync".
La commande sur Red Hat / CentOS, après s'être connectée en tant que root( notez que certaines distributions récentes de Red Hatsoutenir la méthode sudo).
La commande sur Debian / Ubuntu.
Utilisation de rsync pour les sauvegardes locales
Dans la première partie de ce didacticiel, nous allons sauvegarder les fichiers de Directory1 vers Directory2.Ces deux répertoires sont sur le même disque dur, mais cela fonctionnerait exactement la même chose si les répertoires existaient sur deux lecteurs différents. Nous pouvons aborder cette question de plusieurs façons, en fonction du type de sauvegarde que vous souhaitez configurer. Dans la plupart des cas, la ligne de code suivante suffira:
$ rsync -av --delete /Directory1/ /Directory2/
Le code ci-dessus synchronisera le contenu de Directory1 vers Directory2, et ne laissera aucune différence entre les deux. Si rsync trouve que Directory2 a un fichier que Directory1 ne le fait pas, il le supprimera. Si rsync trouve un fichier qui a été modifié, créé ou supprimé dans Directory1, il reflète les mêmes modifications apportées à Directory2.
Il y a beaucoup de différents commutateurs que vous pouvez utiliser pour rsync pour le personnaliser selon vos besoins spécifiques. Voici ce que le code mentionné ci-dessus dit à rsync pour faire les sauvegardes:
1. -a = récursif( recurse dans les répertoires), liens( copier les liens symboliques comme symlinks), perms( conserver les permissions), times( préserver les temps de modification), group( préserver le groupe), propriétaire( conserver le propriétaire), conserver les fichiers de périphériques et conserver les fichiers spéciaux.
2. -v = verbeux. La raison pour laquelle je pense que le verbeux est important est que vous pouvez voir exactement ce que rsync sauvegarde. Pensez à ceci: Que se passe-t-il si votre disque dur va mal, et commence à supprimer des fichiers à votre insu, alors vous exécutez votre script rsync et il pousse ces changements à vos sauvegardes, supprimant ainsi toutes les instances d'un fichier que vous ne voulez pasdébarrassé de?
3. -delete = Ceci indique à rsync de supprimer tous les fichiers de Directory2 qui ne sont pas dans Directory1.Si vous choisissez d'utiliser cette option, je recommande également d'utiliser les options verbose, pour les raisons mentionnées ci-dessus.
En utilisant le script ci-dessus, voici la sortie générée en utilisant rsync pour sauvegarder Directory1 dans Directory2.Notez que sans le commutateur verbeux, vous ne recevrez pas de telles informations détaillées.
La capture d'écran ci-dessus nous indique que File1.txt et File2.jpg ont été détectés comme étant nouveaux ou modifiés par rapport aux copies existantes dans Directory2, et ont donc été sauvegardés. Astuce Noob: Notez les barres obliques à la fin des répertoires dans ma commande rsync - celles-ci sont nécessaires, assurez-vous de vous en souvenir.
Nous allons passer en revue quelques options plus pratiques vers la fin de ce tutoriel, mais n'oubliez pas que pour voir une liste complète, vous pouvez taper "man rsync" et afficher la liste complète des commutateurs à utiliser.
Cela couvre à peu près autant les sauvegardes locales. Comme vous pouvez le constater, rsync est très facile à utiliser. Cela devient un peu plus complexe lorsque vous l'utilisez pour synchroniser des données avec un hôte externe sur Internet, mais nous allons vous montrer une façon simple, rapide et sécurisée de le faire.
Utilisation de rsync pour les sauvegardes externes
rsync peut être configuré de différentes manières pour les sauvegardes externes, mais nous allons passer en revue la méthode la plus pratique( aussi la plus simple et la plus sûre) de tunneling rsync via SSH.La plupart des serveurs et même de nombreux clients ont déjà SSH, et il peut être utilisé pour vos sauvegardes rsync. Nous allons vous montrer le processus de sauvegarde d'une machine Linux sur une autre sur un réseau local. Le processus serait exactement le même si un hôte était sur Internet quelque part, notez simplement que le port 22( ou tout port sur lequel vous avez configuré SSH), devrait être transféré sur n'importe quel équipement réseau du côté du serveur.
Sur le serveur( l'ordinateur qui recevra les sauvegardes), assurez-vous que SSH et rsync sont installés.
# yum -y installer ssh rsync
# sudo apt-get installer ssh rsync
En plus d'installer SSH et rsync sur le serveur, tout ce qui doit vraiment être fait est de configurer les dépôts sur le serveur où vous voulez sauvegarder les fichierset assurez-vous que SSH est verrouillé.Assurez-vous que l'utilisateur que vous prévoyez d'utiliser possède un mot de passe complexe, et il peut également être judicieux de changer le port sur lequel écoute SSH( 22 par défaut).
Nous allons exécuter la même commande que celle que nous avons faite pour utiliser rsync sur un ordinateur local, mais inclure les ajouts nécessaires pour le tunneling de rsync via SSH vers un serveur sur mon réseau local. Pour l'utilisateur "geek" se connectant à "192.168.235.137" et en utilisant les mêmes commutateurs que ci-dessus( -av -delete), nous allons exécuter ce qui suit:
$ rsync -av -delete -e ssh /Directory1/ [email protected]: /Directory2/
Sivous avez SSH écoute sur un port autre que 22, vous devrez spécifier le numéro de port, comme dans cet exemple où j'utilise le port 12345:
$ rsync -av -delete -e 'ssh -p 12345' /Directory1/ [email protected]: /Directory2/
Comme vous pouvez le voir sur la capture d'écran ci-dessus, la sortie donnée lors de la sauvegarde sur le réseau est sensiblement la même que lors d'une sauvegarde locale, la seule chose qui change est la commande que vous utilisez. Notez également qu'il a demandé un mot de passe. Ceci est de s'authentifier avec SSH.Vous pouvez configurer des clés RSA pour ignorer ce processus, ce qui simplifiera également l'automatisation de rsync.
Automatisation des sauvegardes rsync
Cron peut être utilisé sous Linux pour automatiser l'exécution de commandes, telles que rsync. En utilisant Cron, nous pouvons faire en sorte que notre système Linux effectue des sauvegardes nocturnes, ou même si vous voudriez les faire fonctionner.
Pour éditer le fichier table cron pour l'utilisateur auquel vous êtes connecté, exécutez:
$ crontab -e
Vous devez vous familiariser avec vi pour pouvoir éditer ce fichier. Tapez "I" pour insérer, puis commencez à modifier le fichier de table cron.
Cron utilise la syntaxe suivante: minute de l'heure, heure du jour, jour du mois, mois de l'année, jour de la semaine, commande.
Cela peut être un peu déroutant au début, alors laissez-moi vous donner un exemple. La commande suivante exécutera la commande rsync tous les soirs à 22h00:
0 22 * * * rsync -av --delete /Directory1/ /Directory2/
Le premier "0" spécifie la minute de l'heure, et "22" indique 22 heures. Puisque nous voulons que cette commande s'exécute quotidiennement, nous laisserons le reste des champs avec des astérisques, puis nous collerons la commande rsync.
Une fois la configuration de Cron terminée, appuyez sur Échap, puis tapez ": wq"( sans les guillemets) et appuyez sur Entrée. Cela sauvegardera vos changements dans vi.
Cron peut obtenir beaucoup plus de profondeur que cela, mais aller à ce sujet serait au-delà de la portée de ce tutoriel. La plupart des gens voudront simplement une sauvegarde hebdomadaire ou quotidienne simple, et ce que nous avons montré vous pouvez facilement accomplir cela. Pour plus d'informations sur Cron, veuillez consulter les pages man.
Autres fonctions utiles
Une autre chose utile que vous pouvez faire est de mettre vos sauvegardes dans un fichier zip. Vous devrez spécifier où vous souhaitez placer le fichier zip, puis rsync ce répertoire dans votre répertoire de sauvegarde. Par exemple:
$ zip /ZippedFiles/ archive.zip /Directory1/ & &rsync -av --delete /ZippedFiles/ /Directory2/
La commande ci-dessus prend les fichiers de Directory1, les place dans /ZippedFiles/ archive.zip, puis rsyncifie ce répertoire dans Directory2.Au départ, vous pouvez penser que cette méthode s'avérera inefficace pour les sauvegardes volumineuses, étant donné que le fichier zip changera chaque fois que la moindre modification est apportée à un fichier. Cependant, rsync ne transfère que les données modifiées, donc si votre fichier zip est de 10 Go, puis que vous ajoutez un fichier texte à Directory1, rsync saura que tout est bien ajouté( même si c'est dans un zip) et ne transférera que les quelques kilo-octetsde données modifiées.
Il existe plusieurs façons de chiffrer vos sauvegardes rsync. La méthode la plus simple consiste à installer le chiffrement sur le disque dur lui-même( celui sur lequel vos fichiers sont sauvegardés).Une autre solution consiste à chiffrer vos fichiers avant de les envoyer à un serveur distant( ou à un autre disque dur, quoi que vous soyez en train de sauvegarder).Nous aborderons ces méthodes dans des articles ultérieurs.
Quelles que soient les options et fonctionnalités que vous choisissez, rsync s'avère être l'un des outils de sauvegarde les plus efficaces et les plus polyvalents à ce jour, et même un simple script rsync peut vous éviter de perdre vos données.