Seite 1 von 1

backup Skript lokal

Verfasst: Fr 5. Sep 2025, 17:28
von anno
Hallo,

ich habe ein Update Skript gebaut, das das Backup in einem lokalen Ordner ausführt. Somit kann man es z.B. für DropBox oder andere Cloud Dienste verwenden.

Alle Dateien sind mit Datum und Uhrzeit eindeutig benannt.

Re: backup Skript lokal

Verfasst: Fr 5. Sep 2025, 18:48
von pichel
Hallo Anno,

vielen Dank für diese Beiträge!

ich glaube, dieses Skript wird bestimmt gerne von anderen Anwenden benutzt.

Gruß,

Stefan

Re: backup Skript lokal

Verfasst: Fr 24. Okt 2025, 18:16
von Gerhard
Hallo,

Ich nutze auch Dropbox und habe das Skript entsprechend umgeschrieben, damit die Dateinamen einzigartig sind. O
neDrive und Dropbox kommen bei gleichen Namen durcheinander.

Code: Alles auswählen

#!/bin/bash
database="ordersprinter"
user="os_"
password="xyzxyzxyz"
serverbase="http://192.168.xxx.xxx:8080"
remoteaccesscode="xyzxyzxyz"
format="osb"
DIR="/home/benutzer/Dropbox/Backup"
KEEP=8
MAILTO="xxx.yyyy@zzzz.com"
# Logging-Variable
LOG=""
function log() {
    echo "$1"
    LOG="$LOG$1\n"
}
log "Backup gestartet: $(date '+%Y-%m-%d %H:%M:%S')"
cd "$DIR" || { log "FEHLER: Konnte nicht nach $DIR wechseln!"; echo -e "$LOG" | mail -s "Backup FEHLER $(date '+%Y-%m-%d %H:%M:%S')" $MAILTO; exit 1; }
for PATTERN in "kassenbuch-*.pdf" "db-dump-*.osb"; do
  if compgen -G "$PATTERN" > /dev/null; then
    COUNT=$(ls -1 $PATTERN 2>/dev/null | wc -l)
    if [ "$COUNT" -gt "$KEEP" ]; then
      ls -1tr $PATTERN | head -n $(($COUNT - KEEP)) | xargs -d '\n' rm --
      log "Alte Dateien für Muster '$PATTERN' wurden gelöscht."
    fi
  fi
done

# Dateinamen für spätere Prüfung merken:
DBFILE="$DIR/db-dump-$(date '+%Y-%m-%d_%H-%M-%S').$format"
PDFILE="$DIR/kassenbuch-$(date '+%Y-%m-%d_%H-%M-%S').pdf"
# Sicherung der Datenbank über die OrderSprinter Backup-Funktion
wget --post-data "remoteaccesscode=$remoteaccesscode" \
     -O "$DBFILE" \
     "$serverbase/php/contenthandler.php?module=admin&command=autobackup" \
     2>>/dev/null
if [ $? -eq 0 ]; then
    log "Datenbank-Backup wurde heruntergeladen."
else
    log "FEHLER beim Herunterladen des Datenbank-Backups!"
fi

chmod 777 "$DBFILE"
echo "$DBFILE"
# Sicherung des Kassenbuchs als PDF
wget --post-data "remoteaccesscode=$remoteaccesscode" \
     -O "$PDFILE" \
     "$serverbase/php/contenthandler.php?module=bill&command=autoBackupPdfSummary&lang=0" \
     2>>/dev/null
if [ $? -eq 0 ]; then
    log "Kassenbuch-PDF wurde heruntergeladen."
else
    log "FEHLER beim Herunterladen des Kassenbuch-PDF!"
fi
chmod 777 "$PDFILE"
echo "$PDFILE"
# Integritätsprüfung der Backups:
ERROR=0
if [ ! -s "$DBFILE" ]; then
    log "FEHLER: Die Datenbank-Backup-Datei ($DBFILE) existiert nicht oder ist leer!"
    ERROR=1
else
    log "Datenbank-Backup-Datei vorhanden und nicht leer."
fi
if [ ! -s "$PDFILE" ]; then
    log "FEHLER: Die Kassenbuch-PDF-Datei ($PDFILE) existiert nicht oder ist leer!"
    ERROR=1
else
    log "Kassenbuch-PDF-Datei vorhanden und nicht leer."
fi
cd /
if [ $ERROR = 0 ]; then 
   SUBJECT="Backup erfolgreich $(date '+%Y-%m-%d %H:%M:%S')"
else 
   SUBJECT="Backup FEHLER $(date '+%Y-%m-%d %H:%M:%S')"
fi
echo -e "$LOG" | mail -s "$SUBJECT" $MAILTO
exit $ERROR
Wenn alles geklappt hat, schicke ich mir selbst eine E-Mail.

Allerdings bin ich mir nicht mehr ganz sicher, welche Anleitung ich benutzt habe.
https://www.ksite.de/blog/mailversand-m ... er-ubuntu/

Das sind meine Settings

Code: Alles auswählen

#sudo nano ~/.msmtprc
#  GNU nano 7.2                                                                                                
#defaults
#auth           on
#tls            on
#tls_trust_file /etc/ssl/certs/ca-certificates.crt
#logfile        ~/.msmtp.log
#
#account        gmail
#host           smtp.gmail.com
#port           587
#from           xxxyyyy.zz@gmail.com
#user           xxxyyyy.zz@gmail.com
#password       xxxyyyyzzzzz
#
#account default : gmail
Viel Spaß beim Nachmachen!
LG Gerhard

Re: backup Skript lokal

Verfasst: Mo 27. Okt 2025, 09:55
von anno
Danke für die Erweiterung.

Ich werde es mal ausprobieren :D