Vous êtes ici : Accueil / Debian GNU/Linux / Système / Logiciels / Installer et configurer Backup Manager sur Debian

Installer et configurer Backup Manager sur Debian

Par Pierre-Yves Landuré Dernière modification 02/03/2018 19:04

Backup Manager est un outil simplifiant la sauvegarde de vos données. Il propose de nombreuses options et méthodes de sauvegarde. Bien que trop simple pour gérer une ferme de serveurs facilement, il est parfaitement adapté à la sauvegarde d'un serveur isolé.

Ce guide est testé sur:

  • Debian 6.0 Squeeze
  • Debian 7.0 Wheezy

Installation

Installez backup-manager en ne changeant rien aux paramètres proposés par défaut:

DEBIAN_FRONTEND='noninteractive' command apt-get install backup-manager bzip2

Autorisez le groupe "backup" a consulter les archives, sans pouvoir les modifier:

command sed -i -e 's/[#]*\(.*BM_REPOSITORY_GROUP=\).*$/\1"backup"/' \
            -e 's/[#]*\(.*BM_REPOSITORY_CHMOD=\).*$/\1"750"/' \
            -e 's/[#]*\(.*BM_ARCHIVE_CHMOD=\).*$/\1"640"/' \
         '/etc/backup-manager.conf'

Assurez-vous de la présence du fichier cron:

if [ ! -e '/etc/cron.daily/backup-manager' ]; then
  echo '#!/bin/sh
# cron script for backup-manager
test -x /usr/sbin/backup-manager || exit 0
/usr/sbin/backup-manager' \
    > '/etc/cron.daily/backup-manager'
  chmod +x '/etc/cron.daily/backup-manager'
/etc/init.d/cron reload
fi

Ajoutez le paramètre du niveau de détail des fichiers journaux :

if [ -z "$(command grep 'BM_LOGGER_LEVEL' '/etc/backup-manager.conf')" ]; then
  command echo '
export BM_LOGGER_LEVEL="warning"' \
  >> '/etc/backup-manager.conf'
fi

Renseignez un port par défaut pour les éventuels uploads via SSH, afin de palier à un bug présent dans Lenny :

command sed -i \
    -e 's/[#]*\(.*BM_UPLOAD_SSH_PORT=\).*$/\1"22"/' \
  '/etc/backup-manager.conf'

Modifiez le type de fichier des archives pour tar.bz2 :

command sed -i \
    -e 's/[#]*\(.*BM_TARBALL_FILETYPE=\).*$/\1"tar.bz2"/' \
  '/etc/backup-manager.conf'

Activez les sauvegardes incrémentielles :

command sed -i \
    -e 's/[#]*\(.*BM_ARCHIVE_METHOD=\).*$/\1"tarball-incremental"/' \
  '/etc/backup-manager.conf'

Par défaut, les "master" des sauvegardes incrémentielles sont créé tous les lundis.

Désactivez les méthodes d'export par défaut:

command sed -i \
-e "s/[#]*\(.*BM_UPLOAD_METHOD=\).*$/\1\"\"/" \
-e "s/[#]*\(.*BM_BURNING_METHOD=\).*$/\1\"\"/" \ '/etc/backup-manager.conf'

Utilisez l'option BM_TARBALL_TARGETS à la place de BM_TARBALL_DIRECTORIES. Cela facilite la gestion des emplacements sauvegardés :

command sed -i \
-e 's/^# \(declare.*BM_TARBALL_TARGETS.*\)$/\1/' \ -e 's/^# \(BM_TARBALL_TARGETS\[.*\)$/\1/' \ -e 's/^# \(export.*BM_TARBALL_TARGETS.*\)$/\1/' \
-e 's/^\(export BM_TARBALL_DIRECTORIES.*\)$/# \1/' \
'/etc/backup-manager.conf'

Remarque : Si le dossier "/var/archives" de l'ordinateur ou vous configurer backup-manager est destiné à contenir les sauvegardes d'autres ordinateurs, il est souhaitable d'activer la purge non stricte des archives, afin que votre "/var/archives" ne grossisse pas indéfiniment :

