Hallo,
ich bin aktuell dabei meine Dokumente von ecoDMS nach paperless-ngx zu migrieren. Hierfür habe ich einen separaten Share angelegt und würde jetzt gerne bestimmte Verzeichnisse von diesem Share auf einen anderen Share (gleiche NAS und Volume) kopieren, welcher auch per HB regelmäßig gesichert wird (siehe auch hier ff.).
Ich würde das Script gerne als root ausführen, damit die Rechte über den Parameter "-a" übernommen werden. Das funktioniert jetzt auch soweit. Ich hatte allerdings das Problem, dass wenn die Protokoll-Dateien noch nicht vorhanden waren, der Benutzer root diese angelegt hat und ich mit dem normalen user darauf keine Leserechte hatte. Dies würde ich im Script jetzt wie folgt abfangen wollen.
Sobald eine Protokoll-Datei nicht vorhanden ist, soll er mir den Exit-Code 64 ausgeben (ist kein reservierter Code). Im Aufgabenplaner der Synology habe ich eine Aufgabe mit einem benutzerdefinierten Skript erstellt, welches mir bei einem Exitcode <> 0 eine Mail mit dem Hinweis der fehlenden Protokolldateien sendet.
Da ich vom Programmieren so gut wie keine Ahnung habe, wäre es super, wenn hier mal ein paar Experten draufschauen. Bin über jeden Verbesserungsvorschlag dankbar.
Gruß
Frank
ich bin aktuell dabei meine Dokumente von ecoDMS nach paperless-ngx zu migrieren. Hierfür habe ich einen separaten Share angelegt und würde jetzt gerne bestimmte Verzeichnisse von diesem Share auf einen anderen Share (gleiche NAS und Volume) kopieren, welcher auch per HB regelmäßig gesichert wird (siehe auch hier ff.).
Ich würde das Script gerne als root ausführen, damit die Rechte über den Parameter "-a" übernommen werden. Das funktioniert jetzt auch soweit. Ich hatte allerdings das Problem, dass wenn die Protokoll-Dateien noch nicht vorhanden waren, der Benutzer root diese angelegt hat und ich mit dem normalen user darauf keine Leserechte hatte. Dies würde ich im Script jetzt wie folgt abfangen wollen.
Code:
#!/bin/sh
#Version: 15.03.2024
#Datensicherung Share "paperless" auf auf den Share "Daten"
#ausser die in der Variable "ausschluss" hinterlegten Ordner/Dateien
#Aktuell nur die PostgreSQL-DB, da diese über einen tgl. Dump im
#backup-Verzeichnis gesichert wird; wird über dieses Job allerdings
#mitgesichert!
backup_source="/volume1/docker/paperless/"
backup_target="/volume1/vm_daten/backup"
ausschluss="/volume1/vm_daten/test/ausschluss.txt"
protokoll="/volume1/vm_daten/test/protokoll.log"
protokoll_err="/volume1/vm_daten/test/protokoll_err.log"
akt_date=$(date +%d.%m.%Y)
akt_time=$(date +%H:%M:%S)
ls $protokoll > /dev/null 2>&1
rc_1=$?
ls $protokoll_err >/dev/null 2>&1
rc_2=$?
rc=$(expr $rc_1 + $rc_2)
if [ $rc -gt 0 ]
then
echo "protokolldatei nicht vorhanden"
exit 64
fi
echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" >> $protokoll_err
echo "Datum der Sicherung: " $akt_date " / " $akt_time >> $protokoll_err
echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" >> $protokoll
echo "Datum der Sicherung: " $akt_date " / " $akt_time >> $protokoll
rsync -av --exclude-from="$ausschluss" ${backup_source} ${backup_target} >> $protokoll 2>> $protokoll_err
Da ich vom Programmieren so gut wie keine Ahnung habe, wäre es super, wenn hier mal ein paar Experten draufschauen. Bin über jeden Verbesserungsvorschlag dankbar.
Gruß
Frank