Linux Datensicherung Script
#!/bin/bash
# Marco Krage, Adi Stiller 26.07.2012
### Installation:
## Auf jeweiligem Server per SSH verbinden und folgendes ausfuehren:
## ssh root@svr-file2 'cat /data/backup-install.sh' | sh
## backup-install.sh: scp root@svr-file2:/data/backup.sh /usr/local/bin/ && chmod a+x /usr/local/bin/backup.sh && echo "00 23 * * * root /usr/local/bin/backup.sh" >> /etc/crontab && vi /usr/local/bin/backup.sh
##
## Oder fuer Admin
## touch /usr/local/bin/backup.sh && chmod a+x /usr/local/bin/backup.sh && vi /etc/crontab && vi /usr/local/bin/backup.sh
## 0 23 * * * root /usr/local/bin/backup.sh >> /datensicherung/dasi.log
# Datensicherungsziel OHNE abschliessenden Slash
DEST="/backup"
# Dateien loeschen die aelter als X Minuten sind (1440 = 24 Stunden)
OLDMIN="1380" # 23 Stunden
# MySQL Zugangsdaten
DBUSER=""
DBPASS=""
# MySQL Datenbanken (Leerzeichen getrennt)
DBS=""
# Datei -/Ordnerpfade (Leerzeichen getrennt, ohne abschliessenden Slash)
DIRS="/home/pi /var/www /usr/local/bin /usr/local/sbin /etc"
EXDIRS="/var/www/webcam/archiv"
#### Ab hier Finger weg, wenn keine Ahnung ####
# binary Pfade
BINHOSTNAME=`which hostname`
BINMYSQLDUMP=`which mysqldump`
BINTAR=`which tar`
BINGZIP=`which gzip`
BINCAT=`which cat`
BINFIND=`which find`
BINRM=`which rm`
BINMOUNT=`which mount`
BINUMOUNT=`which umount`
# Timestamp fuer logging
LOGTS="$(date "+%b %d %Y %H:%M:%S")"
# Filename prefix
FILEPREFIX="$(date +%Y-%m-%d_%H-%M).`${BINHOSTNAME} -s`"
#
# MySQL
#
for db in ${DBS}
do
echo "${LOGTS} sichere Datenbank: $db"
${BINMYSQLDUMP} -u${DBUSER} --password=${DBPASS} --opt $db | ${BINGZIP} -c | ${BINCAT} > "${DEST}/${FILEPREFIX}.$db.sql.gz"
done
#
# Dateien
#
echo "${LOGTS} sichere Dateien: ${DIRS}"
${BINTAR} -zcvf "${DEST}/${FILEPREFIX}.files.tar.gz" ${DIRS} --exclude=${EXDIRS} 1> /dev/null
#
# Alte Backups loeschen
#
echo "${LOGTS} loesche Backups welche aelter als ${OLDMIN} Sekunden sind"
${BINFIND} ${DEST}/*.gz -type f -mmin +${OLDMIN} -exec ${BINRM} {} \;
#
# Dropbox Upload
#
cp $(ls -t /backup/*.gz |head -n 1) /tmp/raspberrypi.files.tar.gz
/usr/local/bin/dropbox_uploader.sh upload /tmp/raspberrypi.files.tar.gz
rm /tmp/raspberrypi.files.tar.gz
exit 0