backup Skript lokal

In diesem Forum können Fragen zum OrderSprinter gestellt werden.
anno
Beiträge: 15
Registriert: Mi 20. Aug 2025, 07:37

backup Skript lokal

Beitrag 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.
Dateianhänge
backup-db-linux-local.zip
(913 Bytes) 107-mal heruntergeladen
pichel
Administrator
Beiträge: 1447
Registriert: So 13. Sep 2015, 19:48
Wohnort: Hamburg
Kontaktdaten:

Re: backup Skript lokal

Beitrag von pichel »

Hallo Anno,

vielen Dank für diese Beiträge!

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

Gruß,

Stefan
Stefan Pichel
Entwickler der Kassensoftware OrderSprinter (http://www.ordersprinter.de)
Gerhard
Beiträge: 12
Registriert: Mo 24. Okt 2022, 11:46

Re: backup Skript lokal

Beitrag 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
anno
Beiträge: 15
Registriert: Mi 20. Aug 2025, 07:37

Re: backup Skript lokal

Beitrag von anno »

Danke für die Erweiterung.

Ich werde es mal ausprobieren :D
Antworten