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 27/02/2017 13:18

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

plop a écrit :
02/11/2012 10:48
Bonjour et merci pour le partage de ces informations. Vous oubliez de préciser (comme beaucoup) si cet outil permet de sauvegarder les propriétaires du fichier et les droits associés, ce peut être très important lors d'une restauration...

Pierre-Yves Landuré a écrit :
02/11/2012 18:23
Bonjour,

il est vrai que je n'ai pas précisé cette information. Après vérification, les droits et propriétaires des fichiers sont sauvegardés. A noter toutefois que ce sont les "id" des propriétaires qui sont sauvegardés, et non leur nom, d'ou l'importance de la sauvegarde du contenu de /etc.

Si j'ai oublié de préciser cet information, c'est que cette donnée est tellement critique que tous les bon logiciels de sauvegarde la prenne en compte. Quel logiciel avez vous rencontré qui ne la sauvegarde pas ?

Sincèrement,
Pierre-Yves Landuré
seb a écrit :
17/01/2014 10:46
Bonjour,

Je vous remercie pour ce tutoriel que j'ai suivi pour installer et configurer backup-manager sur un petit serveur web.

Je rencontre par contre un problème lors de l'exécution de la sauvegarde : la partie mysql plante (fichier de sauvegarde .sql vide) et j'obtiens cette erreur sur la console :
------------
Cr?ation d'un fichier de configuration par d?faut du client MySQL: /root/.backup-manager_my.cnf
process 18041: arguments to dbus_message_iter_append_basic() were incorrect, assertion "_dbus_check_is_valid_utf8 (*string_p)" failed in file ../../dbus/dbus-message.c line 2598.
This is normally a bug in some application using the D-Bus library.
----------

Sauriez-vous ce que je peux faire pour y remédier ? Je suis en Debian 7.2.

Merci d'avance !
Sébastien
Pierre-Yves Landuré a écrit :
17/01/2014 11:06
Bonjour Sébastien,

Il s'agit à priori d'un bug intervenant quand dbus-send est présent sur le système. Utilisant des systèmes minimaux sans interface graphique pour mes serveurs, je n'ai jamais été confronté au problème.

Je pense que les commandes suivantes résoudront votre bug:

command dpkg-divert --divert '/usr/share/backup-manager/dbus.sh.dpkg-orig' \
    --rename '/usr/share/backup-manager/dbus.sh'
command cp -a '/usr/share/backup-manager/dbus.sh.dpkg-orig' '/usr/share/backup-manager/dbus.sh'
command sed -i \
    -e '/dbus_send=/a\
    dbus_send=true' \
  '/usr/share/backup-manager/dbus.sh'

Merci de me dire si c'est bien le cas.
Sébastien a écrit :
17/01/2014 11:51
Re-bonjour,

Merci de votre retour rapide !

Je n'ai pas d'interface graphique sur mon serveur, j'y accède uniquement via ssh (dédié chez Online), je pense que dbus était installé par défaut ?

Alors entre temps, j'ai créé à la main le fichier /root/.backup-manager_my.cnf en y mettant ceci :
[client]
password="mdp_backup_mysql"

Sachant que j'ai créé un user spécialement pour les backup mysql qui a accès à toutes les bases, la connexion à mysql en shell avec cet user fonctionne bien.

Ensuite, j'ai relancé un backup, je n'ai plus eu le message "dbus", tout semblait être OK sauf que le tar.bz2 de mes bases était toujours vide...

Puis j'ai saisi votre commande et relancé un backup, rien n'y fait.

Ca semble uniquement lié à la sauvegarde mysql, pourtant j'ai une config identique sur un autre serveur qui fonctionne. Peut-être est-ce parce que j'utilise la variable _ALL_ pour sauvegarder toutes les bases plutôt que de les nommer unes à unes ? je vais tester...
Pierre-Yves Landuré a écrit :
17/01/2014 12:02
Bonjour,

n'oubliez pas de préciser l'utilisateur MySQL dans le fichier .backup-manager_my.cnf . Si vous avez appliqué mon patch, essayez de sauvegarder après avoir supprimé ce fichier pour laisser backup-manager le créer.

Dans mon guide d'installation MySQL, je signale un autre bug Backup-Manager.
cf: https://howto.biapy.com/[…]/installer-et-configurer-mysql-sur-debian

Backup Manager génère des sauvegardes vides si le fichier /root/.my.cnf contient un mot de passe. Ce qui suit corrige ce bug:

command dpkg-divert --divert '/usr/share/backup-manager/backup-methods.sh.orig' \
    --rename '/usr/share/backup-manager/backup-methods.sh'
command cp -a '/usr/share/backup-manager/backup-methods.sh.orig' '/usr/share/backup-manager/backup-methods.sh'
command sed -i -e 's/--defaults-extra-file/--defaults-file/g' '/usr/share/backup-manager/backup-methods.sh'

Sébastien a écrit :
17/01/2014 14:15
Exactement ! votre dernière solution est la bonne !

Un grand merci pour votre aide précieuse et pour avoir partagé cet article.

Bonne continuation,
Sébastien
cemoi a écrit :
12/11/2014 11:16
Salut,
là ou il faut être prudent c'est sur la gestion des acl. tar et dump ne conservent pas les acl par exemple il faut utiliser star à la place pour que les acl soit sauvegardé. Âpres les tuto ça ne s'utilise pas sans relecture et vérifications tous les usages ont des contextes différent que l'on doit chacun prendre en compte.

;) ++
Pierre-Yves Landuré a écrit :
11/12/2014 13:28
Bonjour Cemoi,

merci pour cette information. n'utilisant pas les acl moi-même, je n'ai pas rencontré ce problème.
Relentless a écrit :
12/12/2014 10:41
Bonjour,
Super votre script pour exporter vers un share Windows me rend bien service :)
Beau boulot
@+
Nico a écrit :
08/07/2015 18:13
Et pour la restauration ?

Comment cela fonctionne-til ?
Pierre-Yves Landuré a écrit :
26/11/2016 12:45
Pour restaurer, il faut décompresser les archives de sauvegarde à la racine de root:

tar --directory=/ -xfz archive.tar.gz

Personnellement, je décompresse les sauvegarde dans un répertoire temporaire, et je récupère ce que j'ai besoin de restaurer. J'ai rarement eu besoin d'une restauration totale.
andriana a écrit :
16/07/2015 14:12
Bonjour,
Félicitations pour ce super tutoriel !
Cependant j'aimerais savoir: après l'exportation, comment fait-on pour importer une sauvegarde par exemple ?
Merci
Pierre-Yves Landuré a écrit :
26/11/2016 12:46
Bonjour,
je viens de donner la réponse en commentaire juste au dessus du votre.
Pascal Feldmann a écrit :
06/10/2015 17:07
Hi Your Windows Share Script backup-manager-cifs-export
Is not working for Domain-Environments, because the proper mount command is:
 $ sudo mount -t cifs //172.16.1.5/myshare/ /mnt/myshare \
    -osec=ntlmv2,domain=MYDOMAIN,username=myusername,password=mypassword
Pierre-Yves Landuré a écrit :
26/11/2016 12:47
Thank you for this information. I'll update the cifs-export script when i've got some time on my hands.
Ajouter un commentaire

Vous pouvez ajouter un commentaire en complétant le formulaire ci-dessous. Le format doit être plain text. Les url et les courriels sont transformés en liens cliquables. Les commentaires sont modérés.