From 9af1570a29f1a3b6c1600111e3ce1d8c5adef3bd Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 27 May 2026 18:47:38 -0300 Subject: [PATCH] check Backup --- app/sbin/api | 10 +++++--- app/sbin/checkBackup | 59 ++++++++++++++++++-------------------------- 2 files changed, 31 insertions(+), 38 deletions(-) diff --git a/app/sbin/api b/app/sbin/api index eef8fae..f82627e 100755 --- a/app/sbin/api +++ b/app/sbin/api @@ -567,9 +567,13 @@ def backup_move(request: MoveRequest): } -@app.get("/backup/check", dependencies=[Depends(verify_api_key)]) -def backup_check(): - return {"message": run_command([f"{BIN_PATH}/checkBackup"])} +class BackupCheckRequest(BaseModel): + uuid: str + + +@app.post("/backup/check", dependencies=[Depends(verify_api_key)]) +def backup_check(request: BackupCheckRequest): + return {"message": run_command([f"{BIN_PATH}/checkBackup", request.uuid])} @app.get("/backup/borgpush", dependencies=[Depends(verify_api_key)]) diff --git a/app/sbin/checkBackup b/app/sbin/checkBackup index 6f602de..a0c6b0d 100755 --- a/app/sbin/checkBackup +++ b/app/sbin/checkBackup @@ -1,49 +1,38 @@ #!/usr/bin/env python3 +import sys from pathlib import Path -from datetime import date, timedelta BACKUP_ROOT = Path("/BACKUP") -STALE_DAYS = 2 -cutoff = (date.today() - timedelta(days=STALE_DAYS)).strftime("%Y%m%d") +if len(sys.argv) < 2: + print("Usage: checkBackup ") + sys.exit(1) -for directory in sorted(BACKUP_ROOT.iterdir()): - if not directory.is_dir(): - continue +uuid = sys.argv[1] +directory = BACKUP_ROOT / uuid - if directory.name == "default": - continue +if not directory.is_dir(): + print(f"ERROR: directory not found for UUID {uuid}") + sys.exit(1) - latest_file = None - latest_date = "00000000" +latest_date = None - for zip_file in directory.rglob("*.zip"): - name = zip_file.name - - # expected format: YYYYMMDD_HHMM.zip - try: - date_part = name.split("_")[0] - - if len(date_part) != 8 or not date_part.isdigit(): - continue - - except Exception: +for zip_file in directory.rglob("*.zip"): + name = zip_file.name + try: + date_part = name.split("_")[0] + if len(date_part) != 8 or not date_part.isdigit(): continue - - if date_part > latest_date: - latest_date = date_part - latest_file = zip_file - - if latest_file is None: - print(f"{directory.name} -> NO BACKUPS") + except Exception: continue - status = "STALE" if latest_date < cutoff else "OK" + if latest_date is None or date_part > latest_date: + latest_date = date_part - print( - f"{directory.name} -> " - f"{latest_file.name} -> " - f"{latest_date} -> " - f"{status}" - ) +if latest_date is None: + print("NO BACKUPS") + sys.exit(1) + +# Format as yyyy-mm-dd +print(f"{latest_date[:4]}-{latest_date[4:6]}-{latest_date[6:8]}")