command sed -i \
    -e 's/[#]*\(.*BM_ARCHIVE_STRICTPURGE=\).*$/\1"false"/' \
  '/etc/backup-manager.conf'

Gestion des emplacements sauvegardés

Installez l'outil de gestion des emplacements sauvegardés :

command wget 'https://raw.github.com/biapy/howto.biapy.com/master/backup-manager/backup-manager-tools' \
    --quiet --no-check-certificate --output-document='/usr/bin/backup-manager-tools'
command chmod +x '/usr/bin/backup-manager-tools'

Cet outil présente les capacités suivantes :

  • Afficher les chemins sauvegardés :
    # command backup-manager-tools list
  • Ajouter une cible de sauvegarde :
    # command backup-manager-tools add '/some/path'
  • Retirer une cible de sauvegarde :
    # command backup-manager-tools remove '/some/path'
  • Nettoyer les cibles de sauvegarde n'existant plus :
    # command backup-manager-tools cleanup 

Par défaut, Backup Manager est configuré pour sauvegarder les dossiers /etc et /home. Ajoutez-y les dossiers /root et /var/backups contenant respectivement les données de votre compte root et la liste des paquets installés sur votre système :

command backup-manager-tools add '/root'
command backup-manager-tools add '/var/backups'

Optimisations

Heure de la sauvegarde

Par défaut, la sauvegarde s'effectue avec les autres tâche quotidiennes à 6h25 du matin. Modifiez l'heure d'exécution dans le fichier "/etc/crontab" (les valeurs graissées sont les informations de minutes et heures à personnaliser):

# m h dom mon dow user    command
25 6 * * *    root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

Rechargez la configuration de cron:

/etc/init.d/cron reload

Priorité du processus de sauvegarde

Si la réactivité du système est importante, baissez au maximum la priorité du processus de sauvegarde. La réalisation de la sauvegarde durera plus longtemps mais ne gênera pas le fonctionnement normal du système:

command sed -i \
    -e 's/[#]*\(.*BM_ARCHIVE_NICE_LEVEL=\).*$/\1"19"/' \
  '/etc/backup-manager.conf'

Compression des archives

