]> git.immae.eu Git - perso/Immae/Projets/Puppet.git/blob - modules/role/templates/backup/backup_immae_eu.sh.erb
4fab30e9d8defc21eddb13df992d652b77eddaea
[perso/Immae/Projets/Puppet.git] / modules / role / templates / backup / backup_immae_eu.sh.erb
1 #!/bin/bash
2 DEST="<%= @dest %>"
3 MAILTO="<%= @mailto %>"
4 BASE="<%= @base %>"
5 OLD_BAK_BASE=$BASE/older/j
6 BAK_BASE=${OLD_BAK_BASE}0
7 RSYNC_OUTPUT=$BASE/rsync_output
8 NBR=7
9
10 TMP=`mktemp`
11 TMP_STDERR=`mktemp`
12
13 trap "rm -f $TMP $TMP_STDERR" EXIT
14
15 exec 2> "$TMP_STDERR"
16
17 set -e
18 if ! `ssh -o ClearAllForwardings=yes $DEST backup`; then
19 echo "Fichier de verrouillage backup sur $DEST"
20 exit 1
21 fi
22
23 rm -rf ${OLD_BAK_BASE}${NBR}
24 for j in `seq -w $(($NBR-1)) -1 0`; do
25 [ ! -d ${OLD_BAK_BASE}$j ] && continue
26 mv ${OLD_BAK_BASE}$j ${OLD_BAK_BASE}$(($j+1))
27 done
28 mkdir $BAK_BASE
29 mv $RSYNC_OUTPUT $BAK_BASE
30 mkdir $RSYNC_OUTPUT
31
32 ##############
33 NAME="home"
34 FOLDER="/home/immae"
35
36 cd $BASE/$NAME
37 cat > $TMP <<EOF
38 /.no_backup/
39 /hosts/florian/nobackup/
40 /hosts/connexionswing.com/
41 /hosts/connexionswing.immae.eu/
42 /hosts/ludivine.immae.eu/
43 /hosts/ludivinecassal.com/
44 /hosts/piedsjaloux.fr/
45 /hosts/piedsjaloux.immae.eu/
46 /hosts/spip/sites/*/
47 /hosts/spip/spip*
48 EOF
49 OUT=$RSYNC_OUTPUT/$NAME
50 rsync -XAavbrz --fake-super -e ssh --numeric-ids --delete \
51 --backup-dir=$BAK_BASE/$NAME --exclude-from=$TMP \
52 $DEST:$FOLDER . > $OUT || true
53
54 ##############
55 NAME="system"
56 FOLDER="/"
57
58 cd $BASE/$NAME
59 cat > $TMP <<EOF
60 /etc/
61 /srv/
62 /var/lib/
63 /var/spool/
64 /var/named/
65 /usr/local/
66 EOF
67 OUT=$RSYNC_OUTPUT/$NAME
68 rsync -XAavbrz -R --fake-super -e ssh --numeric-ids --delete \
69 --rsync-path='sudo rsync' \
70 --backup-dir=$BAK_BASE/$NAME \
71 --files-from=$TMP \
72 $DEST:$FOLDER . > $OUT || true
73
74 ##############
75 ssh $DEST sh -c "date > .last_backup"
76
77 if [ -s "$TMP_STDERR" ]; then
78 cat "$TMP_STDERR" | mail -Ssendwait -s "save_distant rsync error" "$MAILTO"
79 fi