-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbackup_script.sh
More file actions
67 lines (57 loc) · 2.41 KB
/
backup_script.sh
File metadata and controls
67 lines (57 loc) · 2.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
########################################
##### Universal Docker #####
##### Container Restore #####
##### ---------------------------- #####
##### Autor: kyzorr #####
##### Copyright: kyzorr #####
##### Writen by: kyzorr #####
########################################
# Universaler Backup-Skript zum Sichern von Docker Container auf einen Lokalen Speicherort.
# Bitte die VARIABLEN nach wunsch anpassen. Anschließend die Datei unter
# <appname-apptyp-backup_script.sh abspeichern. z.B. "wp-db_backup_script.sh"
# Crontab anpassung als root nicht vergessen!
#!/bin/bash
######################################
##### VARIABLEN #####
######################################
# Programm Name. Wird verwendet für Ordnername und Backup-Dateinamen.
# meist auch der containernamen
app_name="test"
# Programm Typ/Baustein. Z.B. app, db, admin etc.
app_typ="db"
# Pfad zum zu sichernden Ordner
source_dir="/var/lib/docker/volumes/>Container_Volume>/_data"
# Anzahl der Tage, nach denen alte Backups gelöscht werden sollen
days_to_keep=30
######################################
######################################
### Fix Variablen ###
# Verzeichnis, in dem die Backups gespeichert werden sollen
fq_app_name="$app_name-$app_typ"
backup_dir="/data/backup/$fq_app_name"
# Datum für das Backup-Dateinamen
#today=date +"%Y-%m-%d"
backup_date="backup_"$(date +"%Y-%m-%d")
# Backup-Dateinamen
backup_file="$backup_dir/$fq_app_name-$backup_date.tar.gz"
######################################
# Erstelle das Backup-Verzeichnis, falls es noch nicht existiert
mkdir -p "$backup_dir"
# Erstelle das Backup als TAR-Archiv
tar -czf "$backup_file" -C "$(dirname "$source_dir")" "$(basename "$source_dir")"
# Prüfe, ob das Backup erfolgreich erstellt wurde
if [ $? -eq 0 ]; then
echo "[OK] Backup der $fq_app_name-App erfolgreich erstellt: $backup_file"
else
echo "[FAILED] Fehler beim Erstellen des Backups der $fq_app_name-App."
exit 1
fi
# Zähle die Anzahl der Backups
backup_count=$(ls -d "$backup_dir"/"$fq_app_name"* | wc -l)
# Lösche alte Backups, wenn die Anzahl der Backups größer als die Anzahl der Tage zum Aufbewahren ist
if [ "$backup_count" -gt "$days_to_keep" ]; then
old_backups=$(ls -dt "$backup_dir"/"$fq_app_name"* | tail -n +"$((backup_count - days_to_keep + 1))")
rm -rf $old_backups
echo "Ältere Backups wurden gelöscht."
echo $old_backups
fi