w22
This commit is contained in:
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user