Serveur dédié : sauvegarde automatique des fichiers avec Backup Manager sur le serveur de sauvegarde OVH

Backup Manager permet d’effectuer des sauvegardes quotidiennes du système : il crée des archives dans plusieurs formats de compression (tar, gzip, bzip2, lzma, dar, zip) et peut les exporter vers un serveur FTP.

backup manager Serveur dédié : sauvegarde automatique des fichiers avec Backup Manager sur le serveur de sauvegarde OVH

Dans notre cas, nous allons l’installer et le configurer pour envoyer tout ce qui est important sur notre serveur sur le serveur FTP externe de sauvegarde fourni gratuitement par OVH (100 Go).

Etape 1 : installation de Backup Manager

C’est classique :

aptitude install backup-manager

A la fin de l’installation, un assistant se lance et vous permet de configurer des options par défaut. Ou vous pouvez configurer à la main, comme indiqué dans l’étape suivante.

Etape 2 : configuration de Backup Manager

nano /etc/backup-manager.conf

Par défaut, les archives sont placées dans /var/archives, le répertoire doit être détenu par l’utilisateur root afin que personne d’autre ne puisse en consulter le contenu :

# Where to store the archives
export BM_REPOSITORY_ROOT="/var/archives"

Les archives seront conservées 5 jours :

# Number of days we have to keep an archive (Time To Live)
export BM_ARCHIVE_TTL="5"

Méthode de compression à utiliser :

export BM_ARCHIVE_METHOD="tarball"
export BM_TARBALL_FILETYPE="tar.gz"

Les différents répertoires à sauvegarder : /etc contient les fichiers de configuration des services serveur, /home les données des sites et /var/lib/mysql les bases de données :

# Paths without spaces in their name:
export BM_TARBALL_DIRECTORIES="/etc /home /var/lib/mysql"

Ensuite, on renseigne l’utilisateur MySQL dédié aux sauvegardes :

# The user who is allowed to read every databases filled in BM_MYSQL_DATABASES
export BM_MYSQL_ADMINLOGIN="backupuser"
 
# its password
export BM_MYSQL_ADMINPASS="backuppwd"

Enfin, on s’occupe de la manière dont on traite nos fichiers de sauvegarde. Dans notre cas, nous les uploadons sur le serveur FTP de sauvegarde OVH donc :

export BM_UPLOAD_METHOD="ftp"

Et plus bas :

# the user to use for the FTP connections/transfers
export BM_UPLOAD_FTP_USER="ksXXXXXXX.kimsufi.com"
 
# the FTP user's password
export BM_UPLOAD_FTP_PASSWORD="FTP-PASSWORD"
 
# FTP specific remote hosts
export BM_UPLOAD_FTP_HOSTS="ftpback-XXXX-XXXX.ovh.net"
 
# purge archives on remote hosts before uploading?
export BM_UPLOAD_FTP_PURGE="true"
 
# You can specify a time to live for archives uploaded with FTP
# This can let you use different ttl's locally and remotely
# By default, BM_ARCHIVE_TTL will be used.
export BM_UPLOAD_FTP_TTL="5"
 
# destination for FTP uploads (overrides BM_UPLOAD_DESTINATION)
export BM_UPLOAD_FTP_DESTINATION="/"

Allez maintenant au bas du fichier. Nous allons exécuter un script PHP à la fin de chaque sauvegarde qui nous avertira par email du bon déroulement de la sauvegarde :

# Enter here some shell script.
# It will be executed after the last action of backup-manager.
export BM_POST_BACKUP_COMMAND="/etc/backup-manager-email"

Sauvegardez le fichier et retournez dans le shell, la configuration est terminée.

Etape 3 : création du script PHP qui envoie un mail après la sauvegarde

On crée le fichier précedemment renseigné :

nano /etc/backup-manager-email

Et on y ajoute :

#!/usr/bin/php
 
<?php
$dest = array('ADMIN@EXAMPLE.COM');
$archives = '/var/archives';
 
$host = trim(file_get_contents('/etc/hostname'));
clearstatcache();
$dir = opendir($archives);
 
if($dir) {
        while(false !== ($filename = readdir($dir))) {
                if($filename[0]!='.' && preg_match('/'.date('Ymd').'/',$filename)) {
                        $thefile = $archives.'/'.$filename;
                        $size = exec("ls -l '".$thefile."' | awk '{print $5}'");
                        if($size > 0) {
                                $pagetext.= $filename." (".round($size/1000000000,2)." Go)\n";
                        } else {
                                $pagetext.= $filename." (? Go)\n";
                        }
                        $totalsize += $size;
                }
        }
        $pagetext .= "\nTotal : ".round($totalsize/1000000000,2)." Go\n";
}
 
foreach($dest as $d) {
        mail($d,'['.$host.'] Backup OK',$pagetext);
}
?>
N’oubliez pas de modifier l’adresse email au début du script PHP !

Il ne vous reste plus qu’à rendre le script exécutable avec :

chmod +x /etc/backup-manager-email

Etape 4 : création d’une tâche cron pour automatiser les sauvegardes

Il ne nous reste plus qu’à automatiser tout cela, en utilisant CRON bien sûr. Lancez la commande suivante, qui crée le fichier /etc/backup-manager.sh :

cat << EOF > /etc/backup-manager.sh && chmod 700 /etc/backup-manager.sh
#!/bin/sh
test -x /usr/sbin/backup-manager || exit 0
/usr/sbin/backup-manager
EOF

Ensuite, éditez le crontab pour y ajouter votre ficher backup-manager.sh :

crontab -e

puis insérez la ligne :

0 5 * * * /etc/backup-manager.sh

Vos données seront alors sauvegardées chaque matin à 5h.

Conclusion

Voilà, vous êtes parés : toutes les données vitales du serveur sont maintenant sauvegardées automatiquement sur le serveur de sauvegarde OVH.

Il ne vous reste plus qu’à vous connecter sur le serveur de sauvegarde via le serveur et vérifier que les fichiers sont effectivement uploadés. Un pas de plus vers la redondance/intégrité des données.


quick-menu

Laisser un commentaire


Si vous possédez un compte, connectez-vous.

Quicktags: THINK. Then write. No SMS.

Me tenir informé(e) des futurs commentaires. Ou abonnez-vous sans commenter.