Afin d'effectuer une sauvegarde de mes serveurs je me suis fait un petit script qui compresse, chiffre, et envoi chez un hébergeur les fichiers de sauvegarde tous les soir vers minuit.

Ce script est assez simple et me permet de faire des backups complet sans me limiter sur la taille de celle-ci. Il est aussi possible d'uploader les backups sur plusieurs hébergeurs différents afin de rendre résilient les sauvegardes sans débourser un centime.

Il se base sur des utilitaires simple comme 7zip et gpg pour la compression et le chiffrement.
Afin de l'uploader j'utilise un programme écrit en bash qui est très pratique et dont l'extension des possibilités par des modules est assez simple et pratique : plowshare

#!/bin/sh
# /root/scripts/save-silent.sh
# usage :
#./save.sh /mon/premier/dossier /un/autre/dossier ...
#./save.sh /etc /home /root /var/log/ /var/www/
# dependecy :
#p7zip-full plowshare cpulimit

#Borrowed from anacron
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
#End borrowed from anacron

#Initialisation
DATETIME=`date '+%d-%m-%Y[%H.%M.%S]'`;
BACKUPDIR="/home/.sv/" ;
BACKUPNAME="SV-$(hostname | tr '[a-z]' '[A-Z]' )";
EMAIL="user@mail.com";
PASSWORD="password"
LIMIT=50;

#Préparation
if [ ! -d "$BACKUPDIR" ]; then
  mkdir -p "$BACKUPDIR";
fi

#Compression
echo
echo "Compression des dossiers :"
BACKUPEXT="7z";
7z a -mhe=on  "$BACKUPDIR/$BACKUPNAME-$DATETIME.$BACKUPEXT" $* & cpulimit -p $!                                                                                 -l $LIMIT;

#Encryptage
echo
echo "Encryptage de l'archive :"
gpg --passphrase "$PASSWORD" --symmetric "$BACKUPDIR/$BACKUPNAME-$DATETIME.$BACK                                                                                UPEXT" & cpulimit -p $! -l $LIMIT;
rm "$BACKUPDIR/$BACKUPNAME-$DATETIME.$BACKUPEXT"

#Envoi
echo
echo "Envoi de la sauvegarde :"
#
PLOWUP_CMD="plowup cramit --auth="username:password" --email-to=$EMAIL"

split  -d -b 1G  "$BACKUPDIR/$BACKUPNAME-$DATETIME.$BACKUPEXT.gpg" "$BACKUPDIR/$                                                                                BACKUPNAME-$DATETIME.$BACKUPEXT.gpg."
rm "$BACKUPDIR/$BACKUPNAME-$DATETIME.$BACKUPEXT.gpg"
$PLOWUP_CMD "$BACKUPDIR/$BACKUPNAME-$DATETIME.$BACKUPEXT.gpg."* & cpulimit -p $!                                                                                 -l $LIMIT;
rm "$BACKUPDIR/$BACKUPNAME-$DATETIME.$BACKUPEXT.gpg."*

Pour que ce script s'execute tous les jours un petit cron.daily de plus sans oublier de renvoyer les informations utiles (hébergeur, lien, taille, date et heure, ...) par email afin de pouvoir les restaurer plus tard.

#/etc/cron.daily/sv
dpkg --get-selections > /root/.info/dpkg.list
nice -n 19 /root/scripts/save-silent.sh /etc /home /root /var/log /var/mail | grep -E "(^E)|(^Cr)|(http)" | sendmail -v user@mail.com


Note : d'ailleurs ce site est sauvegardé via ce même script. ^^