======Scripts de sauvegarde ======
Voici des exemples, plutôt mal fait (pas de rotate), de scripts de backup rapides :
===== Sauvegarder un site ftp =====
On va chercher les données modifiées (mode mirror de lftp) sur le ftp, et on compresse en local. Le ménage doit être fait à la main.
#!/bin/bash
# sauvegarde des wiki de Galette
# Loïs - v20070106
#
DATE=$(date +%Y%m%d)
echo "Sauvegarde du wiki fr+en"
SITE="ftp.tuxfamily.org"
USER=""
PASSWD=""
RPATH="galette/galette.tuxfamily.org-web/htdocs"
## mirror [options] distant (->) local
ORDER_FR="open $SITE; user $USER,$PASSWD; cd $RPATH; mirror -cn fr wiki/"
ORDER_EN="open $SITE; user $USER,$PASSWD; cd $RPATH; mirror -cn en wiki/"
#FTP_ARGS="set ftp:passive off; set ftp:list-options -a;"
#usage : lftp -c "$FTP_ARGS $ORDER_FR"
lftp -c "$ORDER_FR"
lftp -c "$ORDER_EN"
tar -cjvf wiki-$DATE.tar.bz2 wiki/
echo "done"
echo "--------------------"
echo "Sauvegarde terminée."
exit 0
===== Sauvegarde d'un dépôt subversion =====
Ce script utilise une zone tampon locale, via rsync, pour éviter d'alourdir le traffic réseau
en re-téléchargeant l'intégralité des données à chaque backup. Ce script n'a **aucun** mécanisme de ménage, il doit être fait à la main (barbare un jour, barbare toujours !).
#!/bin/bash
# sauvegarde du svn et du wiki de bos
# Loïs - v20060110
#
DATE=$(date +%Y%m%d)
echo "Sauvegarde du dépot subversion"
commande_dump="svnadmin dump /home/svn/repos/svn/bos > /home/bos/bos-svn-$DATE"
commande_bzip="bzip2 bos-svn-$DATE"
ssh bos@bos.seul.org "$commande_dump"
ssh bos@bos.seul.org "$commande_bzip"
scp bos@bos.seul.org:/home/bos/bos-svn-$DATE.bz2 .
echo "done"
echo "--------------------"
echo "Sauvegarde du wiki"
commande_tar_wiki="tar -cjvf bos-wiki-$DATE.tar.bz2 /home/bos/public_html/wiki"
ssh bos@bos.seul.org "$commande_tar_wiki"
scp bos@bos.seul.org:/home/bos/bos-wiki-$DATE.tar.bz2 .
echo "done"
echo "--------------------"
echo "Sauvegarde de public_html/files"
mkdir -p public_html
rsync -azvP bos@bos.seul.org:/home/bos/public_html/files ./public_html
tar -cjvf bos-files-$DATE.tar.bz2 public_html/files
echo "done"
echo "--------------------"
echo "Sauvegarde de public_html/dev"
mkdir -p public_html
rsync -azvP bos@bos.seul.org:/home/bos/public_html/dev ./public_html
tar -cjvf bos-dev-$DATE.tar.bz2 public_html/dev
echo "done"
echo "--------------------"
echo "Sauvegarde du svn Stratagus sur SF"
mkdir -p stratagus
commande_tar_stratagus="tar -cjvf stratagus-svn-$DATE.tar.bz2 stratagus/"
# Rsync requests must be proxied, per SF configuration needs
export RSYNC_PROXY=rsync-svn.sourceforge.net:80
rsync -a rsync-svn-s::svn/stratagus/* stratagus/
tar -cjvf stratagus-svn-$DATE.tar.bz2 stratagus/
echo "done"
echo "Sauvegarde terminée."
exit 0
===== Sauvegarde d'une config mailman + archives =====
#!/bin/sh
# sauvegarde des abonnements, des confs et des mbox des listes en aldil.org
# Loïs - 20051218 -> 2000127
# Dup - 20060112
DATE=$(date +%Y%m%d)
LISTES="journees membres aldil code linuxchixfrance publique annonces debats zope-lyon"
MM_DIR="/var/lib/mailman/archives/private"
BK_DIR="/home/maintenance/sauvegardes"
#mkdir -p $BK_DIR/
echo ""
echo "$DATE"
for i in $LISTES;
do
mkdir -p $BK_DIR/$DATE/$i
echo "sauvegarde de $i"
# sauvegarde des abonnements pour $i
/usr/sbin/list_members -o $BK_DIR/$DATE/$i/abo.lst $i
/usr/sbin/list_members -i -o $BK_DIR/$DATE/$i/abo-invalid.lst $i
# sauvegarde de la conf de $i
/usr/sbin/config_list -o $BK_DIR/$DATE/$i/config $i
# sauvegarde de la mbox de $i
if [[ -e $MM_DIR/$i.mbox/$i.mbox ]]
then
cp $MM_DIR/$i.mbox/$i.mbox $BK_DIR/$DATE/$i/$i.mbox
bzip2 $BK_DIR/$DATE/$i/$i.mbox
# FIXME pourrait être remplacé par :
# cat $MM_DIR/$i.mbox/$i.mbox | bzip2 -c > $BK_DIR/$DATE/$i/$i.mbox.bz2
else
echo "pas d'archives pour $i"
fi
# attribution des droits sur la sauvegarde
/bin/chown -R maintenance:maintenance $BK_DIR/*
/bin/chmod -R u=rwX,go=rX $BK_DIR/*
echo "$i ok"
echo ""
done
exit