2026-06-09 15:44:42 +02:00
2026-06-09 15:44:42 +02:00
2026-06-09 15:44:42 +02:00
2026-05-18 07:04:08 +02:00
2026-04-28 05:51:50 +02:00
2026-02-12 11:29:41 +01:00
2026-06-09 15:44:42 +02:00
2026-02-12 07:38:16 +01:00
2026-05-18 07:04:08 +02:00
2026-02-12 07:54:22 +01:00
2026-04-21 17:27:05 +02:00
2026-04-28 06:08:43 +02:00
2026-02-12 07:38:16 +01:00
2026-04-28 06:08:43 +02:00

Dropbox Ordinace Backup

Indexer a zálohovací systém pro Dropbox složku ordinace. Při každém spuštění projde filesystém, porovná stav s databází, zazálohuje nové/změněné soubory do content-addressable storage, vygeneruje Excel report a odešle emailové oznámení.

Architektura

main.py                   hlavní orchestrátor (spouštět přímo)
indexer/
  config.py               načítá .env (DB, cesty, chování)
  logger.py               setup logování do souboru + konzole
  scanner.py              rychlý scan filesystému (bez hashování)
  hasher.py               BLAKE3 hash, detekce cloud placeholderů, hydratace
  db.py                   všechny DB operace (runs, files, events)
  events.py               batch INSERT do file_events
  backup.py               AES-256 ZIP content-addressable storage
report.py                 generuje Excel report z DB
recovery.py               obnova souborů ze zálohy
reconcile.py              reconciliace DB vs filesystem

Konfigurace (.env)

DRY_RUN=false            # true = jen scan, žádná DB ani záloha
LOG_LEVEL=INFO
LOG_DIR=C:\Reporting\DropboxBackup\logs

DB_HOST=192.168.1.76
DB_PORT=3306
DB_NAME=OrdinaceDropBoxBackup
DB_USER=root
DB_PASSWORD=...

ROOT_PATH=z:\Dropbox\Ordinace\
ROOT_NAME=DropboxOrdinace
BATCH_SIZE=1000
BACKUP_PATH=w:\OneDrive\DropBoxBackupClaude\
BACKUP_PASSWORD=...

Spuštění

cd C:\Reporting\DropboxBackup
C:\Reporting\Python\python.exe main.py

Nebo přes Task Scheduler:

  • Program: C:\Reporting\Python\python.exe
  • Argumenty: C:\Reporting\DropboxBackup\main.py
  • Spustit v: C:\Reporting\DropboxBackup

Co dělá jeden run

  1. Scan projde ROOT_PATH, zaznamená velikost a mtime každého souboru
  2. Diff porovná s DB: nové / změněné / smazané / beze změny
  3. Hashování BLAKE3 pro nové a změněné soubory
    • Cloud placeholdery (Dropbox Smart Sync) automaticky hydratuje (čeká max 120 s na stažení)
  4. DB update batch INSERT/UPDATE souborů a eventů
  5. Backup AES-256 ZIP do content-addressable storage (BACKUP_PATH/ab/cd/<blake3hash>.zip), deduplikace hashem
  6. Report Excel soubor do z:\Dropbox\!!!Days\Downloads Z230\
  7. Email HTML shrnutí + přiložený backup.log na vladimir.buzalka@buzalka.cz

Logy

Rotující denní log: LOG_DIR\backup.log (history 90 dní).

Záloha — storage formát

Každý unikátní obsah je uložen jednou jako:

BACKUP_PATH/
  ab/
    cd/
      abcdef...zip    ← AES-256 ZIP s názvem <blake3hex>.blob uvnitř

Deduplikace je automatická — soubory se stejným obsahem sdílí jeden ZIP.

Databáze

MySQL databáze OrdinaceDropBoxBackup na 192.168.1.76:

Tabulka Popis
runs Každé spuštění indexeru (status, statistiky)
files Aktuální stav všech souborů (exists_now, hash, velikost)
file_events Historie změn (CREATED / MODIFIED / DELETED)

Závislosti

blake3
pymysql
python-dotenv
pyzipper
openpyxl
msal
requests

Instalace: C:\Reporting\Python\python.exe -m pip install -r requirements.txt

Projekty

  • Produkce: C:\Reporting\DropboxBackup\
  • Vývoj: C:\Users\vlado\PycharmProjects\drobboxordinacebackup\
S
Description
No description provided
Readme 215 KiB
Languages
Python 99.8%
Batchfile 0.2%