feat: Lösch-Synchronisation mit lokalem Backup und Bereinigung
Gelöschte Dateien werden beim Download ins Backup-Verzeichnis verschoben
(${LOCAL_PHOTO_DIR}-bak, ${LOCAL_DARKTABLE_DB_DIR}-bak) statt permanent
gelöscht. Upload verwendet --delete ohne Backup. Backups älter als 2 Jahre
werden automatisch bereinigt. Safeguard verhindert --delete bei leerem
Quellverzeichnis. validate_path prüft jetzt auch lokale Pfade.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -75,3 +75,40 @@ COMMON_SCRIPT="$BATS_TEST_DIRNAME/../scripts/darktable_common.sh"
|
||||
rm -f "$TMP_SCRIPT"
|
||||
[ "$status" -eq 1 ]
|
||||
}
|
||||
|
||||
# --- cleanup_old_backups ---
|
||||
|
||||
@test "cleanup_old_backups: nicht existierendes Verzeichnis gibt kein Fehler" {
|
||||
run bash -c "source '$COMMON_SCRIPT'; cleanup_old_backups '/tmp/nonexistent_bak_$RANDOM'"
|
||||
[ "$status" -eq 0 ]
|
||||
}
|
||||
|
||||
@test "cleanup_old_backups: Datei juenger als 730 Tage bleibt erhalten" {
|
||||
BACKUP="$BATS_TMPDIR/backup_test"
|
||||
mkdir -p "$BACKUP"
|
||||
touch "$BACKUP/recent.jpg"
|
||||
run bash -c "source '$COMMON_SCRIPT'; cleanup_old_backups '$BACKUP'"
|
||||
[ "$status" -eq 0 ]
|
||||
[ -f "$BACKUP/recent.jpg" ]
|
||||
rm -rf "$BACKUP"
|
||||
}
|
||||
|
||||
@test "cleanup_old_backups: Datei aelter als 730 Tage wird geloescht" {
|
||||
BACKUP="$BATS_TMPDIR/backup_old"
|
||||
mkdir -p "$BACKUP"
|
||||
touch -d "3 years ago" "$BACKUP/old.jpg"
|
||||
run bash -c "source '$COMMON_SCRIPT'; cleanup_old_backups '$BACKUP'"
|
||||
[ "$status" -eq 0 ]
|
||||
[ ! -f "$BACKUP/old.jpg" ]
|
||||
rm -rf "$BACKUP"
|
||||
}
|
||||
|
||||
@test "cleanup_old_backups: leere Unterverzeichnisse werden entfernt" {
|
||||
BACKUP="$BATS_TMPDIR/backup_empty"
|
||||
mkdir -p "$BACKUP/subdir"
|
||||
touch -d "3 years ago" "$BACKUP/subdir/old.jpg"
|
||||
run bash -c "source '$COMMON_SCRIPT'; cleanup_old_backups '$BACKUP'"
|
||||
[ "$status" -eq 0 ]
|
||||
[ ! -d "$BACKUP/subdir" ]
|
||||
rm -rf "$BACKUP"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user