mail log file

This commit is contained in:
Hartmut Bauer committed 2025-04-05 16:06:08 +02:00
1 parent b079912dc7
commit d7dd6cc92f
3 files changed
+70 -16

No files matched your search

+10 -9
View File
@@ -4,6 +4,7 @@
DC-Dump
- new for postgres
> server exec postgres su - postgres -c pg_dumpall >pg.dump
- jede db einzeln?
- +mariadb
- hooks für weitere
@@ -33,16 +34,16 @@ nas-backup weekly 1
logging
- für auto-fns mail()
- mail() loggt in extra Datei und ruft log(), für std log
- Name std log in mail() ausgeben
- mail log lokal anlegen (wo?)
- am Ende von auto mail log in mail und file löschen -> py-script
- alle Programme müssen stdout/stderr auf std log umleiten
- für jeden Lauf neue log datei (+date)
- Name der log Datei bei !auto auf stderr ausgeben (damit stdout ggf. geparst werden kann, alt.: param --machine)
- log file in nfs/backups/log/$HOST_NAME-$(date '+%Y-%m-%d_%H%M').log
(x) mail() loggt in extra Datei und ruft log(), für std log
(x) Name std log in mail() ausgeben
(-) mail log lokal anlegen (wo?)
(-) am Ende von auto mail log in mail und file löschen -> py-script
(x) alle Programme müssen stdout/stderr auf std log umleiten
(x) für jeden Lauf neue log datei (+date)
(-) Name der log Datei bei !auto auf stderr ausgeben (damit stdout ggf. geparst werden kann, alt.: param --machine)
(x) log file in nfs/backups/log/$HOST_NAME-$(date '+%Y-%m-%d_%H%M').log
- bei jedem Lauf alte logs löschen (7d?) -> wie?
- evtl. logs lokal ablegen und am Ende auf NAS kopieren
(-) evtl. logs lokal ablegen und am Ende auf NAS kopieren
backup server+nas extern
- rsync nas-backup 2x HDD intern (weekly) (5TB?)
+57 -7
View File
@@ -7,14 +7,28 @@ PASSPHRASE=1234567890
EXT=tgz.gpg
LIST_EXT=txt
LOG_RECIPIENT=hb242@pm.me
INFO=INFO
WARN=WARN
ERROR=ERROR
DEBUG=DEBUG
SUCCESS="*** success"
INF="---"
WRN=":::"
ERR="###"
DBG="==="
dump_mariadb() {
# TODO
echo
}
dump_postgresql() {
# TODO
echo
}
# docker compose ausführen
#
# $1 ff. - compose parameter, z.B. up -d
@@ -48,10 +62,6 @@ isFunction() { declare -Ff "$1" ; }
# Log-Datei schreiben.
#
# Die Ausgabe geht auch auf STDOUT, dadurch kann die vollständige Ausgabe,
# einschließlich Status- und Fehlermeldungen der Programme in ein erweitertes
# Log für die Fehlersuche umgeleitet werden.
#
# $1 - Typ, z.B. INFO, WARN, ERROR, etc.
# $2 ff. - die Meldung, die ins Log geschreiben wird
#
@@ -63,6 +73,15 @@ log() {
}
# Reduziertes Log für automatische Läufe
#
# Das Log wird am Ende des Laufs als Mail verschickt. Die Meldungen
# werden zusätzlich im Standard-Log protokolliert.
# Dieses log wird nur geschrieben, wenn $MAIL_LOG_FILE definiert ist.
#
# $1 - Typ, z.B. INFO, WARN, ERROR, etc.
# $2 ff. - die Meldung, die ins Log geschreiben wird
#
mail_log() {
local type=$1
shift
@@ -72,6 +91,13 @@ mail_log() {
log "$type" "$@"
}
# Reduziertes Log senden
#
send_mail_log() {
log $DEBUG "$DBG > $HERE/mail.sh $LOG_RECIPIENT \"[$HOST_NAME] Nightly Backup\" $MAIL_LOG_FILE"
$HERE/mail.sh $LOG_RECIPIENT "[$HOST_NAME] Nightly Backup" $MAIL_LOG_FILE >>$LOG_FILE 2>&1
}
# check if $1 is error (!=0) and write result to log
#
# $1 - return code to check
@@ -97,6 +123,8 @@ is_error() {
#
# $1, ff. - return codes
#
# returns 0 for success, 1 for one or more errors
#
check_pipe_rc() {
local result=0
local count=1
@@ -119,6 +147,8 @@ check_pipe_rc() {
# $1 - Verzeichnis auf Server
# $2 - Ziel-Verzeichnis auf der NAS
#
# returns return code of mv
#
copy_to_nas() {
log $DEBUG "$DBG copy_to_nas $@"
local source="$1"
@@ -167,6 +197,8 @@ iterate_dirs_in() {
#
# $1 - dir to check
#
# returns 0 for success, 1 otherwise
#
check_directory() {
log $DEBUG "$DBG check_directory $@"
local dir=$1
@@ -186,6 +218,8 @@ check_directory() {
#
# $1 - zu löschendes Verzeichnis
#
# returns 0 for success, 1 otherwise
#
delete_dir() {
log $DEBUG "$DBG delete_dir $@"
local dir=$1
@@ -208,6 +242,8 @@ backup_file_prefix() {
# $2 - Zielverzeichnis für .tgz.gpg-Dateien
# $3 ff. - Verzeichnisse, die nicht gesichert werden sollen (kann leer bleiben)
#
# returns 0 for success, 1 otherwise
#
backup_all_dirs() {
log $DEBUG "$DBG backup_all_dirs $@"
local root=$1
@@ -240,6 +276,8 @@ backup_all_dirs() {
# $2 - Zielpfad und -name für das Archiv
# $2 - zu sicherndes Verzeichnis
#
# returns 0 for success, 1 otherwise
#
backup_dir() {
log $DEBUG "$DBG backup_dir $@"
local root=$1
@@ -259,6 +297,8 @@ backup_dir() {
# hier wird dann dass hostname-script gesourced (s.o.) und in einer Schleife werden die
# entsprechend en backup_*-Funktionen aufgerufen
#
# returns 0 for success, 1 otherwise
#
do_auto_backup() {
log $DEBUG "$DBG do_auto_backup $@"
local func=$1
@@ -301,13 +341,13 @@ backup_daily() {
mail_log $INFO ">>>>>>>>>> daily auto backup $VER for $HOST_NAME <<<<<<<<<<"
do_auto_backup backup_daily
mail_log $INFO ">>>>>>>>>> end of auto backup"
# TODO mail log
send_mail_log
}
backup_weekly() {
mail_log $INFO ">>>>>>>>>> weekly auto backup $VER for $HOST_NAME <<<<<<<<<<"
do_auto_backuo backup_weekly
mail_log $INFO ">>>>>>>>>> end of auto backup"
# TODO mail log
send_mail_log
}
export_backups() {
@@ -317,13 +357,15 @@ export_backups() {
# check USB drive
# del USB drive (?)
# rsync USB -> 1|2, video, serien
# mail log
# send_mail_log
}
# Inhalt des Archivs in eine Textdatei ausgeben.
#
# $1 - Archiv
#
# returns 0 for success, 1 otherwise
#
create_list() {
log $DEBUG "$DBG create_list $@"
local archive=$1
@@ -338,6 +380,8 @@ create_list() {
#
# $1 - Archiv
#
# returns 0 for success, 1 otherwise
#
test_integrity() {
log $DEBUG "$DBG test_integrity $@"
local archive=$1
@@ -354,6 +398,8 @@ test_integrity() {
# $1 - Archiv, ggf. mit Pfad
# $2 ff. - zurückzusichernde Dateien/Verzeichnisse
#
# returns 0 for success, 1 otherwise
#
restore() {
log $DEBUG "$DBG restore $@"
local archive=$1
@@ -376,6 +422,8 @@ restore() {
#
# $1 - Verzeichnis unter dem alle Backups liegen
#
# returns 0 for success, 1 otherwise
#
list_archives() {
log $DEBUG "$DBG list_archives $@"
local target=$1
@@ -391,6 +439,8 @@ list_archives() {
# $1 - Verzeichnis unter dem alle Backups liegen
# $2 - Archiv-Datei mit Pfad ab $1
#
# returns 0 for success, 1 otherwise
#
list_archive_content() {
log $DEBUG "$DBG list_archive_content $@"
local root=$1
+3
View File
@@ -21,6 +21,9 @@ backup_daily3() {
before_backup() {
dump_mariadb
dump_postgresql
# TODO error handling
stop_docker
return $?
}