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="<deleted>"
PASSWD="<deleted>"
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
 
scripts/exemples/backups.txt · Dernière modification: 2007/01/27 21:42 par lois