Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
linux:backupscript [2020/05/04 14:58] – angelegt - Externe Bearbeitung 127.0.0.1 | linux:backupscript [2025/02/23 11:36] (aktuell) – [Backupscript] adi | ||
---|---|---|---|
Zeile 15: | Zeile 15: | ||
# Datensicherungsziel OHNE abschliessenden Slash | # Datensicherungsziel OHNE abschliessenden Slash | ||
DEST="/ | DEST="/ | ||
+ | TMPDIR=" | ||
BACKUPLOG=${DEST}/ | BACKUPLOG=${DEST}/ | ||
+ | MAILRCPT="< | ||
+ | |||
# Dateien loeschen die aelter als X Minuten sind (1440 = 24 Stunden) | # Dateien loeschen die aelter als X Minuten sind (1440 = 24 Stunden) | ||
OLDMIN=" | OLDMIN=" | ||
# MySQL Zugangsdaten | # MySQL Zugangsdaten | ||
+ | DBHOST="" | ||
DBUSER="" | DBUSER="" | ||
DBPASS="" | DBPASS="" | ||
Zeile 26: | Zeile 30: | ||
DBS="" | DBS="" | ||
DBIGNORE=" | DBIGNORE=" | ||
+ | |||
+ | # MongoDB Zugangsdaten | ||
+ | MONGODBUSER="" | ||
+ | MONGODBPASS="" | ||
# Datei -/ | # Datei -/ | ||
Zeile 42: | Zeile 50: | ||
BINMOUNT=`which mount` | BINMOUNT=`which mount` | ||
BINUMOUNT=`which umount` | BINUMOUNT=`which umount` | ||
+ | BINDOCKER=`which docker` | ||
+ | BINDOCKERCOMPOSE=`which docker-compose` | ||
+ | BINMAIL=`which mail` | ||
+ | BINSENDMAIL=`which sendmail` | ||
+ | BINSSMTP=`which ssmtp` | ||
+ | DOCKERCONTAINERDIR="/ | ||
# Timestamp fuer logging | # Timestamp fuer logging | ||
- | LOGTS="$(date "+%b %d %Y %H: | + | LOGTS () { |
+ | | ||
+ | } | ||
# Filename prefix | # Filename prefix | ||
Zeile 85: | Zeile 101: | ||
fi | fi | ||
+ | |||
+ | function db_backup () { | ||
# | # | ||
# MySQL | # MySQL | ||
# | # | ||
+ | |||
if [ ! -z " | if [ ! -z " | ||
- | | + | |
- | if [ ! -z " | + | if [ ! -z " |
- | DBS=$(echo " | + | DBS=$(echo " |
- | fi | + | fi |
- | for db in ${DBS} | + | for db in ${DBS} |
- | do | + | do |
- | echo "${LOGTS} sichere Datenbank: $db" | + | echo "$(LOGTS): sichere Datenbank: $db" |
- | | + | / |
- | done | + | done |
+ | if [ $? -eq 0 ]; then | ||
+ | DBBACKUP=0 | ||
+ | else | ||
+ | DBBACKUP=1 | ||
+ | fi | ||
fi | fi | ||
+ | } | ||
+ | function influxdb_backup () { | ||
+ | # | ||
+ | # Influxdb | ||
+ | # | ||
+ | INFLUXCONTAINER=$(${BINDOCKER} ps -f " | ||
+ | |||
+ | echo " | ||
+ | |||
+ | ${BINDOCKER} exec -t ${INFLUXCONTAINER} influx backup / | ||
+ | |||
+ | if [ $? -eq 0 ]; then | ||
+ | INFLUXDBBACKUP=0 | ||
+ | else | ||
+ | INFLUXDBBACKUP=1 | ||
+ | fi | ||
+ | |||
+ | mv < | ||
+ | } | ||
+ | |||
+ | unction mongodb_backup () { | ||
+ | # | ||
+ | # mongodb | ||
+ | # | ||
+ | echo " | ||
+ | |||
+ | MONGODBLIST=$(${BINDOCKER} exec mongodb sh -c "mongo -u ${MONGODBUSER} -p ${MONGODBPASS} --quiet --eval | ||
+ | |||
+ | for mdb in $MONGODBLIST | ||
+ | do | ||
+ | ${BINDOCKER} exec mongodb sh -c "exec mongodump -u ${MONGODBUSER} -p ${MONGODBPASS} --authenticationDatabase admin --quiet --tlsInsecure --db ${mdb} --archive --gzip --dumpDbUsersAndRoles > / | ||
+ | done | ||
+ | |||
+ | if [ $? -eq 0 ]; then | ||
+ | MONGODBBACKUP=0 | ||
+ | else | ||
+ | MONGODBBACKUP=1 | ||
+ | fi | ||
+ | |||
+ | } | ||
+ | |||
+ | function paperless_backup () { | ||
+ | # | ||
+ | # Paperless | ||
+ | # | ||
+ | ## backup paperless | ||
+ | echo " | ||
+ | |||
+ | ${BINDOCKER} exec -t paperless-ngx document_exporter ../export -d -z | ||
+ | |||
+ | if [ $? -eq 0 ]; then | ||
+ | PAPERLESSBACKUP=0 | ||
+ | else | ||
+ | PAPERLESSBACKUP=1 | ||
+ | fi | ||
+ | |||
+ | } | ||
+ | |||
+ | function file_backup () { | ||
# | # | ||
# Dateien | # Dateien | ||
Zeile 109: | Zeile 192: | ||
${BINTAR} -zcvf " | ${BINTAR} -zcvf " | ||
+ | CONTAINER=$(ls < | ||
+ | ## stop containers | ||
+ | for application in ${CONTAINER} | ||
+ | do | ||
+ | echo " | ||
+ | ${BINDOCKER} compose -f ${DOCKERCONTAINERDIR}/ | ||
+ | done | ||
+ | |||
+ | # sync files | ||
+ | echo " | ||
+ | mkdir ${TMPDIR} | ||
+ | rsync -a ${DIRS} ${TMPDIR} | ||
+ | if [ $? -eq 0 ]; then | ||
+ | FILEBACKUP=0 | ||
+ | else | ||
+ | FILEBACKUP=1 | ||
+ | fi | ||
+ | |||
+ | ## start containers | ||
+ | for application in ${CONTAINER} | ||
+ | do | ||
+ | echo " | ||
+ | ${BINDOCKER} compose -f ${DOCKERCONTAINERDIR}/ | ||
+ | done | ||
+ | |||
+ | # tar synced files | ||
+ | echo " | ||
+ | ${BINTAR} -cvf " | ||
+ | # ${BINTAR} -zcvf " | ||
+ | if [ $? -eq 0 ]; then | ||
+ | FILETARBACKUP=0 | ||
+ | else | ||
+ | FILETARBACKUP=1 | ||
+ | fi | ||
+ | echo " | ||
+ | rm -r ${TMPDIR} | ||
+ | } | ||
+ | function file_purge () { | ||
# | # | ||
# Alte Backups loeschen | # Alte Backups loeschen | ||
# | # | ||
- | echo "${LOGTS} loesche Backups welche aelter als ${OLDMIN} Sekunden sind" | + | echo "$(LOGTS): loesche Backups welche aelter als ${OLDMIN} Sekunden sind" |
- | ${BINFIND} ${DEST}/*.gz -type f -mmin +${OLDMIN} -exec ${BINRM} {} \; | + | ${BINFIND} ${DEST}/ |
- | exit 0 | + | ${BINFIND} ${DEST}/ |
+ | } | ||
+ | function send_mail () { | ||
# | # | ||
# Mail Backup-Log | # Mail Backup-Log | ||
# | # | ||
- | if grep -qs ' | + | if ! [[ " |
- | SUBJECT=" | + | #if [ " |
+ | SUBJECT=" | ||
else | else | ||
- | SUBJECT=" | + | SUBJECT=" |
fi | fi | ||
- | mail ${MAILRCPT} -s ${SUBJECT} << EOF | + | echo " |
- | Die erstellte Sicherungsdatei lautet: `ls -l ${DESTDIR}/${FILEPREFIX}*|awk '{print $9}' | + | ##### |
+ | #####${BINSENDMAIL} ${MAILRCPT} << EOF | ||
+ | #####${BINSSMTP} | ||
+ | subject:" | ||
- | Informationen zur Datei: | + | Die erstellten Sicherungsdateien sind: |
+ | `ls -lh -d ${DEST}/ | ||
- | `ls -lh ${DESTDIR}/${FILEPREFIX}*` | + | Informationen zum Sicherungslog: |
+ | `cat ${BACKUPLOG}|grep " | ||
- | Informationen zum Sicherungslog `ls -l ${BACKUPLOG}|awk '{print $9}'` | + | |
- | `cat ${BACKUPLOG}` | + | echo " |
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
EOF | EOF | ||
+ | } | ||
+ | |||
+ | #DBBACKUP=0 | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | |||
+ | |||
+ | db_backup | ||
+ | influxdb_backup | ||
+ | mongodb_backup | ||
+ | paperless_backup | ||
+ | file_backup | ||
+ | file_purge | ||
+ | send_mail | ||
+ | |||
exit 0 | exit 0 | ||