Compare commits
12 Commits
f4a86215cd
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 2a0b61ade7 | |||
| 64cb694fb4 | |||
| e6ce7a2727 | |||
| 7a0097d0c7 | |||
| d842c55f59 | |||
| 2979870916 | |||
| 01b271ed98 | |||
| a2ac9acf5d | |||
| c44c752bc9 | |||
| 969e1b1089 | |||
| b0f799e2d6 | |||
| 3d39a6c36b |
7
.gitignore
vendored
Normal file
7
.gitignore
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
Archiv/
|
||||
Backup/
|
||||
log.txt
|
||||
logrotate.status
|
||||
*.gz
|
||||
*.7z
|
||||
|
||||
@ -1,4 +0,0 @@
|
||||
Archiv/
|
||||
Backup/
|
||||
log.txt
|
||||
|
||||
14
README.md
14
README.md
@ -7,18 +7,18 @@ Dieses Skript sichert regelmäßig Daten aus einer Nextcloud-Quelle in ein lokal
|
||||
- Synchronisiert ein Verzeichnis (`ptv-nextcloud:/DPV`) mit einem lokalen Ordner `./Backup/`
|
||||
- Verwendet `rclone --backup-dir`, um **ältere, geänderte oder gelöschte Dateien** in ein Archiv zu verschieben
|
||||
- Erstellt pro Lauf ein neues Archivverzeichnis unter `./Archiv/<Datum-Zeit>`
|
||||
- Protokolliert alle Vorgänge in `log.txt`
|
||||
- Protokolliert alle Vorgänge in rettedpv.log
|
||||
- Entfernt leere Verzeichnisse im Archiv
|
||||
|
||||
## 🧱 Verzeichnisstruktur
|
||||
|
||||
```
|
||||
.
|
||||
├── Backup/ # Aktueller Stand der Daten
|
||||
├── Backup/ # Aktueller Stand der Daten
|
||||
├── Archiv/
|
||||
│ └── 2025-07-03-15-30/ # Frühere Versionen
|
||||
├── log.txt # Laufendes Logfile
|
||||
└── dein-script.sh
|
||||
│ └── 2025-07-03-15-30/ # Frühere Versionen
|
||||
└── rettedpv.sh # Das Backup-Script
|
||||
|
||||
```
|
||||
|
||||
## 🚀 Cronjob-Eintrag (Beispiel)
|
||||
@ -39,9 +39,11 @@ Dieses Skript sichert regelmäßig Daten aus einer Nextcloud-Quelle in ein lokal
|
||||
|
||||
## 🔍 Logging & Fehlerbehandlung
|
||||
|
||||
- Alle Logeinträge landen in `log.txt`
|
||||
- Alle Logeinträge landen in `rettedpv.log`
|
||||
- Die Log-Datei liegt im örtlichen Gitea/logger/Logs-Verzeichnis
|
||||
- Fehler von `rclone` erscheinen dort mit Zeitstempel
|
||||
- Leere Verzeichnisse im Archiv werden automatisch gelöscht
|
||||
- Das optionale Script "rotate.sh" rotiert log.txt und verhindert, dass die Datei zu groß wird.
|
||||
|
||||
## 🛠 Wiederherstellung
|
||||
|
||||
|
||||
46
rettedpv.sh
46
rettedpv.sh
@ -1,13 +1,39 @@
|
||||
AArchiv="./Archiv/$(date +%Y-%m-%d-%H-%M)"
|
||||
mkdir -p $AArchiv
|
||||
#!/bin/bash
|
||||
|
||||
echo " " >>log.txt
|
||||
echo " " >>log.txt
|
||||
echo "$(date) Starte Rettung… " >>log.txt
|
||||
rclone sync ptv-nextcloud:/DPV ./Backup/ -P --backup-dir=./$AArchiv --log-file="log.txt" --log-level=INFO
|
||||
cd $GIT_PFAD/rettedpv
|
||||
|
||||
echo " " >>log.txt
|
||||
echo "$(date) Lösche leere Verzeichnisse… " >>log.txt
|
||||
find Archiv/* -type d -empty -delete
|
||||
# === Konfiguration ===
|
||||
REMOTE="ptv-nextcloud:/DPV"
|
||||
BACKUP_DIR="./Backup"
|
||||
ARCHIVE_BASE="./Archiv"
|
||||
LOGFILE="$GIT_PFAD/logger/Logs/rettedpv.log"
|
||||
|
||||
echo "$(date) Rettung beendet " >>log.txt
|
||||
source $GIT_PFAD/logger/logger.sh
|
||||
log_init $LOGFILE
|
||||
log_start
|
||||
|
||||
# === Zeitstempel & Archivverzeichnis ===
|
||||
TIMESTAMP=$(date +%Y-%m-%d-%H-%M)
|
||||
ARCHIVE_DIR="${ARCHIVE_BASE}/${TIMESTAMP}"
|
||||
mkdir -p "$ARCHIVE_DIR"
|
||||
|
||||
# === Beginn der Sicherung ===
|
||||
log_info ""
|
||||
log_info ""
|
||||
log_info "🔁 Starte Datensicherung…"
|
||||
|
||||
# === Synchronisierung mit rclone ===
|
||||
gum spin --title "rclone läuft..." -- rclone sync "$REMOTE" "$BACKUP_DIR" \
|
||||
--backup-dir="$ARCHIVE_DIR" \
|
||||
--log-file="$LOGFILE" \
|
||||
--log-level=INFO
|
||||
log_info "ℹ️ ERR nach rclone: $?"
|
||||
|
||||
# === Aufräumen leerer Archivverzeichnisse ===
|
||||
log_info "🧹 Entferne leere Verzeichnisse in $ARCHIVE_BASE…"
|
||||
find "$ARCHIVE_BASE" -type d -empty -delete
|
||||
|
||||
# === Ende der Sicherung ===
|
||||
log_info "✅ Datensicherung abgeschlossen."
|
||||
|
||||
gum style --border normal --margin "1" --padding "1 2" --foreground 212 "✅ Backup abgeschlossen!"
|
||||
|
||||
Reference in New Issue
Block a user