Bonjour à tous !

J’ai décidé de partager avec vous un des scripts que j’utilise au quotidien. Je me suis fait ce script car j’avais besoin de sauvegarder la conf de mes paquets sans forcément devoir installer un outil qui fasse la sauvegarde.

Ce script garde des sauvegardes pendant 7 jours. Ce paramètre est modifiable dans le script.

Vous devez alimenter le script avec les paquets à sauvegarder. Attention les noms doivent correspondre exactement au nom fourni par ‘dpkg’ . Vous pouvez l’obtenir avec les commandes suivantes :

dpkg --get-selections
dpkg --get-selections | grep ssh
dpkg

N’oubliez pas de rentrer votre adresse mail dans le script pour recevoir les logs par mail.

#!/bin/bash
#================================================================================
#================================================================================
#                        SAUVEGARDE CONF PAQUETS
#================================================================================
#
#Author:		Bruno LEAL DE SOUSA
#Version:		0.1	<Dont forget to increment version>
#Modifications:
#================================================================================
#================================================================================

#############
# Variables #
#############
# Fichier de log total
LOGFILE='/backup/backup_conf.log';
# L'adresse mail qui recevra le rapport
mail='[email protected]';
# Date de départ de la sauvegarde
date_start=`date +'%d/%m/%Y @ %H:%M:%S'`;
# Choix du format de la date utilisé pour les dossiers
format_date='%d%m%Y';
# Variable de date du jour, en fonction du format choisi
date=`date +${format_date}`;
# Le nombre de jour archivés
keepday="7";
# Calcul du nombre de jour, remontant à plus de "$keepday" jour(s)
keepdate=`date --date "-${keepday} days" +${format_date}`;
# Le répertoire de création du backup journalier
backup_rac='/backup/backup_conf/';
backup_dir=${backup_rac}/${date};
# Fichier de log temporaire pour la sauvegarde quotidienne
LOGTEMP=$backup_dir/backup.log;
####################################################

############
# Fonction #
############
function tarpak
{
PKG=$1
dpkg -L $PKG | while read F
do
    if [ -f $F ]
        # On prend que les fichiers dans la liste
    then
        # Ajout des fichiers dans le tar
        tar -rf $backup_dir/$PKG.tar $F
    fi
done
}
##########
# Backup #
##########
echo "Debut de Backup :" >> $LOGTEMP;
echo $date_start >> $LOGTEMP;
echo "" >> $LOGTEMP;
# Preparation backup
# Creation du repertoire de backup
mkdir -p ${backup_dir};
# Backup de la liste des paquets
dpkg --get-selections > /backup/temp/liste-des-paquets
#======================================================================
# Backup des paquests -------------------------------------------------
# Liste à alimenter en fonction des paquets quon veut sauvegarder ----
#======================================================================

# ===> apache2 <===
echo "Backup Apache2" >> $LOGTEMP;
tarpak apache2
# ===> ssh <===
echo "Backup ssh" >> $LOGTEMP;
tarpak openssh-server
tarpak openssh-client
# ===> fail2ban <=== 
echo "Backup fail2ban" >> $LOGTEMP;
tarpak fail2ban

#################
##### FIN #######
#################
#Etat du dossier de sauvegarde
echo "Etat du dossier de sauvegarde:" >> $LOGTEMP;
ls -A $backup_dir >> $LOGTEMP;
#Etat des archives avant suppresion + suppression
echo "--------------------------" >> $LOGTEMP;
echo "Expiration des archives datant de 7 jours........" >> $LOGTEMP;
echo "--------------------------" >> $LOGTEMP;
echo " " >> $LOGTEMP;
echo "ETAT du dossier de sauvegarde avant expiration:" >> $LOGTEMP;
ls -A $backup_rac >> $LOGTEMP;
echo " " >> $LOGTEMP;
rm -rf  ${backup_rac}/${keepdate};
#Etat des archives apres suppresion
echo "ETAT du dossier de sauvegarde apres expiration:" >> $LOGTEMP;
ls -A $backup_rac >> $LOGTEMP;
echo " " >> $LOGTEMP;
#Fin de la sauvegarde et rapport
echo "Sauvegarde conf journaliere terminee - $date" >> $LOGTEMP;
date_end=`date +'%d/%m/%Y @ %H:%M:%S'`;
echo $date_end >> $LOGTEMP;
#Alimentation du fichier de log total
cat $LOGTEMP >> $LOGFILE;
echo "------------------------------------" >> $LOGFILE
echo " " >> $LOGFILE;
#Mail avec le rapport de sauvegarde
mail -s "Backup conf $date" ${mail} < ${LOGTEMP};
backup_conf.sh

Le script est téléchargeable ici aussi : http://www.developpez.com/telecharger/telecharger/id/4676/Backup-de-la-configuration-des-paquets-DPKG

=> script fait pour Debian mais portable sur d’autres systèmes comme RedHat.

_____________________

A bientôt sur bidouilleit.com !

– Bruno Sousa –