This commit is contained in:
2026-05-27 12:50:13 +02:00
parent 39ff5ca05c
commit 6ef637677e
5 changed files with 75 additions and 10 deletions
@@ -10,6 +10,14 @@ Příklad: \\Tower1\ZalohaVsechObrazku\JMENO-PC\D\Foto\2023\img.jpg
Bezpečné pro opakované spuštění (pokračuje tam kde skončilo).
Bezpečné pro souběžný běh na více strojích (ON CONFLICT v SQL).
Předpoklad pro ukládání cest do DB:
Ať už je hostname Windows stroje jakýkoliv, Tower1 (druhý Unraid server)
je vždy dostupný jako \\Tower1\ZalohaVsechObrazku\...
Fyzické kopírování probíhá přes tuto UNC cestu, ale do DB se ukládá
vždy nativní Linux cesta Tower1, tj. /mnt/user/ZalohaVsechObrazku/...
(\\Tower1 → /mnt/user, zpětná lomítka → dopředná lomítka).
Tím jsou cesty v DB jednotné bez ohledu na to, který stroj zálohu pořídil.
"""
import os
@@ -39,6 +47,19 @@ DB_CONFIG = {
ZALOHA_DIR = Path(r"\\Tower1\ZalohaVsechObrazku")
# Normalizace cesty pro DB — Windows UNC cestu převedeme na nativní Tower1 Linux cestu.
# \\Tower1\ZalohaVsechObrazku\... → /mnt/user/ZalohaVsechObrazku/...
WINDOWS_UNC_PREFIX = r"\\Tower1"
LINUX_NATIVE_PREFIX = "/mnt/user"
def normalize_path_for_db(path: Path) -> str:
"""Převede \\Tower1\ZalohaVsechObrazku\... na /mnt/user/ZalohaVsechObrazku/..."""
s = str(path)
if s.startswith(WINDOWS_UNC_PREFIX):
return LINUX_NATIVE_PREFIX + s[len(WINDOWS_UNC_PREFIX):].replace("\\", "/")
return s
JPEG_EXTENSIONS = {".jpg", ".jpeg"}
EXCLUDED_DIR_NAMES_LOWER = {
@@ -244,7 +265,7 @@ def process(conn, hostname, drives):
t_copy = time.perf_counter()
cur = conn.cursor()
cur.execute(SQL_INSERT_ZALOHA, (hash_val, str(dest), source.name, velikost))
cur.execute(SQL_INSERT_ZALOHA, (hash_val, normalize_path_for_db(dest), source.name, velikost))
row = cur.fetchone()
if row:
zaloha_id = row[0]