wok view mirror-tools/stuff/home/backups/mirror/backup.sh @ rev 5649

mirror-tools: add backup.sh
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sat May 29 13:48:15 2010 +0200 (2010-05-29)
parents
children 0c59b115eabd
line source
1 #!/bin/sh
3 KEEP=1
4 EXTRA="monthly:30:2"
5 BACKUP_USER=bellard
6 REMOTE_USER=bellard
8 backup_data()
9 {
10 while read file dirs; do
11 find $dirs | cpio -o -H newc | rgzip -9 > $file.cpio.gz 2> /dev/null
12 done <<EOT
13 etc /etc /home/$BACKUP_USER/.ssh
14 www /var/www/mirror-info /var/www/pizza
15 packages /var/lib/tazpkg/installed
16 rrd /var/spool/rrd
17 crontabs /var/spool/cron/crontabs
18 awstats /var/lib/awstats
19 EOT
20 }
22 #
23 # The following should be kept untouched.
24 #
26 SSH="ssh -i /home/$BACKUP_USER/.ssh/id_rsa"
28 cd $(dirname $0)
29 [ $(id -u) == 0 ] || exit 1
30 [ $(hostname) == $(basename $PWD) ] || exit 1
32 rotate()
33 {
34 local i
35 local j
36 for j in $(seq $(($1 - 1)) -1 1); do
37 for i in *.$2.$(($j - 1)) ; do mv -f $i ${i%.$2.*}.$2.$j; done
38 done
39 }
41 [ -n "$EXTRA" ] && for x in $EXTRA ; do
42 IFS=':' ; set -- $x ; unset IFS
43 suffix=$1
44 days=$2
45 keep=$3
46 for i in *.gz ; do
47 mtime=$(( $(stat -c %Y $i) - ($days * 24 * 3600) ))
48 j=$i.$suffix.0
49 [ -e $j ] && [ $(stat -c %Y $j) -gt $mtime ] && continue
50 rotate $keep gz.$suffix
51 ln $i $j
52 done
53 done
54 if [ 0$KEEP -gt 0 ]; then
55 [ $KEEP -gt 1 ] && rotate $KEEP gz
56 for i in *.gz ; do mv -f $i $i.0; done
57 fi
59 backup_data
61 chown $BACKUP_USER *
62 chmod 700 *
64 for i in $(cd .. ; ls); do
65 [ $i == $(hostname) ] && continue
66 rsync -aH -e "$SSH" --bwlimit=50 $REMOTE_USER@$i.slitaz.org:/home/backups/$i/. ../$i/.
67 done