Spart Zeit für die schnelle Sicherung zwischendurch (z.B.auf Stick).
Voraussetzungen:
#!/bin/bash
# SICHERUNG VON WEBPROJEKTEN
# @author hli
# Copyright (c) 2016 hli info@lbm-services.de
# MIT License https://opensource.org/licenses/MIT
# Official Open-Source-Version 0.2
TIMESTAMP=$(date +%Y%m%d)
LOG="backup-$TIMESTAMP.log" #
DRIVE="/media/hli/USB_32G" # your media here
PROJECT="YOUR-PROJECT" # subdir of /home//Documents or change path below
WWWDIR="htdocs" # subdir of /var/www or change path below
DB="DBNAME" # db
TAR="tar cJ" # we use xz for best compression ratio
EXCLUDE_DIRS=(media lib var/cache var/session var/report downloader magmi .git) # excludes for www-dir no trailing slashes!
# -- FUNKTION FORMATIERT AUSGABE --#
function fmsg {
local MSG=$1
SIZE=${#MSG}
echo "$MSG" | tee -a $DRIVE/$PROJECT/$LOG
v=$(printf "%-${SIZE}s")
echo "${v// /-}" | tee -a $DRIVE/$PROJECT/$LOG
}
# -- SKRIPT START --#
echo
MSG="$(date +'%Y-%m-%d %H:%M:%S') - SICHERUNGSSKRIPT `basename "$0"` GESTARTET..."
fmsg "$MSG"
# -- SICHERUNGSMEDIUM FINDEN / WENN NICHT ABBRECHEN --#
if [ -w $DRIVE ]; then
MSG="$DRIVE vorhanden!"
fmsg "$MSG"
else
echo ">>> Kein Backupmedium vorhanden. <<<" | tee -a $DRIVE/$PROJECT/$LOG
DRIVE='/home/hli/Dokumente/_Backup'
if [ ! -w $DRIVE ]; then
echo ">>> FEHLER: $DRIVE not writeable: no backup medium useable. Exiting."
exit
fi
MSG="Sichere auf $DRIVE" | tee -a $DRIVE/$PROJECT/$LOG
fmsg "$MSG"
fi
if [ ! -d "$DRIVE/$PROJECT" -a ! -w "$DRIVE/$PROJECT" ]; then
MSG="Creating Project-Dir $DRIVE/$PROJECT..."
fmsg "$MSG"
mkdir "$DRIVE/$PROJECT"
fi
# -- TAR BEFEHL UM EXCLUDES ERGÄNZEN --#
for item in ${EXCLUDE_DIRS[*]}
do
TAR="$TAR --exclude=*/$item/*"
done
# -- WWW SICHERUNG --- #
MSG="$(date +'%Y-%m-%d %H:%M:%S') - Erstelle Backup von $WWWDIR..."
fmsg "$MSG"
$TAR -f $DRIVE/$PROJECT/$WWWDIR-local-$TIMESTAMP.tar.xz /var/www/$WWWDIR
#-- PROJEKTVERZEICHNIS SICHERUNG --#
MSG="$(date +'%Y-%m-%d %H:%M:%S') - Erstelle Backup von Projectverzeichnis Dokumente/$PROJECT ..."
fmsg "$MSG"
tar cJf $DRIVE/$PROJECT/$PROJECT-docs.tar.xz Documents/$PROJECT
#-- ZEITERFASSUNG SICHERUNG --#
# If you do not use fanurio for time tracking, comment out the following 4 lines:
MSG="$(date +'%Y-%m-%d %H:%M:%S') - Erstelle Backup von Zeiterfassung ..."
fmsg "$MSG"
tar czf $DRIVE/$PROJECT/fanurio-$TIMESTAMP.tgz .fanurio/
#-- DB SICHERUNG --#
MSG="$(date +'%Y-%m-%d %H:%M:%S') - Erstelle DB-Dump von $DB ..."
fmsg "$MSG"
mysqldump -uroot $DB -r $DRIVE/$PROJECT/$DB-dump-$TIMESTAMP.sql
MSG="$(date +'%Y-%m-%d %H:%M:%S') - Komprimiere DB-Dump $DB-dump-$TIMESTAMP.sql..."
fmsg "$MSG"
xz $DRIVE/$PROJECT/$DB-dump-$TIMESTAMP.sql
#-- ZUSAMMENFASSUNG AUSGABE --#
MSG="Dateien im Backupverzeichnis:"
fmsg "$MSG"
ls -thl $DRIVE/$PROJECT | tee -a $DRIVE/$PROJECT/$LOG
echo
du -sh $DRIVE/$PROJECT | tee -a $DRIVE/$PROJECT/$LOG
echo
MSG="$(date +'%Y-%m-%d %H:%M:%S') - BACKUP auf $DRIVE/$PROJECT abgeschlossen."
SIZE=${#MSG}
v=$(printf "%-${SIZE}s")
echo "${v// /-}" | tee -a $DRIVE/$PROJECT/$LOG
fmsg "$MSG"
exit