62 lines
1.5 KiB
Python
62 lines
1.5 KiB
Python
#!/usr/bin/env python3
|
|
# A mettre dans le dossier /home/debian/Gestion_sondes/scripts du VPS
|
|
|
|
|
|
from pathlib import Path
|
|
from datetime import datetime, timedelta
|
|
import sys
|
|
|
|
BACKUP_DIR = Path("/home/debian/backup")
|
|
LOG_FILE = BACKUP_DIR / "check_backup_mysql.log"
|
|
|
|
MAX_AGE_HOURS = 30
|
|
MIN_SIZE_MB = 50
|
|
|
|
|
|
def log(message):
|
|
ligne = f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S')} - {message}"
|
|
print(ligne)
|
|
with LOG_FILE.open("a", encoding="utf-8") as f:
|
|
f.write(ligne + "\n")
|
|
|
|
|
|
def main():
|
|
if not BACKUP_DIR.exists():
|
|
log(f"❌ Dossier introuvable : {BACKUP_DIR}")
|
|
sys.exit(1)
|
|
|
|
fichiers = sorted(
|
|
BACKUP_DIR.glob("mysql_backup_*.sql"),
|
|
key=lambda p: p.stat().st_mtime,
|
|
reverse=True
|
|
)
|
|
|
|
if not fichiers:
|
|
log("❌ Aucun fichier de sauvegarde trouvé")
|
|
sys.exit(1)
|
|
|
|
dernier = fichiers[0]
|
|
stat = dernier.stat()
|
|
|
|
date_modif = datetime.fromtimestamp(stat.st_mtime)
|
|
age = datetime.now() - date_modif
|
|
taille_mb = stat.st_size / 1024 / 1024
|
|
|
|
log(f"🔎 Dernière sauvegarde : {dernier.name}")
|
|
log(f"🔎 Date : {date_modif.strftime('%Y-%m-%d %H:%M:%S')}")
|
|
log(f"🔎 Taille : {taille_mb:.1f} Mo")
|
|
|
|
if age > timedelta(hours=MAX_AGE_HOURS):
|
|
log(f"❌ Sauvegarde trop ancienne : {age}")
|
|
sys.exit(1)
|
|
|
|
if taille_mb < MIN_SIZE_MB:
|
|
log(f"❌ Sauvegarde trop petite : {taille_mb:.1f} Mo")
|
|
sys.exit(1)
|
|
|
|
log("✅ Contrôle sauvegarde OK")
|
|
sys.exit(0)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main() |