Imaginons que vous vouliez sauvegarder vos données sur une machine distance accessible en SSH. Appelons cette machine ordi.domaine.net. et supposons que vous y disposiez d'un compte mdupont. La commande rsync permet très facilement de faire cela. Voici le code d'un script que j'utilise pour effectuer mes propres sauvegardes :
------------------------------------------------------------------------------
#!/bin/bash
------------------------------------------------------------------------------
#!/bin/bash
rsync -avz -R -e ssh --delete --delete-excluded /home/mdupont --exclude Music --exclude .gvfs --exclude Videos mdupont@ordi.domaine.net:/home/mdupont/backups/pcboulot/
------------------------------------------------------------------------------
------------------------------------------------------------------------------
Placez ce code dans un fichier que vous nommerez par exemple backup.sh et rendez ce fichier exécutable avec la commande chmod u+x backup.sh.
Si vous lancez ce script, rsync va effectuer une commade ssh (en fait plutôt un scp) sur la machine distante, et donc un mot de passe va être demandé pour l'utilisateur mdupont, ce qui peut être génant si vous souhaitez automatiser vos backups avec cron par exemple. La solution simple et sûre pour éviter cela est de copier la clef publique de mdupont dans son fichier ~/.ssh/authorized_keys sur la machine distante. Le -R va faire en sorte que les fichiers soient sauvés avec leur chemin complet.
Analysons maintenant la commande rsync donnée ci-dessus :
Si vous lancez ce script, rsync va effectuer une commade ssh (en fait plutôt un scp) sur la machine distante, et donc un mot de passe va être demandé pour l'utilisateur mdupont, ce qui peut être génant si vous souhaitez automatiser vos backups avec cron par exemple. La solution simple et sûre pour éviter cela est de copier la clef publique de mdupont dans son fichier ~/.ssh/authorized_keys sur la machine distante. Le -R va faire en sorte que les fichiers soient sauvés avec leur chemin complet.
Analysons maintenant la commande rsync donnée ci-dessus :
- L'option -a signie que l'on va effectuer la copie des données en mode "archive", ce qui veut dire que liens symboliques, les permissions, les ownerships, etc. seront conservés sur la destination du backup.
- L'option -v sert, comme d'habitude, à rendre la commande verbeuse.
- L'option -z est elle aussi très sympa puisque elle active la compression des données avant transfert, ce qui permet d'épargner de la bande passante et d'accélérer le backup.
- L'option --exclude permet d'indiquer le nom d'un fichier que l'on veut exclure de la sauvegarde. Remarquez que l'on peut mettre plusieurs exclude et que le nom du fichier exclu est relatif au répertoire source.
- Le --delete va avoir pour effet de supprimer sur la destination tout fichier absent de la source.
- Dans le même ordre d'idée, --delete-excluded va faire supprimer de la destination les fichiers exclus (voir option --exclude).
Remarquez aussi l'absence de "trailing slash" dans le nom de la source, ce qui précise que l'on veut copier le répertoire ainsi que son contenu. Si on ajoute un slash à la fin de la source, alors rsync ne copie que le contenu du répertoire, et pas le répertoire lui-même.
Et maintenant, la cerise sur le gâteau : automatisons l'exécution du script grâce à cron ! Pour cela, il faut lancer la commande :
crontab -u mdupont -e
Cette commande sert à éditer avec vi le crontab de l'utilisateur mdupont. Pour info, le résultat de cette commande sera la création d'un fichier /var/spool/cron/mdupont. Mettez la ligne suivante dans le crontab :
2 * * * * /home/mdupont/backup.sh >/home/mdupont/backup.log 2>&1
Cela aura pour effet de lancer le script de backup toutes les heures et 2 minutes et d'afficher le résultat dans un fichier log.
Voilà une bien longue explication, mais je n'ai fait que couvrir une partie de toutes les possibilités de rsync !
A bientôt !
Et maintenant, la cerise sur le gâteau : automatisons l'exécution du script grâce à cron ! Pour cela, il faut lancer la commande :
crontab -u mdupont -e
Cette commande sert à éditer avec vi le crontab de l'utilisateur mdupont. Pour info, le résultat de cette commande sera la création d'un fichier /var/spool/cron/mdupont. Mettez la ligne suivante dans le crontab :
2 * * * * /home/mdupont/backup.sh >/home/mdupont/backup.log 2>&1
Cela aura pour effet de lancer le script de backup toutes les heures et 2 minutes et d'afficher le résultat dans un fichier log.
Voilà une bien longue explication, mais je n'ai fait que couvrir une partie de toutes les possibilités de rsync !
A bientôt !

Aucun commentaire:
Enregistrer un commentaire