test
This commit is contained in:
@@ -4,171 +4,171 @@
|
|||||||
- Sicherung der Nutzdaten:
|
- Sicherung der Nutzdaten:
|
||||||
|
|
||||||
??? example "Location /paperless/backup_storage.sh"
|
??? example "Location /paperless/backup_storage.sh"
|
||||||
```
|
```
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#####!/bin/bash
|
#####!/bin/bash
|
||||||
|
|
||||||
########### Initialisierung ##############
|
########### Initialisierung ##############
|
||||||
#### https://docs.hetzner.com/de/robot/storage-box/backup-space-ssh-keys/
|
#### https://docs.hetzner.com/de/robot/storage-box/backup-space-ssh-keys/
|
||||||
|
|
||||||
## Führe auf dem Clienten die folgenden Befehle aus:
|
## Führe auf dem Clienten die folgenden Befehle aus:
|
||||||
# ssh-keygen
|
# ssh-keygen
|
||||||
# cat ~/.ssh/id_rsa.pub | ssh -p23 u338XXX@u338XXX.your-storagebox.de install-ssh-key
|
# cat ~/.ssh/id_rsa.pub | ssh -p23 u338XXX@u338XXX.your-storagebox.de install-ssh-key
|
||||||
|
|
||||||
###### Hier deine Daten einfügen #########
|
###### Hier deine Daten einfügen #########
|
||||||
export BORG_PASSPHRASE="%ci5pKqWvXj!iBm9khAR@Z2ohJ2inMMht8ZNsU*"
|
export BORG_PASSPHRASE="%ci5pKqWvXj!iBm9khAR@Z2ohJ2inMMht8ZNsU*"
|
||||||
|
|
||||||
BACKUP_USER="u358899"
|
BACKUP_USER="u358899"
|
||||||
REPOSITORY_DIR="paperless"
|
REPOSITORY_DIR="paperless"
|
||||||
##########################################
|
##########################################
|
||||||
|
|
||||||
LOG_DIR="/paperless/backuplogs"
|
LOG_DIR="/paperless/backuplogs"
|
||||||
LOG="$LOG_DIR/backup_storage.log"
|
LOG="$LOG_DIR/backup_storage.log"
|
||||||
|
|
||||||
echo "MOIN!" >> /paperless/test.log
|
echo "MOIN!" >> /paperless/test.log
|
||||||
|
|
||||||
if [ ! -d "$LOG_DIR" ]; then
|
if [ ! -d "$LOG_DIR" ]; then
|
||||||
mkdir -p "$LOG_DIR"
|
mkdir -p "$LOG_DIR"
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
full_path=$(realpath $0)
|
|
||||||
dir_path=$(dirname $full_path)
|
|
||||||
echo $dir_path
|
|
||||||
|
|
||||||
## Hinweis: Für die Verwendung mit einem Backup-Account muss
|
|
||||||
## 'your-storagebox.de' in 'your-backup.de' geändert werden.
|
|
||||||
|
|
||||||
REPOSITORY="ssh://${BACKUP_USER}@${BACKUP_USER}.your-storagebox.de:23/./backups/${REPOSITORY_DIR}"
|
|
||||||
|
|
||||||
## Zeitstempel-Variable setzen
|
|
||||||
TIMESTAMP=$(date +'%Y-%m-%d_%H:%M')
|
|
||||||
|
|
||||||
##
|
|
||||||
## Ausgabe in Logdatei schreiben
|
|
||||||
##
|
|
||||||
|
|
||||||
exec > >(tee -i ${LOG})
|
|
||||||
exec 2>&1
|
|
||||||
|
|
||||||
start_time=$(date +'%Y-%m-%d %H:%M:%S')
|
|
||||||
echo "###### Backup gestartet: $start_time ######"
|
|
||||||
|
|
||||||
## Überprüfen, ob eine spezielle Aktion durchgeführt werden soll
|
|
||||||
BACKUP_SUFFIX=""
|
|
||||||
case "$1" in
|
|
||||||
NEW_INIT)
|
|
||||||
echo "Überprüfe, ob das Verzeichnis backups/${REPOSITORY_DIR} existiert..."
|
|
||||||
ssh -p23 ${BACKUP_USER}@${BACKUP_USER}.your-storagebox.de "[ -d backups/${REPOSITORY_DIR} ] || mkdir -p backups/${REPOSITORY_DIR}"
|
|
||||||
echo "Das Repository wird komplett gelöscht und neu angelegt..."
|
|
||||||
borg delete --force --stats $REPOSITORY
|
|
||||||
borg init --encryption=repokey $REPOSITORY
|
|
||||||
BACKUP_SUFFIX="_NEW_INIT"
|
|
||||||
;;
|
|
||||||
INIT)
|
|
||||||
echo "Überprüfe, ob das Verzeichnis backups/${REPOSITORY_DIR} existiert..."
|
|
||||||
ssh -p23 ${BACKUP_USER}@${BACKUP_USER}.your-storagebox.de "[ -d backups/${REPOSITORY_DIR} ] || mkdir -p backups/${REPOSITORY_DIR}"
|
|
||||||
echo "Überprüfe, ob das Repository existiert..."
|
|
||||||
if borg info $REPOSITORY > /dev/null 2>&1; then
|
|
||||||
echo "Das Repository existiert bereits. Vorgang wird abgebrochen."
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
echo "Das Repository wird neu angelegt..."
|
|
||||||
borg init --encryption=repokey $REPOSITORY
|
|
||||||
fi
|
fi
|
||||||
BACKUP_SUFFIX="_INIT"
|
|
||||||
;;
|
|
||||||
?)
|
full_path=$(realpath $0)
|
||||||
|
dir_path=$(dirname $full_path)
|
||||||
|
echo $dir_path
|
||||||
|
|
||||||
|
## Hinweis: Für die Verwendung mit einem Backup-Account muss
|
||||||
|
## 'your-storagebox.de' in 'your-backup.de' geändert werden.
|
||||||
|
|
||||||
|
REPOSITORY="ssh://${BACKUP_USER}@${BACKUP_USER}.your-storagebox.de:23/./backups/${REPOSITORY_DIR}"
|
||||||
|
|
||||||
|
## Zeitstempel-Variable setzen
|
||||||
|
TIMESTAMP=$(date +'%Y-%m-%d_%H:%M')
|
||||||
|
|
||||||
|
##
|
||||||
|
## Ausgabe in Logdatei schreiben
|
||||||
|
##
|
||||||
|
|
||||||
|
exec > >(tee -i ${LOG})
|
||||||
|
exec 2>&1
|
||||||
|
|
||||||
|
start_time=$(date +'%Y-%m-%d %H:%M:%S')
|
||||||
|
echo "###### Backup gestartet: $start_time ######"
|
||||||
|
|
||||||
|
## Überprüfen, ob eine spezielle Aktion durchgeführt werden soll
|
||||||
|
BACKUP_SUFFIX=""
|
||||||
|
case "$1" in
|
||||||
|
NEW_INIT)
|
||||||
|
echo "Überprüfe, ob das Verzeichnis backups/${REPOSITORY_DIR} existiert..."
|
||||||
|
ssh -p23 ${BACKUP_USER}@${BACKUP_USER}.your-storagebox.de "[ -d backups/${REPOSITORY_DIR} ] || mkdir -p backups/${REPOSITORY_DIR}"
|
||||||
|
echo "Das Repository wird komplett gelöscht und neu angelegt..."
|
||||||
|
borg delete --force --stats $REPOSITORY
|
||||||
|
borg init --encryption=repokey $REPOSITORY
|
||||||
|
BACKUP_SUFFIX="_NEW_INIT"
|
||||||
|
;;
|
||||||
|
INIT)
|
||||||
|
echo "Überprüfe, ob das Verzeichnis backups/${REPOSITORY_DIR} existiert..."
|
||||||
|
ssh -p23 ${BACKUP_USER}@${BACKUP_USER}.your-storagebox.de "[ -d backups/${REPOSITORY_DIR} ] || mkdir -p backups/${REPOSITORY_DIR}"
|
||||||
|
echo "Überprüfe, ob das Repository existiert..."
|
||||||
|
if borg info $REPOSITORY > /dev/null 2>&1; then
|
||||||
|
echo "Das Repository existiert bereits. Vorgang wird abgebrochen."
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "Das Repository wird neu angelegt..."
|
||||||
|
borg init --encryption=repokey $REPOSITORY
|
||||||
|
fi
|
||||||
|
BACKUP_SUFFIX="_INIT"
|
||||||
|
;;
|
||||||
|
?)
|
||||||
|
echo -e "\n######################################"
|
||||||
|
echo -e "Verwendung des Backup-Skripts:"
|
||||||
|
echo -e "######################################"
|
||||||
|
echo -e "Ohne Parameter:"
|
||||||
|
echo -e " Führt ein reguläres Backup durch und hängt an den Backup-Namen das aktuelle Datum und die Uhrzeit."
|
||||||
|
echo -e "\nParameter:"
|
||||||
|
echo -e " NEW_INIT - Löscht das Repository komplett und legt es neu an."
|
||||||
|
echo -e " INIT - Legt das Repository neu an, wenn es nicht bereits existiert."
|
||||||
|
echo -e " ? - Zeigt diese Hilfemeldung an und bricht das Skript ab."
|
||||||
|
echo -e "\nBeispiele:"
|
||||||
|
echo -e " ./backup_script.sh"
|
||||||
|
echo -e " ./backup_script.sh NEW_INIT"
|
||||||
|
echo -e " ./backup_script.sh INIT"
|
||||||
|
echo -e " ./backup_script.sh ?"
|
||||||
|
echo -e "\nBackups auflisten mit:"
|
||||||
|
echo -e " borg list ssh://${BACKUP_USER}@${BACKUP_USER}.your-storagebox.de:23/./backups/${REPOSITORY_DIR}\n"
|
||||||
|
echo -e "Rücksichern einzelner Verzeichnisse mit:"
|
||||||
|
echo -e " cd /mytmp # Wechseln Sie in ein Testverzeichnis, um das Backup zu testen."
|
||||||
|
echo -e " borg extract ssh://${BACKUP_USER}@${BACKUP_USER}.your-storagebox.de:23/./backups/${REPOSITORY_DIR}::${TIMESTAMP}${BACKUP_SUFFIX} etc var lib lib64 sbin usr bin"
|
||||||
|
echo -e "######################################\n"
|
||||||
|
echo -e "Komplette Rücksicherung mit:"
|
||||||
|
echo -e "cd / # Wechseln Sie in das Root-Verzeichnis, um das gesamte System wiederherzustellen."
|
||||||
|
echo -e "borg extract ssh://${BACKUP_USER}@${BACKUP_USER}.your-storagebox.de:23/./backups/${REPOSITORY_DIR}::${TIMESTAMP}${BACKUP_SUFFIX}"
|
||||||
|
echo -e "######################################\n"
|
||||||
|
echo -e "Auf den Backup-Server verbinden:"
|
||||||
|
echo -e "ssh -p23 ${BACKUP_USER}@${BACKUP_USER}.your-storagebox.de"
|
||||||
|
echo -e "Verzeichnisinhalt anzeigen:"
|
||||||
|
echo -e "ls backups/${REPOSITORY_DIR}"
|
||||||
|
echo -e "Verzeichnis der aktuellen Backups löschen:"
|
||||||
|
echo -e "rm -rf backups/${REPOSITORY_DIR}"
|
||||||
|
echo -e "######################################\n"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
## Überprüfen, ob ein zusätzlicher Parameter übergeben wurde
|
||||||
|
if [ -n "$1" ] && [ "$1" != "INIT" ] && [ "$1" != "NEW_INIT" ]; then
|
||||||
|
BACKUP_SUFFIX="_$1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
##
|
||||||
|
## Zu sichernde Verzeichnisse
|
||||||
|
##
|
||||||
|
# Hier werden alle Verzeichnisse im Root-Verzeichnis gesichert, außer den ausgeschlossenen Verzeichnissen
|
||||||
|
DIRS_TO_BACKUP=(
|
||||||
|
"/paperless/paperless-ngx/export"
|
||||||
|
)
|
||||||
|
|
||||||
|
##
|
||||||
|
## Dateien ins Repository übertragen
|
||||||
|
##
|
||||||
|
|
||||||
|
echo "Übertrage Dateien ..."
|
||||||
|
borg create -v --stats \
|
||||||
|
$REPOSITORY::"${TIMESTAMP}${BACKUP_SUFFIX}" \
|
||||||
|
"${DIRS_TO_BACKUP[@]}" # \
|
||||||
|
|
||||||
|
|
||||||
|
end_time=$(date +'%Y-%m-%d %H:%M:%S')
|
||||||
|
duration=$(date -u -d @$(( $(date -d "$end_time" +%s) - $(date -d "$start_time" +%s) )) +%H:%M:%S)
|
||||||
|
|
||||||
|
echo "###### Backup beendet: $end_time ######"
|
||||||
|
echo "Time (start): $start_time"
|
||||||
|
echo "Time (end): $end_time"
|
||||||
|
echo "Duration: $duration"
|
||||||
|
|
||||||
echo -e "\n######################################"
|
echo -e "\n######################################"
|
||||||
echo -e "Verwendung des Backup-Skripts:"
|
echo -e "Backups auflisten mit:"
|
||||||
echo -e "######################################"
|
echo -e "borg list ssh://${BACKUP_USER}@${BACKUP_USER}.your-storagebox.de:23/./backups/${REPOSITORY_DIR}\n"
|
||||||
echo -e "Ohne Parameter:"
|
|
||||||
echo -e " Führt ein reguläres Backup durch und hängt an den Backup-Namen das aktuelle Datum und die Uhrzeit."
|
|
||||||
echo -e "\nParameter:"
|
|
||||||
echo -e " NEW_INIT - Löscht das Repository komplett und legt es neu an."
|
|
||||||
echo -e " INIT - Legt das Repository neu an, wenn es nicht bereits existiert."
|
|
||||||
echo -e " ? - Zeigt diese Hilfemeldung an und bricht das Skript ab."
|
|
||||||
echo -e "\nBeispiele:"
|
|
||||||
echo -e " ./backup_script.sh"
|
|
||||||
echo -e " ./backup_script.sh NEW_INIT"
|
|
||||||
echo -e " ./backup_script.sh INIT"
|
|
||||||
echo -e " ./backup_script.sh ?"
|
|
||||||
echo -e "\nBackups auflisten mit:"
|
|
||||||
echo -e " borg list ssh://${BACKUP_USER}@${BACKUP_USER}.your-storagebox.de:23/./backups/${REPOSITORY_DIR}\n"
|
|
||||||
echo -e "Rücksichern einzelner Verzeichnisse mit:"
|
echo -e "Rücksichern einzelner Verzeichnisse mit:"
|
||||||
echo -e " cd /mytmp # Wechseln Sie in ein Testverzeichnis, um das Backup zu testen."
|
echo -e "cd /mytmp # Wechseln Sie in ein Testverzeichnis, um das Backup zu testen."
|
||||||
echo -e " borg extract ssh://${BACKUP_USER}@${BACKUP_USER}.your-storagebox.de:23/./backups/${REPOSITORY_DIR}::${TIMESTAMP}${BACKUP_SUFFIX} etc var lib lib64 sbin usr bin"
|
echo -e "borg extract ssh://${BACKUP_USER}@${BACKUP_USER}.your-storagebox.de:23/./backups/${REPOSITORY_DIR}::${TIMESTAMP}${BACKUP_SUFFIX} etc var lib lib64 sbin usr bin"
|
||||||
echo -e "######################################\n"
|
echo -e "######################################\n"
|
||||||
|
|
||||||
echo -e "Komplette Rücksicherung mit:"
|
echo -e "Komplette Rücksicherung mit:"
|
||||||
echo -e "cd / # Wechseln Sie in das Root-Verzeichnis, um das gesamte System wiederherzustellen."
|
|
||||||
echo -e "borg extract ssh://${BACKUP_USER}@${BACKUP_USER}.your-storagebox.de:23/./backups/${REPOSITORY_DIR}::${TIMESTAMP}${BACKUP_SUFFIX}"
|
echo -e "borg extract ssh://${BACKUP_USER}@${BACKUP_USER}.your-storagebox.de:23/./backups/${REPOSITORY_DIR}::${TIMESTAMP}${BACKUP_SUFFIX}"
|
||||||
echo -e "######################################\n"
|
echo -e "######################################\n"
|
||||||
|
|
||||||
echo -e "Auf den Backup-Server verbinden:"
|
echo -e "Auf den Backup-Server verbinden:"
|
||||||
echo -e "ssh -p23 ${BACKUP_USER}@${BACKUP_USER}.your-storagebox.de"
|
echo -e "ssh -p23 ${BACKUP_USER}@${BACKUP_USER}.your-storagebox.de"
|
||||||
echo -e "Verzeichnisinhalt anzeigen:"
|
echo -e "Verzeichnisinhalt anzeigen:"
|
||||||
echo -e "ls backups/${REPOSITORY_DIR}"
|
echo -e "ls backups/${REPOSITORY_DIR}"
|
||||||
echo -e "Verzeichnis der aktuellen Backups löschen:"
|
echo -e "Verzeichnis der aktuellen Backups löschen:"
|
||||||
|
echo
|
||||||
|
|
||||||
echo -e "rm -rf backups/${REPOSITORY_DIR}"
|
echo -e "rm -rf backups/${REPOSITORY_DIR}"
|
||||||
echo -e "######################################\n"
|
echo -e "######################################\n"
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
## Überprüfen, ob ein zusätzlicher Parameter übergeben wurde
|
borg list ssh://${BACKUP_USER}@${BACKUP_USER}.your-storagebox.de:23/./backups/${REPOSITORY_DIR} >> ${LOG}
|
||||||
if [ -n "$1" ] && [ "$1" != "INIT" ] && [ "$1" != "NEW_INIT" ]; then
|
|
||||||
BACKUP_SUFFIX="_$1"
|
|
||||||
fi
|
|
||||||
|
|
||||||
##
|
|
||||||
## Zu sichernde Verzeichnisse
|
|
||||||
##
|
|
||||||
# Hier werden alle Verzeichnisse im Root-Verzeichnis gesichert, außer den ausgeschlossenen Verzeichnissen
|
|
||||||
DIRS_TO_BACKUP=(
|
|
||||||
"/paperless/paperless-ngx/export"
|
|
||||||
)
|
|
||||||
|
|
||||||
##
|
|
||||||
## Dateien ins Repository übertragen
|
|
||||||
##
|
|
||||||
|
|
||||||
echo "Übertrage Dateien ..."
|
|
||||||
borg create -v --stats \
|
|
||||||
$REPOSITORY::"${TIMESTAMP}${BACKUP_SUFFIX}" \
|
|
||||||
"${DIRS_TO_BACKUP[@]}" # \
|
|
||||||
|
|
||||||
|
|
||||||
end_time=$(date +'%Y-%m-%d %H:%M:%S')
|
|
||||||
duration=$(date -u -d @$(( $(date -d "$end_time" +%s) - $(date -d "$start_time" +%s) )) +%H:%M:%S)
|
|
||||||
|
|
||||||
echo "###### Backup beendet: $end_time ######"
|
|
||||||
echo "Time (start): $start_time"
|
|
||||||
echo "Time (end): $end_time"
|
|
||||||
echo "Duration: $duration"
|
|
||||||
|
|
||||||
echo -e "\n######################################"
|
|
||||||
echo -e "Backups auflisten mit:"
|
|
||||||
echo -e "borg list ssh://${BACKUP_USER}@${BACKUP_USER}.your-storagebox.de:23/./backups/${REPOSITORY_DIR}\n"
|
|
||||||
|
|
||||||
echo -e "Rücksichern einzelner Verzeichnisse mit:"
|
|
||||||
echo -e "cd /mytmp # Wechseln Sie in ein Testverzeichnis, um das Backup zu testen."
|
|
||||||
echo -e "borg extract ssh://${BACKUP_USER}@${BACKUP_USER}.your-storagebox.de:23/./backups/${REPOSITORY_DIR}::${TIMESTAMP}${BACKUP_SUFFIX} etc var lib lib64 sbin usr bin"
|
|
||||||
echo -e "######################################\n"
|
|
||||||
|
|
||||||
echo -e "Komplette Rücksicherung mit:"
|
|
||||||
echo -e "borg extract ssh://${BACKUP_USER}@${BACKUP_USER}.your-storagebox.de:23/./backups/${REPOSITORY_DIR}::${TIMESTAMP}${BACKUP_SUFFIX}"
|
|
||||||
echo -e "######################################\n"
|
|
||||||
|
|
||||||
echo -e "Auf den Backup-Server verbinden:"
|
|
||||||
echo -e "ssh -p23 ${BACKUP_USER}@${BACKUP_USER}.your-storagebox.de"
|
|
||||||
echo -e "Verzeichnisinhalt anzeigen:"
|
|
||||||
echo -e "ls backups/${REPOSITORY_DIR}"
|
|
||||||
echo -e "Verzeichnis der aktuellen Backups löschen:"
|
|
||||||
echo
|
|
||||||
|
|
||||||
echo -e "rm -rf backups/${REPOSITORY_DIR}"
|
|
||||||
echo -e "######################################\n"
|
|
||||||
|
|
||||||
borg list ssh://${BACKUP_USER}@${BACKUP_USER}.your-storagebox.de:23/./backups/${REPOSITORY_DIR} >> ${LOG}
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user