Files
drobboxordinacebackup/README.md
T
2026-05-18 07:04:08 +02:00

109 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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)
```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\`