[Sysadmin] CurlFTPfs + Rsnaphsot = Backup de ma dedibox !

[Sysadmin] CurlFTPfs + Rsnaphsot = Backup de ma dedibox !

Mon site est hébergé sur une Dedibox V3. Afin d’avoir des sauvegardes régulières j’ai décidé de mettre en place l’espace FTP de 10Go offert avec la Dedibox et une solution de backup éprouvé qui nous sert quotidiennement au bureau.

La recette pour faire ma sauvegarde est donc simple.

Ingrédients.

  • CurlFTPfs afin de monter un espace FTP sur votre filesystem.
  • Rsnapshot, un très bon outil de backup.
  • Un petit script de backup MySQL pour les bases de données.

Préparation.


Mon serveur est sous Ubuntu, il vous faudra adapter les commandes shell à votre distribution si nécessaire.

On s’assure que l’espace FTP est bien accessible. Ensuite on install CurlFTPfs et on monte notre espace FTP dans /backup/.

root@sd-XXXXX:/# aptitude install curlftpfs
root@sd-XXXXX:/# mkdir /backup
root@sd-XXXXX:/# vim /etc/fstab
--
curlftpfs#myuser:mypassword@dedibackup-bzn.online.net/ /backup fuse allow_other  0   1
--
root@sd-XXXXX:/# mount -a
root@sd-XXXXX:/# df -h
Sys. de fichiers            Tail. Occ. Disp. %Occ. Monté sur
/dev/sda2             146G   18G  121G  13% /
none                  987M  164K  987M   1% /dev
none                  991M  740K  990M   1% /dev/shm
none                  991M  124K  991M   1% /var/run
none                  991M     0  991M   0% /var/lock
none                  991M     0  991M   0% /lib/init/rw
none                  146G   18G  121G  13% /var/lib/ureadahead/debugfs
/dev/sda1             190M   39M  142M  22% /boot
curlftpfs#ftp://myuser:mypassword@dedibackup-bzn.online.net/
                      7,5T     0  7,5T   0% /backup

On peut voir que visiblement le serveur FTP dispose de 7,5 To d’espace disque … au total pas juste pour moi 🙂

On passe maintenant à l’installation de Rsnapshot.

root@sd-XXXXX:/# aptitude install rsnapshot
root@sd-XXXXX:/# vim /etc/rsnapshot.conf
--
# Je ne présente ici que les lignes différentes de la config par défaut.
# Je vais d'abord faire mes backups en local et je ne pousserai sur le FTP que certaines choses (vu que je suis limité à 10Go)
# On utilisera la commande cmd_postexec pour mettre en place un script qui ira copier notre backup déporté.
snapshot_root   /data/backup/
[...]
cmd_postexec    /usr/local/libexec/snapshot_postexec.sh
[...]
backup  /etc/           localhost/
backup  /usr/local/libexec      localhost/
backup  /var/www        localhost/
backup_script           /usr/local/libexec/backup_mysql.sh        localhost/sql/
--

Nous avons donc besoin de deux scripts, un pour sauvegarder les bases de données, l’autre pour faire un beau tgz du snapshot vers l’espace ftp.

root@sd-XXXXX:/# vim /usr/local/libexec/backup_mysql.sh
--
#!/bin/sh

MYSQL_SERVER=localhost
MYSQL_USER=user
MYSQL_PASSWORD=password

MYSQLDUMP=/usr/bin/mysqldump
MYSQL=/usr/bin/mysql
GZIP=/bin/gzip

$MYSQL -h $MYSQL_SERVER -u $MYSQL_USER -p$MYSQL_PASSWORD -qse 'show databases' |
while read db
do
        $MYSQLDUMP -h $MYSQL_SERVER -u $MYSQL_USER -p$MYSQL_PASSWORD $db >localhost_$db.sql
        $GZIP localhost_$db.sql
        /bin/chmod 600 localhost_$db.sql.gz
done
root@sd-XXXXX:/# vim /usr/local/libexec/snapshot_postexec.sh
--
#!/bin/sh

cd /data/backup/daily.0/localhost/ && tar czpf /backup/backup.tgz ./* && cd -

Il ne nous reste plus qu’à “cronner” le snapshot pour qu’il tourne de manière quotidienne.

root@sd-XXXXX:/# vim /etc/cron.d/rsnapshot
--
# This is a sample cron file for rsnapshot.
# The values used correspond to the examples in /etc/rsnapshot.conf.
# There you can also set the backup points and many other things.
#
# To activate this cron file you have to uncomment the lines below.
# Feel free to adapt it to your needs.

# 0 */4         * * *           root    /usr/bin/rsnapshot hourly
 30 3   * * *           root    /usr/bin/rsnapshot daily
# 0  3          * * 1           root    /usr/bin/rsnapshot weekly
# 30 2          1 * *           root    /usr/bin/rsnapshot monthly

Dans cette configuration nous aurons donc :

  • 7 snapshots en local pour avoir 7 jours d’historique
  • le dernier snapshot externalisé sur l’espace de sauvegarde FTP

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.