Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| linux:backupscript [2020/05/04 12:58] – angelegt - Externe Bearbeitung 127.0.0.1 | linux:backupscript [2025/02/23 10: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 | ||