====== 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