scripts/backup.sh
allaert 011ee5f872 on sauv aussi les ml
manathan

darcs-hash:20040502155412-9f550-1adb44a2f771d2e25538ea6692dac771e361dfae.gz
2004-05-02 17:54:12 +02:00

64 lines
2.8 KiB
Bash
Executable file

#!/bin/sh
## Sauvegarde des fichiers de conf et du site web CRANS sur pegase
## Sayan 02/10/2003
## Ajout de la synchro du site web : Sayan 04/10/2003
## Ajout de la synchro des mails : Sayan 19/10/2003
## Ajout de la synchro des news et des homes : Sayan 15/11/2003
## Ajout de la synchro du wiki et de jabber : Manathan 01/05/2004
## Ajout de la synchro de mailman : Manathan 02/05/2004
## Que sauvegarder ?
confs="etc usr/cvs-rep CRANS usr/scripts boot/config*" # via bzip2
site_web="/home/httpd/CVS-Repository" # via rsync
mails="/var/spool/mail"
news="/var/spool/news"
wiki="/var/local/lib/wiki"
jabber="/var/lib/jabber"
mailman="/var/lib/mailman/archives"
homes="/home"
## Sauvegarde des confs: tar gz ($confs + dpkg_selections)
cd /
temp_dir=$(mktemp -d)
nom_archive=$temp_dir"/backup_"$(hostname)"_"$(date --iso-8601)".tar.bz2"
nom_selections=$temp_dir"/selections"
dpkg --get-selections > $nom_selections || exit 1
tar -cjf $nom_archive $confs .$nom_selections || exit 2
scp $nom_archive backupcrans@pegase: || exit 3
rm -rf $temp_dir
# rsync over ssh pour le site web, les homes, les mails et les news
# archive, compress, sparse, hard links, CVS exclude, remote shell
# archive is rlptgoD : recursive, symlinks, perms, times, group, owner, Devices
# suppr les fichiers non existant sur zamok
# synchro journalière, switch par semaine
week=$(date +%W) # numéro de la semaine
week_mod2=$(( $week % 2 ))
## Sauvegarde du Site web et des News et du wiki
rsync -atzSHe ssh --delete $site_web backupcrans@pegase:~/backup-$week_mod2/httpd || exit 4
rsync -atzSHe ssh --delete $news backupcrans@pegase:~/backup-$week_mod2/var/spool || exit 6
rsync -atzSHe ssh --delete $wiki backupcrans@pegase:~/backup-$week_mod2/wiki || exit 7
rsync -atzSHe ssh --delete $jabber backupcrans@pegase:~/backup-$week_mod2/jabber || exit 8
rsync -atzSHe ssh --delete $mailman backupcrans@pegase:~/backup-$week_mod2/mailman || exit 9
## Sauvegarde des mails
# rsync change le atime quand il lit le fichier, on perd la date de dernière consultation des mails pour le ménage des comptes
mount /var/spool/mail -o remount,noatime
rsync -atzSHe ssh --delete $mails backupcrans@pegase:~/backup-$week_mod2/var/spool || exit 5
mount /var/spool/mail -o remount,atime
## Sauvegarde des homes
# Les homes sont donnés à backupcrans.backup
# "Permission denied" errors occur because backupcrans is not root on pegase. Ignoring
temp=$(mktemp)
temp_mail=$(mktemp)
rsync -atzSHe ssh --delete $homes backupcrans@pegase:~/backup-$week_mod2 &> $temp
cat $temp | grep -viEe "^((recv_generator)|(opendir)|(stat)).*Permission denied$" | grep -vie "^skipping non-regular file" | grep -vie "^rsync error: some files could not be transferred" | grep -vie "^file has vanished" > $temp_mail
if [ -s $temp_mail ]
then
cat $temp_mail | mail -s "rsync error" roots
fi
rm $temp
rm $temp_mail