diff --git a/README b/README index 8dcc3fe..addef7f 100644 --- a/README +++ b/README @@ -33,6 +33,7 @@ Avec les logiciels suivants : - OpenSSH - Rsync (le daemon rsync n'est pas nécessaire) + - Le paquet makedev - Commande "mail" (ou un équivalent) capable d'envoyer des messages à l'extérieur. @@ -45,10 +46,15 @@ On créera ensuite les répertoires suivants : - /etc/evobackup : config des fréquences des copies incrémentales Pour la mise en place des backups incrémentaux sur le serveur : -- Mettre en place le script evobackup-inc.sh dans /usr/share/scripts -- Lui mettre les droits d'exécution : chmod u+x /usr/share/scripts/evobackup-inc.sh +- Mettre en place les scripts evobackup-inc.sh et evobackup-rm.sh dans /usr/share/scripts +- Mettre les droits d'exécution : chmod u+x /usr/share/scripts/evobackup-{inc,rm}.sh - Activer le crontab suivant (ajuster éventuellement les heures) : - 30 10 * * * /usr/share/scripts/evobackup-inc.sh + 29 10 * * * pkill evobackup-rm.sh && echo "Kill evobackup-rm.sh done" | mail -s "[warn] EvoBackup - purge incs interrupted" root + 30 10 * * * /usr/share/scripts/evobackup-inc.sh && /usr/share/scripts/evobackup-rm.sh + +Note : si l'on ne veut *jamais* supprimer les backups incrémentaux, on pourra se contenter +de ne jamais lancer le script evobackup-rm.sh + Si le noyau du serveur est patché avec GRSEC, on évitera pas mal de warnings en positionnant les paramètres Sysctl suivants : @@ -162,10 +168,10 @@ Côté serveur de sauvegardes toutes les 15 jours, le 1er janvier de chaque année, etc.) Attention, la création de ce fichier est *obligatoire* pour activer - les copies incrémentales. Par exemple, dans le cas particulier où l'on - voudrait garder des copies advitam aeternam, il suffit de créer un - fichier /etc/evobackup/$JAIL vide. - + les copies incrémentales. Si l'on veut garder des copies advitam aeternam + sans jamais les supprimer, on se contentera de créer un fichier + etc/evobackup/$JAIL vide. + Côté serveur à sauvegarder ~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/chroot-ssh.sh b/chroot-ssh.sh index 904ae73..00dde07 100644 --- a/chroot-ssh.sh +++ b/chroot-ssh.sh @@ -123,8 +123,7 @@ echo "......OK" echo -n "4 - Creation des devices..." cd $chrootdir/dev/ - cp /dev/MAKEDEV ./ - ./MAKEDEV {null,random,urandom,pty} + MAKEDEV {null,random,urandom,pty} mkdir pts #mknod ptmx c 5 2 diff --git a/evobackup-inc.sh b/evobackup-inc.sh index a735586..f10ddfa 100644 --- a/evobackup-inc.sh +++ b/evobackup-inc.sh @@ -15,29 +15,13 @@ mkdir -p $TMPDIR for i in $( ls $CONFDIR ); do - mkdir -p "$INCDIR"$i - # hard copy everyday + echo -n "hard copy $i begins at : " >> $LOGFILE + /bin/date +"%d-%m-%Y ; %H:%M" >> $LOGFILE + mkdir -p "$INCDIR"$i cp -alx $JAILDIR$i $INCDIR$i/$DATE + echo -n "hard copy $i ends at : " >> $LOGFILE + /bin/date +"%d-%m-%Y ; %H:%M" >> $LOGFILE - # list actual inc backups - for j in $( ls $INCDIR$i ); do - echo $j - done > "$TMPDIR"$i.files - - # list non-obsolete inc backups - for j in $( cat $CONFDIR$i ); do - MYDATE=$( echo $j | cut -d. -f1 ) - BEFORE=$( echo $j | cut -d. -f2 ) - date -d "$(date $MYDATE) $BEFORE" "+%d-%m-%Y" - done > "$TMPDIR"$i.keep - - # delete obsolete inc backups - for j in $( grep -v -f "$TMPDIR"$i.keep "$TMPDIR"$i.files ); do - echo "Suppression du backup $j ($i)" - cd $INCDIR$i - rm -rf $j - done - -done | tee -a $LOGFILE | mail -s "[info] EvoBackup - incrementaux" $MYMAIL +done | tee -a $LOGFILE | mail -s "[info] EvoBackup - create incs" $MYMAIL diff --git a/evobackup-rm.sh b/evobackup-rm.sh new file mode 100644 index 0000000..fc51343 --- /dev/null +++ b/evobackup-rm.sh @@ -0,0 +1,41 @@ +#!/bin/sh + +# Script backups incrementaux +# Evolix (c) 2007 + +CONFDIR=/etc/evobackup/ +DATE=$(date +"%d-%m-%Y") +LOGFILE=/var/log/evobackup-sync.log +TMPDIR=/tmp/evobackup/ +JAILDIR=/backup/jails/ +INCDIR=/backup/incs/ +MYMAIL=jdoe@example.com + +mkdir -p $TMPDIR + +for i in $( ls $CONFDIR ); do + + # list actual inc backups + for j in $( ls $INCDIR$i ); do + echo $j + done > "$TMPDIR"$i.files + + # list non-obsolete inc backups + for j in $( cat $CONFDIR$i ); do + MYDATE=$( echo $j | cut -d. -f1 ) + BEFORE=$( echo $j | cut -d. -f2 ) + date -d "$(date $MYDATE) $BEFORE" "+%d-%m-%Y" + done > "$TMPDIR"$i.keep + + # delete obsolete inc backups + for j in $( grep -v -f "$TMPDIR"$i.keep "$TMPDIR"$i.files ); do + echo -n "Delete $i/$j begins at : " >> $LOGFILE + /bin/date +"%d-%m-%Y ; %H:%M" >> $LOGFILE + cd $INCDIR$i + rm -rf $j + echo -n "Delete $i/$j ends at : " >> $LOGFILE + /bin/date +"%d-%m-%Y ; %H:%M" >> $LOGFILE + done + +done | tee -a $LOGFILE | mail -s "[info] EvoBackup - purge incs" $MYMAIL +