Files
bak-and-rest/README.md

152 lines
3.9 KiB
Markdown

# Bak&Rest
Bak&Rest monitora cartelle configurate su Windows, registra i file creati, modificati, cancellati o spostati e prepara il backup successivo tramite tray app.
## Componenti
- `BakRestWatchdog`: servizio Windows di monitoraggio.
- `BakRestTray`: tray app che eseguira' il backup e lo spegnimento.
- `BakRestConfig`: GUI di configurazione.
## Configurazione
Alla prima esecuzione viene creato un file TOML modificabile in:
```text
%PROGRAMDATA%\BakRest\config.toml
```
Per creare o trovare il file di configurazione:
```powershell
python -m bakrest.config_cli init
python -m bakrest.config_cli path
```
In sviluppo si puo' usare un percorso diverso:
```powershell
$env:BAKREST_CONFIG="C:\devel\bak&rest\config\config.toml"
python -m bakrest.watchdog_runner
```
## Avvio watchdog in console per test
```powershell
python -m pip install -e .
python -m bakrest.watchdog_runner
```
## Avvio tray app per test
```powershell
python -m pip install -e .
python -m bakrest.tray_app
```
La tray app legge lo stato prodotto dal servizio e offre il comando `Backup e spegni`. Se il backup fallisce, lo spegnimento non viene eseguito.
Quando il servizio rileva che il server di backup non e' raggiungibile, la tray app mostra una finestra con:
```text
Accendi il server di backup o verifica che sia connesso alla rete
```
## Backup senza GUI per Task Scheduler
Lo stesso entry point della tray puo' eseguire il backup senza mostrare icone o finestre:
```powershell
python -m bakrest.tray_app --nogui
```
Per testare senza spegnere il PC:
```powershell
python -m bakrest.tray_app --nogui --no-shutdown
```
In alternativa si puo' chiamare direttamente il modulo dedicato:
```powershell
python -m bakrest.backup_nogui
```
Questo percorso e' pensato per Task Scheduler, per esempio su evento di disconnessione o fine sessione. Se il server non e' raggiungibile o il backup fallisce, il comando termina con errore e non spegne il PC.
Azione Task Scheduler consigliata in sviluppo:
```text
Programma: C:\Python314\python.exe
Argomenti: -m bakrest.tray_app --nogui
Avvia in: C:\devel\bak&rest
```
## Motore backup Windows
Il default e' `robocopy`, pensato per copiare verso share SMB su un server Windows:
```toml
[backup]
engine = "robocopy"
server_host = "backup-server"
remote_destinations = [
"\\\\backup-server\\BakRest1",
"\\\\backup-server\\BakRest2",
]
robocopy_path = "robocopy"
[backup.server_check]
type = "tcp"
port = 445
interval_seconds = 600
```
La copia ricrea il percorso relativo sotto ogni share. Se una cartella monitorata e' `D:\Lavori`, il file `D:\Lavori\Cliente\a.psd` viene copiato in:
```text
\\backup-server\BakRest1\Lavori\Cliente\a.psd
\\backup-server\BakRest2\Lavori\Cliente\a.psd
```
Il programma non usa opzioni distruttive di `robocopy`: non usa `/MIR` e non usa `/PURGE`. Le cancellazioni sul master non vengono propagate allo slave.
Per una prova senza spegnimento:
```text
Programma: C:\Python314\python.exe
Argomenti: -m bakrest.tray_app --nogui --no-shutdown
Avvia in: C:\devel\bak&rest
```
## Avvio GUI configurazione
```powershell
python -m pip install -e .
python -m bakrest.config_app
```
La GUI permette di modificare la configurazione e vedere la coda dei file in attesa di backup. I file in coda restano persistenti anche se il computer viene spento senza eseguire il backup.
## Installazione servizio Windows
Da PowerShell avviato come amministratore:
```powershell
python -m pip install -e .
python -m bakrest.service install
python -m bakrest.service start
```
Se `service.autostart = true`, il comando `install` configura il servizio con avvio automatico. Se e' `false`, il servizio viene installato con avvio manuale. Il valore puo' essere sempre sovrascritto passando esplicitamente le opzioni di `pywin32`.
Comandi utili:
```powershell
python -m bakrest.service stop
python -m bakrest.service remove
python -m bakrest.service debug
```
Il servizio si chiama `BakRestWatchdog`.