Serveur de Sauvegardes sous Linux

March 22, 2006 on 5:48 pm | In General, admin, developpement, shell |

Voici quelques infos utiles pour mettre en place un serveur de sauvegardes de base sous Linux. Il ne gère pas le multi-version, mais permet de sauvegarder plusieurs disques réseau à intervalle régulier. Pour 50Go, le temps de chaque vérification et mise à jour n’est que de 20 minutes maximum. (plusieurs heures lors de la première sauvegarde)

Celui ci fonctionne avec rSync et un petit script shell.

J’ai utilisé le système de fichiers ReiserFS pour pouvoir gérer plus de 32000 fichiers par repertoire et la distribution Debian testing (à partir de la version netinst (8Mo à télécharger)). Le système est installé et fonctionnel en 15 minutes. Vous pouvez telecharger les ISO de cette version là : http://ftp.debian.org/debian/dists/testing/main/installer-i386/current/images/netboot/

Dans mon fichier fstab (qui regroupe les montages de disques), j’ai ajouté une ligne par répertoire réseau à enregistrer :

# pour monter le partage ‘public’ de la machine windows 192.168.5.10 dans /mnt/saves/public/ :
//192.168.5.10/public /mnt/saves/public smbfs ro,username=user,password=pass 0 0

Ensuite j’ai crée un script shell qui me synchronise tous les disques montés dans /mnt/saves sur le disque ReiserFS local. Pour cela, il faut utiliser rSync :

# ceci va synchroniser tout le contenu /mnt/saves/ vers /home/saves/data/ (en recursif)
rsync -avz /mnt/saves/ /home/saves/data/

On peut rajouter un fichier avec des exclusions pour éviter de sauvegarder des gigas de mp3, videos… à passer à la ligne de commande de rSync :

–exclude-from=exclusions.txt
dans lequel on trouve par exemple :
*.mp*
*.MP*
*.avi
*.AVI

Ensuite dans la crontab, j’ai automatisé l’execution de ce script en la planifiant tous les jours à 1h du matin :

0 1 * * * root /root/SaveAll.sh

Dans mon script SaveAll.sh, j’ai apporté des améliorations qui me permettent de tout logguer et de recevoir le compte-rendu de sauvegarde par email :

# date et heure d’exec
curDate=`date +%d%m%y_%H%M`
# nom du fichier log
logFileName=“/root/logs/log_saves_$curDate.log”
# redirige les sorties erreur et standard vers mon fichier de log
exec >$logFileName 2>&1
# montage des smbfs au cas ou pas montés au boot
mount -a
# execution de rSync
rsync -avz –exclude-from=exclusions.txt /mnt/saves/ /home/saves/data/
# envoi du mail
mpack -s “Compte rendu de sauvegarde” $logFileName admin@revolunet.com

Dans ce mail me sont également envoyés quelques infos : la taille de chaque repertoire de sauvegarde et le nombre de fichiers :

# Taille des repertoires sauvegardés
du -h –max-depth=1 /home/saves/data
# Nombre de fichiers dans chaque repertoire
for folder in `ls -d /home/saves/data/*/“; do
nbfiles=`find $folder -iname ‘*.*’ | wc -l`
echo “$folder : $nbfiles Fichiers”;
done

Ensuite, libre à vous de partager ce repertoire dans Samba pour qu’il soit accessible depuis le réseau.

No Comments yet »

RSS feed for comments on this post. TrackBack URI

Leave a comment

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Powered by WordPress with Pool theme design by Borja Fernandez.
Entries and comments feeds. Valid XHTML and CSS. ^Top^