ds210j
En quelques semaines, le disque dur de mon pwG4 est passé en mode casserole et les pistons de ma 306 ont gaufrés leurs soupapes - #fail
J'ai regardé mon vieux serveur de backup... prise de conscience... et achat rapide d'un petit NAS[1].

Pas convaincu par la wonderful ajax webadmin de synology, j'ai préféré une solution de backup incrémental avec rsnapshot. L'occasion de poster un billet éclair.

rsnapshot


rsnapshot, basé sur rsync, permet de prendre des instantanés d'un système de fichiers à un moment T. Il créé l'illusion de multiples sauvegardes complètes mais n'occupe, en réalité, qu'une seule sauvegarde accompagnée des incréments.

Facile à mettre en place, c'est une solution plutôt souple et efficace pour garantir l'intégrité des sites Web versatiles.

Installation et configuration

Quelques scripts perl à télécharger et le tour est presque joué.
Tuning du fichier de conf. /etc/rsnapshot.conf :

On spéc. la racine du répertoire de backup :

# All snapshots will be stored under this root directory.
snapshot_root   /mnt/backup

On spéc. les snapshots, ici :
2 par jour
7 jours sur 7
1 par semaine
et les 3 derniers mois

#########################################
#           BACKUP INTERVALS            #
# Must be unique and in ascending order #
# i.e. hourly, daily, weekly, etc.      #
#########################################

interval        hourly  2
interval        daily   7
interval        weekly  4
interval        monthly 3

On en profite pour exclure les lourdos :

# The include_file and exclude_file parameters, if enabled, simply get
# passed directly to rsync. Please look up the --include-from and
# --exclude-from options in the rsync man page for more details.
#
#include_file   /path/to/include/file
exclude_file    /mnt/backup/exclude

Avec dans /mnt/backup/exclude des trucs du genre :

cache/

Pour être cohérent avec le précédent billet sur l'accès sécurisé au serveur on spéc. le port :

ssh_args        -p 10068

Enfin, le coeur, on spéc. l'adresse du distant et le lien relatif sur le local :

# EXAMPLE.COM
#backup root@example.com:/etc/  example.com/
backup  particul@88.191.38.139:/www/ particul.es/

Pour les pépins de passphrase et d'authentification par clé : La-Nuit-des-morts-vivants

Test et automatisation

Pour tester la validité du fichier de config :

.-$ rsnapshot configtest

Pour tirer à blanc :

rsnapshot -t hourly

Reste plus qu'à croner :

.-$ sudo crontab -e 

0 */12 * * * /usr/local/bin/rsnapshot hourly
50 3 * * *  /usr/local/bin/rsnapshot daily
40 2 * * 6  /usr/local/bin/rsnapshot weekly
30 1 1 * *  /usr/local/bin/rsnapshot monthly

Résultat

Nous disposons de snapshots où les sauvegardes sont stockées. Les dossiers sont créés pour les différents intervalles qui ont été définis. Après quelques mois, le dossier de backup devrait ressembler à çà :

.-$ rsnapshot du particul.es/
5.2G    /.snapshots/hourly.0/particul.es/
5.4M    /.snapshots/hourly.1/particul.es/
5.4M    /.snapshots/daily.0/particul.es/
728M    /.snapshots/daily.1/particul.es/
4.8M    /.snapshots/daily.2/particul.es/
4.8M    /.snapshots/daily.3/particul.es/
6.2M    /.snapshots/daily.4/particul.es/
4.8M    /.snapshots/daily.5/particul.es/
4.8M    /.snapshots/daily.6/particul.es/
12M     /.snapshots/weekly.0/particul.es/
5.3M    /.snapshots/weekly.1/particul.es/
5.4M    /.snapshots/weekly.2/particul.es/
4.9M    /.snapshots/weekly.3/particul.es/
4.8M    /.snapshots/monthly.0/particul.es/
120M     /.snapshots/monthly.1/particul.es/
5.3M    /.snapshots/monthly.2/particul.es/
6.0G    total

Sauvegarde SQL

Ne pas oublier de sauvegarder la BD du site, une petit ajout dans le fichier de conf :

$.- vi /etc/rsnapshot.conf

backup_script ssh particul@88.191.38.139 mysqldump -u particul --password=s|<1llz --quick --single-transaction particul | /bin/gzip >| ./mysqldump.gz

Conclusion

Quelques liens devraient suffire pour clôturer le post...

Rsnapshot est très largement inspiré de l'article de Mike Rubel
Un petit livre pour aller plus loin.

See ya !!!