Sauvegarder un serveur sous Linux Debian ou Ubuntu

Sauvegarder un serveur permet de limiter les risques de perte d’informations et de faciliter la réinstallation en cas de défaillance. Il est donc impératif de sauvegarder régulièrement l’ensemble des données critiques vers un disque local ou un serveur distant.

Une sauvegarde peut s’effectuer manuellement en exécutant un script ou automatiquement en créant une tâche planifiée. Conserver plusieurs sauvegardes et personnaliser la fréquence de sauvegarde permettent d’adapter la quantité de données à stocker et de « remonter dans le temps ».

Cet article décrit comment sauvegarder un serveur sous Linux Debian ou Ubuntu.

Prérequis

Installer rsync

rsync est un outil de synchronisation de fichiers.

apt-get install rsync

Créer une sauvegarde locale

Le script ci-dessous propose un exemple de sauvegarde de données vers un disque local.

DB_USER:DB_PASSWORD est l’administrateur des bases de données à exporter. Les fichiers sont sauvegardés dans le répertoire DIR.

nano /root/backup

# !/bin/sh

# Chargement des variables
DB_USER="root"
DB_PASSWORD="mypassword"
DIR="/var/backups/mybackup"

# Export des bases de données
/usr/bin/mysqldump -u$DB_USER -p$DB_PASSWORD --all-databases > /root/databases.sql

# Création des répertoires
mkdir -p $DIR
mkdir -p $DIR/etc
mkdir -p $DIR/etc/apache2
mkdir -p $DIR/home
mkdir -p $DIR/root
touch $DIR

# Sauvegarde des fichiers
rsync -a --delete /etc/apache2/sites-available $DIR/etc/apache2
rsync -a --delete /etc/hostname $DIR/etc
rsync -a --delete /home/myuser $DIR/home
rsync -a --delete /root/databases.sql $DIR/root

chmod 744 /root/backup

La commande /root/backup lance la sauvegarde. Voir les paragraphes suivants pour conserver plusieurs sauvegardes et automatiser la sauvegarde.

Créer une sauvegarde distante

Une sauvegarde distante s’effectue par le protocole SSH. Le serveur à sauvegarder doit donc disposer d’une connexion SSH automatique pour l’utilisateur root vers le serveur distant (voir Se connecter à SSH sans saisir de mot de passe sous Linux).

Le script ci-dessous propose un exemple de sauvegarde de données vers un serveur distant.

DB_USER:DB_PASSWORD dispose des droits sur les bases de données à exporter. Les fichiers sont sauvegardés vers le serveur HOST sur le port PORT dans le répertoire DIR.

nano /root/backup

# !/bin/sh

# Chargement des variables
DB_USER="root"
DB_PASSWORD="mypassword"
HOST="root@myip"
PORT=22
DIR="/var/backups/mybackup"

# Export des bases de données
/usr/bin/mysqldump -u$DB_USER -p$DB_PASSWORD --all-databases > /root/databases.sql

# Création des répertoires
ssh -p $PORT $HOST <<EOF
    mkdir -p $DIR
    mkdir -p $DIR/etc
    mkdir -p $DIR/etc/apache2
    mkdir -p $DIR/home
    mkdir -p $DIR/root
    touch $DIR
    logout
EOF

# Sauvegarde des fichiers
rsync -aze "ssh -p $PORT" --delete /etc/apache2/sites-available $HOST:$DIR/etc/apache2
rsync -aze "ssh -p $PORT" --delete /etc/hostname $HOST:$DIR/etc
rsync -aze "ssh -p $PORT" --delete /home/myuser $HOST:$DIR/home
rsync -aze "ssh -p $PORT" --delete /root/databases.sql $HOST:$DIR/root

chmod 744 /root/backup

La commande /root/backup lance la sauvegarde. Voir les paragraphes suivants pour conserver plusieurs sauvegardes et automatiser la sauvegarde.

Conserver plusieurs sauvegardes

Pour conserver plusieurs sauvegardes et pouvoir « remonter dans le temps », il suffit d’utiliser un nom de répertoire dynamique.

Par exemple :

  • Pour conserver 7 jours de sauvegardes quotidiennes le répertoire contient le numéro du jour de la semaine %w.
    DIR="/var/backups/mybackups/$(date +%w)"
  • Pour conserver 1 mois de sauvegardes quotidiennes le répertoire contient le numéro du jour du mois %d.
    DIR="/var/backups/mybackups/$(date +%d)"
  • Pour conserver 1 an de sauvegardes quotidiennes le répertoire contient le numéro du jour de l’année %j.
    DIR="/var/backups/mybackups/$(date +%j)"

Automatiser une sauvegarde

Pour automatiser une sauvegarde et personnaliser sa fréquence, il suffit de créer une tâche planifiée en utilisant crontab.

crontab -e

Par exemple :

  • Pour lancer une sauvegarde tous les jours à 4 heures du matin.
    0 4 * * * /root/backup > /dev/null
  • Pour lancer une sauvegarde une fois par semaine à 4 heures du matin.
    0 4 * * 1 /root/backup > /dev/null

» Créer et installer un firewall sous Linux Debian ou Ubuntu

Laisser un commentaire

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

*