From e9c3668bebd1be51fef69f8501168b9fe0ea1d99 Mon Sep 17 00:00:00 2001 From: vlado Date: Sat, 24 Jan 2026 17:04:42 +0100 Subject: [PATCH] tw22 --- Backup/10 MedicusBackup.py | 86 ++++++++++++++++++++++++++++++++++++ Backup/Compugroup backup.txt | 46 +++++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 Backup/10 MedicusBackup.py create mode 100644 Backup/Compugroup backup.txt diff --git a/Backup/10 MedicusBackup.py b/Backup/10 MedicusBackup.py new file mode 100644 index 0000000..84fc12f --- /dev/null +++ b/Backup/10 MedicusBackup.py @@ -0,0 +1,86 @@ +import subprocess +from pathlib import Path +from datetime import datetime +import traceback +import sys + +from EmailMessagingGraph import send_mail + +# ========================= +# CONFIG – TEST PC +# ========================= + +GBAK = r"C:\Program Files\Firebird\Firebird_2_5_CGM\bin\gbak.exe" +DB = r"localhost/3050:Z:\Medicus 3\data\MEDICUS.FDB" +BACKUP_DIR = Path(r"D:\medicusbackup") + +FB_USER = "SYSDBA" +FB_PASS = "masterkey" + +MAIL_TO = "vladimir.buzalka@buzalka.cz" + +# ========================= +# MAIN +# ========================= + +def main(): + BACKUP_DIR.mkdir(parents=True, exist_ok=True) + + now = datetime.now() + ts = now.strftime("%Y-%m-%d_%H-%M-%S") + + fbk = BACKUP_DIR / f"MEDICUS_{ts}.fbk" + log = BACKUP_DIR / f"MEDICUS_{ts}.log" + + cmd = [ + GBAK, + "-b", + "-user", FB_USER, + "-pas", FB_PASS, + DB, + str(fbk), + "-v", + ] + + try: + with open(log, "w", encoding="utf-8") as f: + subprocess.run( + cmd, + stdout=f, + stderr=subprocess.STDOUT, + check=True, + ) + + send_mail( + MAIL_TO, + "✅ MEDICUS – záloha OK (test PC)", + f"""Záloha MEDICUS proběhla úspěšně. + +Čas: {now} +Soubor: {fbk} +Log: {log} +""", + ) + + except Exception: + err = traceback.format_exc() + + send_mail( + MAIL_TO, + "❌ MEDICUS – CHYBA ZÁLOHY (test PC)", + f"""Při záloze MEDICUS došlo k chybě. + +Čas: {now} + +Chyba: +{err} + +Log: +{log} +""", + ) + raise + + +if __name__ == "__main__": + main() diff --git a/Backup/Compugroup backup.txt b/Backup/Compugroup backup.txt new file mode 100644 index 0000000..88d3721 --- /dev/null +++ b/Backup/Compugroup backup.txt @@ -0,0 +1,46 @@ +--- +Upravená verze skriptu, prosím upravte si cesty, toto vše vložit do nějakého cmd souboru: +editují se pouze následující sekce: +rem /zalozeni slozek do kterych se ma zalohovat kdyz neexistuji/ +rem /nastaveni serveru a portu a cest k db/ +rem /zaloha/ - v případě že je soubor gbak umístěn jinde, je jiná cesta k Firebirdu +rem/odkud kam kopirovat/ +@echo off +rem /nacteni aktualniho datumu a casu/ +For /f "tokens=1-3 delims=/." %%a in ("%DATE%") do (set mydate=%%c-%%b-%%a) +For /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set mytime=%%a-%%b) +@echo on +rem /zalozeni slozek do kterych se ma zalohovat kdyz neexistuji/ +if not exist "C:\zalohy\MEDICUS" mkdir "C:\zalohy\MEDICUS" +if not exist "C:\backup\MEDICUS" mkdir "C:\backup\MEDICUS" +rem /nastaveni serveru a portu a cest k db/ +set ufdb="localhost/3050:c:\Medicus\Medicus Komfort\data\sestavy.fdb" +rem /nastaveni cesty pro umisteni zalohy/ +set ufbk="C:\zalohy\MEDICUS\MEDICUS3_%mydate%%mytime%.FBK" -y "C:\zalohy\MEDICUS\log%mydate%_%mytime%.txt" +rem /zaloha/ +"C:\Program Files (x86)\Firebird\Firebird_2_5\bin\gbak" -b -user SYSDBA -pas masterke %ufdb% %ufbk% -v +rem/odkud kam kopirovat/ +set odkud="C:\zalohy\MEDICUS*.*" +set kam="C:\backup\MEDICUS" +SET drv1=%odkud:~1,1% +SET drv2=%kam:~1,1% +if %drv1%==%drv2% goto :move +if not %drv1%==%drv2% goto :copy +:move +rem /presunuti do jineho umisteni/ +move /Y %odkud% %kam% +goto :exit +:copy +rem /kopiruj a smaz/ +copy /Y %odkud% %kam% +del /Q %odkud% +goto :exit +:exit +timeout /T 5 +exit +Zajímavé odkazy rovněž zde: +https://docplayer.cz/665150-Databaze-firebird-zalohovani-obnoveni-roman-fic-1-29-14-databaze.html +http://www.epos.cz/obis4wiki/firebird:zalohovani_databazi_-_gbak +Pohodový den přeje +Mgr. Josef Kauc +KONZULTANT MEDICUS