Le type des archives créées influe sur la charge système lors de la sauvegarde. Si le volume de données sauvegardées est important, et que l'espace disque utilisé par les sauvegardes n'est pas une donnée critique, modifiez le type de fichier des archives pour tar (aucune compression n'est appliquée aux sauvegardes):

command sed -i \
    -e 's/[#]*\(.*BM_TARBALL_FILETYPE=\).*$/\1"tar"/' \
  '/etc/backup-manager.conf'

Export des sauvegardes

Une casse matérielle pouvant survenir, multipliez les copies de sauvegarde. Backup Manager permet l'export des archives vers d'autres hôtes.

Export via SSH

Cette méthode nécessite un second serveur équipé d'un accès SSH. Renseignez les paramètres d'accès au serveur SSH (personnalisez les valeurs graissées) :

SSH_USER="backup"
SSH_PRIVATE_KEY="/root/backup-rsa-key"
SSH_HOST="server.domain.com"
SSH_PATH="/var/archives/"

Remarque: La clef SSH est créée à l'aide de la commande ssh-keygen.

Mettez à jour la configuration de l'outil :

command sed -i -e "s|[#]*\(.*BM_UPLOAD_SSH_USER=\).*$|\1\"${SSH_USER}\"|" \
            -e "s|[#]*\(.*BM_UPLOAD_SSH_KEY=\).*$|\1\"${SSH_PRIVATE_KEY}\"|" \
            -e "s|[#]*\(.*BM_UPLOAD_SSH_HOSTS=\).*$|\1\"${SSH_HOST}\"|" \
            -e "s|[#]*\(.*BM_UPLOAD_SSH_DESTINATION=\).*$|\1\"${SSH_PATH}\"|" \
            -e "s|[#]*\(.*BM_UPLOAD_SSH_PORT=\).*$|\1\"22\"|" \
         '/etc/backup-manager.conf'

Activez l'export vers un serveur SSH :

command sed -i -e "s/[#]*\(.*BM_UPLOAD_METHOD=\).*$/\1\"scp\"/" \
         '/etc/backup-manager.conf'

Remarque : Le réglage BM_UPLOAD_SSH_PORT est nécessaire au bon fonctionnement de la copie distante sous Debian 5.0 Lenny. De même, le réglage BM_UPLOAD_SSH_TTL est nécessaire pour que la purge des archives uploadées via SSH fonctionne.

Export via FTP

Cette méthode nécessite un second serveur équipé d'un accès FTP (OVH fournit gratuitement un espace de sauvegarde FTP pour chaque serveur dédié). Renseignez les paramètres d'accès au serveur SSH (personnalisez les valeurs graissées) :

FTP_HOST='ftp.ovh.fr'
FTP_USER='some-login'
FTP_PASSWORD='some-password'
FTP_PATH='/'

Remarque: La valeur FTP_PATH n'est pas forcément la racine de votre compte FTP. Cela peut être n'importe quel dossier présent dans votre compte FTP.

Mettez à jour la configuration de l'outil :

command sed -i -e "s|[#]*\(.*BM_UPLOAD_FTP_USER=\).*$|\1\"${FTP_USER}\"|" \
            -e "s|[#]*\(.*BM_UPLOAD_FTP_PASSWORD=\).*$|\1\"${FTP_PASSWORD}\"|" \
            -e "s|[#]*\(.*BM_UPLOAD_FTP_HOSTS=\).*$|\1\"${FTP_HOST}\"|" \
            -e "s|[#]*\(.*BM_UPLOAD_FTP_DESTINATION=\).*$|\1\"${FTP_PATH}\"|" \
         '/etc/backup-manager.conf'

Activez l'export vers un serveur FTP :

command sed -i -e "s/[#]*\(.*BM_UPLOAD_METHOD=\).*$/\1\"ftp\"/" \
         '/etc/backup-manager.conf'

Export via Rsync

Cette méthode autorise la sauvegarde de dossiers très volumineux directement sur un serveur distant, sans passer par la création d'une archive. C'est la méthode de choix lorsque le volume de fichiers à sauvegarder dépasse le Gigaoctet.

Cette méthode utilise par défaut le serveur SSH configuré dans l'export via SSH.

Renseignez la liste des dossiers devant être sauvegardés via Rsync:

RSYNC_DIRECTORIES="/var/archives"

Mettez à jour la configuration de l'outil:

command sed -i -e "s|[#]*\(.*BM_UPLOAD_RSYNC_DIRECTORIES=\).*$|\1\"${RSYNC_DIRECTORIES}\"|" \
         '/etc/backup-manager.conf'

Activez l'export via Rsync en complément d'une autre méthode de sauvegarde:

command sed -i -e "s/[#]*\(.*BM_UPLOAD_METHOD=\"[^\"]*\)\".*$/\1 rsync\"/" \
         '/etc/backup-manager.conf'

Ou activez l'export via Rsync seul:

command sed -i -e "s/[#]*\(.*BM_UPLOAD_METHOD=\).*$/\1\"rsync\"/" \
         '/etc/backup-manager.conf'

Remarque: Si votre serveur SSH utilise un port non-standard, appliquez le patch qui suit pour que l'outil le prenne en compte:

command dpkg-divert --divert '/usr/share/backup-manager/upload-methods.sh.dpkg-orig' \
 --rename '/usr/share/backup-manager/upload-methods.sh'
command cp -a '/usr/share/backup-manager/upload-methods.sh.dpkg-orig' '/usr/share/backup-manager/upload-methods.sh'
command sed -i -e '/ssh_option="ssh -l/i\
if [[ -n "${BM_UPLOAD_SSH_PORT}" ]]; then\
ssh_port_switch="-p ${BM_UPLOAD_SSH_PORT}";\
fi' \
-e 's/ssh_option="ssh -l/ssh_option="ssh ${ssh_port_switch} -l/' \
'/usr/share/backup-manager/upload-methods.sh'

Export vers un partage Windows (SMB / CIFS)

Si le serveur est dans un environnement Windows, il est possible de copier les archives générées par Backup Manager vers un dossier partagé sur un serveur Windows.

Téléchargez les fichiers nécessaires:

command mkdir --parents '/opt/bin'
command wget 'https://raw.github.com/biapy/howto.biapy.com/master/backup-manager/backup-manager-cifs-export.conf' \ --quiet --no-check-certificate --output-document='/etc/backup-manager-cifs-export.conf' command wget 'https://raw.github.com/biapy/howto.biapy.com/master/backup-manager/backup-manager-cifs-export' \ --quiet --no-check-certificate --output-document='/opt/bin/backup-manager-cifs-export' command chmod +x '/opt/bin/backup-manager-cifs-export'

Installez les dépendances:

command apt-get install cifs-utils rsync

Configurez Backup Manager pour exécuter le script 'backup-manager-cifs-export' à la fin de la procédure de sauvegarde:

command sed -i -e "s|[#]*\(.*BM_POST_BACKUP_COMMAND=\).*$|\1\"/opt/bin/backup-manager-cifs-export\"|" \
         '/etc/backup-manager.conf'

Configurez le script en modifiant le fichier /etc/backup-manager-cifs-export.conf:

command nano '/etc/backup-manager-cifs-export.conf'

Copier un dossier vers un espace FTP

Utiliser une compression, même incrémentale, pour sauvegarder plusieurs dizaines voir centaines de Giga octets de données est inadéquat. Backup Manager répond à cette problématique en permettant d'utiliser l'outil "rsync" pour sauvegarder un volume important de données. rsync est la meilleure méthode pour sauvegarder un important volume de données. Rsync utilise un accès SSH pour transférer les données.

Dans le cas ou l'accès SSH n'est pas disponible, mais qu'il est possible d'utiliser un accès FTP (par exemple, un espace des sauvegarde FTP chez OVH), l'utilisation de rsync est exclue. Ce qui suit pallie à ce problème et permet de transférer des dossiers contenant de gros volumes de données vers un espace FTP.

Créez le dossier destiné à contenir le script de copie via FTP :

command mkdir --parents '/etc/backup-manager'

Téléchargez les fichiers nécessaires :

command wget 'https://raw.github.com/biapy/howto.biapy.com/master/backup-manager/ftp-copy.conf' \
    --quiet --no-check-certificate --output-document='/etc/backup-manager/ftp-copy.conf'
command wget 'https://raw.github.com/biapy/howto.biapy.com/master/backup-manager/ftp-copy.sh' \
    --quiet --no-check-certificate --output-document='/etc/backup-manager/ftp-copy.sh'
command chmod +x '/etc/backup-manager/ftp-copy.sh'

Installez les dépendances :

command apt-get install yafc

Configurez Backup Manager pour exécuter le script 'ftp-copy' à la fin de la procédure de sauvegarde :

command sed -i -e "s|[#]*\(.*BM_POST_BACKUP_COMMAND=\).*$|\1\"/etc/backup-manager/ftp-copy.sh\"|" \
         '/etc/backup-manager.conf'

La configuration de ce script est très simple. Il utilise les paramètres de l'upload vers un serveur FTP de Backup Manager (voir point précédent).

Important : Vérifiez que le fichier de configuration de Backup Manager contient les informations de connexion au serveur FTP.

Modifiez le fichier /etc/backup-manager/ftp-copy.conf, et placez les dossiers que vous souhaitez copier directement sur le serveur FTP dans la variable FTP_COPY_FOLDERS, séparés par des espaces. Par exemple :

export FTP_COPY_FOLDERS="/home/ftp /var/www/uploads /my/really/big/folder"

Ce script est sûrement améliorable.

Remarque : Le script ftp-copy.sh utilise le client FTP yafc et non ncftpput, car ncftpput rencontrait des problèmes de déconnexion intempestives lorsqu'utilisé sur le serveur de sauvegarde FTP d'OVH.

Remerciements

Pièces jointes