summaryrefslogtreecommitdiff
path: root/backup.sh
blob: bf0b125b1865bebf8c8160569c2758c9968e02d0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#!/bin/bash

logger="/usr/bin/logger -p local1.info -t backup"
short=$( hostname -s )
RSYNC_DST="rsync://172.19.1.12/backup_$short"

# find backup folder
if [ -e /srv/backup ]; then
    folder=/srv/backup
else
    folder=$1
fi
if [ "$folder" = "" ]; then
    /usr/bin/logger -p local1.info -t backup  "Crap. Can't find settings folder, give me a folder as option"
    echo "Crap. Can't find settings folder, give me a folder as option"
    exit 1
fi


## Settings file
if [ -f $folder/settings ]; then
    /usr/bin/logger -p local1.info -t backup  "Using settings file"
    echo "Using settings file"
    . $folder/settings
fi

## Dump packages
echo Dump packages
dpkg --get-selections >$folder/packages.list

## MySQL backup
if [ "${MYSQL_DATABASES:-}" != "" ]; then
    echo -n mysql dump
    /usr/bin/logger -p local1.info -t backup  "Backup mysql"
    mkdir -p $folder/sql
    for i in $MYSQL_DATABASES
    do
	/usr/bin/logger -p local1.info -t backup  "Backup of mysql database: $i"
	if [ "${MYSQL_PASSWORD:-}" != "" ]; then
        	output=$( mysqldump --events --routines --triggers -p$MYSQL_PASSWORD $i | bzip2 >$folder/sql/$i.sql.bz2 2>&1)
	else
		output=$( mysqldump --events --routines --triggers $i | bzip2 >$folder/sql/$i.sql.bz2 2>&1)
	fi
	if [ $? -gt 0 ]; then
		echo $outlog | mail -s "Error on mysql backup $(hostname)" torben.egmose@gmail.com
	fi
	/usr/bin/logger -p local1.info -t backup  "$outlog"
	echo $output
    done
    echo done
fi

RSYNC_EXTRA=${RSYNC_EXTRA:-}

# dynamic rsync list
if [ -e $folder/dont.list ]; then
    RSYNC_EXTRA="$RSYNC_EXTRA --exclude-from=$folder/dont.list "
fi

output=$( (
[ -e /etc/ntp.conf ] && echo /etc/ntp.conf
[ -e /etc/iptables/rules ] && echo /etc/iptables/rules
[ -e /etc/iptables/rules.v4 ] && echo /etc/iptables/rules.v4
[ -e /etc/iptables/rules.v6 ] && echo -e /etc/iptables/rules.v6
[ -e /etc/pure-ftpd ] && echo /etc/pure-ftpd/
[ -e /usr/bin/mysqld_safe ] && echo /etc/mysql/
[ -e /etc/cups ] && echo /etc/cups
[ -e /etc/mdadm/mdadm.conf ] && echo /etc/mdadm/mdadm.conf
[ -e /etc/sudoers ] && echo /etc/sudoers
[ -e /opt/ ] && echo /opt/
[ -e /etc/auto.master.d/ ] && echo /etc/auto.master.d/
[ -e /etc/postfix/ ] && echo -e "/etc/postfix/\n/etc/aliases"
[ -e /etc/samba/ ] && echo /etc/samba/
[ -e /etc/krb5.conf ] && echo /etc/krb5.conf
[ -e /etc/bind/named.conf ] && echo -e "/etc/bind/named.conf\n/var/cache/bind/"
[ -e /etc/sudoers.d ] && echo /etc/sudoers.d/
[ -e /usr/share/pam-configs ] && echo /usr/share/pam-configs/
[ -e /etc/ngnix ] && echo -e "/etc/nginx"
[ -e /etc/stunnel ] && echo /etc/stunnel/
[ -e /etc/rsyncd.conf ] && echo /etc/rsyncd.conf
[ -e /etc/modules ] && echo /etc/modules
[ -e /lib/udev/devices ] && echo /lib/udev/devices
[ -e /usr/bin/locate ] && /usr/bin/locate -r "^/\(home\|root\).*/\.ssh$"
[ -e /etc/syslog-ng ] && echo /etc/syslog-ng
[ -e /etc/rsyslog ] && echo /etc/rsyslog
echo -e "/etc/fstab
$folder
/etc/apt/sources.list
/etc/rc.local
/etc/resolv.conf
/etc/network/interfaces
/etc/hosts
/etc/pam.d/
/etc/nsswitch.conf
/var/spool/cron/crontabs/
/usr/local/bin/"
[ -e $folder/file.list ] && cat $folder/file.list
) | rsync -v --stats --recursive --copy-links --times --whole-file --delete --chmod=a+rwx --perms --files-from=- $RSYNC_EXTRA / $RSYNC_DST  )
if [ $? -gt 0 ]; then
	echo $output | mail -s "Error on backup $(hostname)" torben.egmose@gmail.com
	echo $output
fi
/usr/bin/logger -p local1.info -t backup  "$outlog"


echo local backup script
if [ -e /opt/bin/backup.sh ]; then
	output=$( /opt/bin/backup.sh 2>&1 )
	if [ $? -gt 0 ]; then
		echo $output | mail -s "Error on backup localscript $(hostname)" torben.egmose@gmail.com
	fi
	/usr/bin/logger -p local1.info -t backup  "$outlog"
	echo $output
fi

echo done

#monitor backup
if [ -e $folder/seen ]; then 
 $folder/seen backup
fi