07e6a9c374887f2a50d08206c37d81f8d8ecc59f
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
- Scan – projde
ROOT_PATH, zaznamená velikost a mtime každého souboru - Diff – porovná s DB: nové / změněné / smazané / beze změny
- Hashování – BLAKE3 pro nové a změněné soubory
- Cloud placeholdery (Dropbox Smart Sync) – automaticky hydratuje (čeká max 120 s na stažení)
- DB update – batch INSERT/UPDATE souborů a eventů
- Backup – AES-256 ZIP do content-addressable storage (
BACKUP_PATH/ab/cd/<blake3hash>.zip), deduplikace hashem - Report – Excel soubor do
z:\Dropbox\!!!Days\Downloads Z230\ - Email – HTML shrnutí + přiložený
backup.lognavladimir.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\
Description
Languages
Python
99.8%
Batchfile
0.2%