diff options
-rwxr-xr-x | backup.sh | 121 | ||||
-rwxr-xr-x | file.list | 0 | ||||
-rwxr-xr-x | seen | 4 |
3 files changed, 125 insertions, 0 deletions
diff --git a/backup.sh b/backup.sh new file mode 100755 index 0000000..bf0b125 --- /dev/null +++ b/backup.sh @@ -0,0 +1,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 diff --git a/file.list b/file.list new file mode 100755 index 0000000..e69de29 --- /dev/null +++ b/file.list @@ -0,0 +1,4 @@ +#!/bin/bash + +/usr/bin/curl -s --data-binary "hostname=$( hostname )&service=$1" http://172.19.1.11/seen.php + |