| AdHoc-Backup.ps1 | ||
| backup.conf | ||
| install-AdHoc-Backup-GUI.ps1 | ||
| readme.md | ||
| report_template.html | ||
| send-mail.ps1 | ||
Manuale operativo – AdHoc Backup (GUI + Script)
Versione script GUI: install-AdHoc-Backup-GUI.ps1
Motore di backup: AdHoc-Backup.ps1
Configurazione: backup.conf
Report email: send-mail.ps1 + report_template.html
1. Obiettivo del progetto
Questo pacchetto serve a:
- fare backup automatici di:
- cartelle/file (es. installazione Zucchetti AdHoc)
- database SQL Server
- mantenere copie locali con retention automatica
- inviare gli archivi verso uno storage remoto (Dropbox, S3, ecc.) tramite rclone
- inviare una mail HTML di report con:
- esito (OK / WARNING / ERRORE)
- dimensioni archivi
- durata del backup
- spazio disco totale/usato/libero
- semplificare tutto tramite una GUI di installazione che:
- scarica e posiziona i file giusti
- prepara la struttura delle cartelle
- configura l’attività pianificata di Windows
- offre un pulsante “Test mail”
2. Componenti del sistema
I file principali sono:
-
install-AdHoc-Backup-GUI.ps1
GUI/installer: scarica e installa gli script, prepara i tool (7-Zip e rclone) e crea la Scheduled Task. -
AdHoc-Backup.ps1
Motore di backup: leggebackup.conf, esegue backup file e SQL, comprime con 7-Zip, invia con rclone, pulisce e manda la mail di report. -
backup.conf
File di configurazione utente: definisce cosa salvare, dove salvare, retention, parametri rclone e parametri SMTP. -
send-mail.ps1
Si occupa di costruire l’HTML del report (usandoreport_template.html) e inviare la mail via SMTP/TLS. -
report_template.html
Template HTML del report: contiene segnaposto (placeholder) chesend-mail.ps1sostituisce con i dati reali del backup.
3. Esecuzione rapida (one-liner)
Per lanciare l’installer senza scaricare nulla a mano:
powershell
irm "https://gitea.poloinformatico.it/Mattia/Backup-AdHoc/raw/branch/main/install-AdHoc-Backup-GUI.ps1" | iex
3.1 Cosa fa questo comando
irm= alias diInvoke-RestMethod
Scarica il contenuto del file PowerShell da Gitea come testo.|= pipe
Passa il testo scaricato al comando successivo.iex= alias diInvoke-Expression
Esegue il testo come script PowerShell in memoria.
Nota importante
L’errore:
Impossibile trovare un parametro posizionale che accetta l'argomento 'iex'
si verifica se manca la pipe |.
La forma corretta è sempre:
powershell
irm "URL" | iex
3.2 Come usarlo in pratica
-
Apri PowerShell come Amministratore (consigliato, per creare attività pianificate e scrivere in
C:\polo). -
Copia e incolla il comando:
powershell irm "https://gitea.poloinformatico.it/Mattia/Backup-AdHoc/raw/branch/main/install-AdHoc-Backup-GUI.ps1" | iex -
Premi Invio.
Dopo pochi secondi si apre la finestra GUI “Installer AdHoc Backup”.
Da qui prosegui con la configurazione grafica descritta nei capitoli successivi.
4. Struttura delle cartelle e layout standard
L’installer GUI si aspetta e/o prepara un layout tipo.
4.1 Cartella di installazione degli script
Esempio predefinito:
C:\polo\scripts\AdHoc-Backup.ps1send-mail.ps1backup.conf(se non spostato inbin\conf)bin\conf\backup.confrclone.confreport_template.html
RClone\rclone.exe
7Zip\7zr.exe(o7z.exese presente)
4.2 Cartella radice dei backup
Definita in backup.conf, es.:
C:\Backups_AdHoc\Bin\(eventuali tool portabili usati da qui)logs\backup_yyyy-MM-dd_HHmmss.log
out\
Archivi temporanei prima di upload/spostamento._sql_stage\
File.bake script SQL temporanei.Files\
Archivi file, seKeepLocalArchives=true.Databases\
Archivi SQL, seKeepLocalArchives=true.
5. L’installer GUI – install-AdHoc-Backup-GUI.ps1
5.1 Cosa fa in sintesi
L’installer:
- Mostra una finestra WinForms con:
- percorso di installazione
- URL dei file da scaricare
- opzioni di schedulazione
- opzioni di log/output
- area di configurazione di
backup.conf - pulsante per Test mail
- pulsante per Installa
- Scarica e posiziona:
AdHoc-Backup.ps1backup.confsend-mail.ps1report_template.html
- Prepara il layout:
bin\confbin\RClonebin\7Zip
- Installa automaticamente, se mancanti:
rclone.exe(portabile)7zr.exe(versione minimale di 7-Zip)
- Crea una attività pianificata (Scheduled Task) per eseguire il backup a orario/frequenza desiderati.
- Opzionale: esegue subito il backup alla chiusura della GUI se selezioni l’apposita checkbox.
5.2 Campi principali della GUI
(I nomi possono variare leggermente, ma il concetto resta lo stesso.)
5.2.1 Cartella di installazione
- Label: “Cartella di installazione”
- TextBox: percorso (default es.
C:\polo\scripts) - Pulsante: “Scegli…” per aprire un
FolderBrowserDialog
Qui verranno salvati gli script (AdHoc-Backup.ps1, send-mail.ps1, ecc.).
5.2.2 URL script / config / template
- URL script AdHoc-Backup.ps1
- URL backup.conf
- URL send-mail.ps1
- URL report_template.html
Sono precompilati con le URL raw di Gitea.
Puoi cambiarli se vuoi puntare ad un tuo fork/branch.
5.2.3 Opzioni generali
-
“Crea attività pianificata senza output (quiet)”
Se spuntata, la Scheduled Task esegueAdHoc-Backup.ps1con parametro-Quiet(niente log su console, solo su file). -
“Eseguire il backup subito dopo l’installazione (alla chiusura)”
Se spuntata:- alla chiusura della GUI l’installer lancia immediatamente
AdHoc-Backup.ps1con la config scelta; - se non spuntata, non parte nessun backup automatico alla chiusura.
- alla chiusura della GUI l’installer lancia immediatamente
5.2.4 Schedulazione (Utilità di pianificazione)
- Checkbox “Crea attività pianificata”
- se disabilitata, l’installer non crea alcun job nel Task Scheduler.
- Combobox “Frequenza”
- valori: “Giornaliero”, “Settimanale”.
- Combobox “Giorno”
- attivo solo se scegli “Settimanale”.
- valori: “Lunedì (MON)”, “Martedì (TUE)”, ecc.
- Campo “Ora”
DateTimePickersolo ora/minuti (es. default 23:00).
- Campo “Nome attività”
- default per es.:
Backup_AdHoc.
- default per es.:
Internamente la GUI usa New-ScheduledTaskAction/Trigger/Principal e Register-ScheduledTask per creare l’attività con privilegi elevati e, se richiesto, con argomenti -Config e -Quiet.
5.2.5 Parametri extra per AdHoc-Backup.ps1
-
TextBox per specificare argomenti aggiuntivi da passare allo script, ad es.:
-Quiet -Config "C:\percorso\altro.conf"
Questi argomenti vengono aggiunti alla stringa della Scheduled Task.
5.2.6 Area di configurazione backup.conf
Nella parte centrale/bassa la GUI:
- legge
backup.confusando un parser che:- mantiene intatti commenti, spazi, tab, ordine delle righe;
- memorizza i soli valori associati alle chiavi.
- genera controlli (TextBox / CheckBox) per i parametri principali (es.
BackupRoot,ArchiveSources,EnableSqlBackup, ecc.).
Quando salvi:
- riscrive solo i valori nel file, lasciando la formattazione esistente invariata.
Questo ti permette di modificare la config senza “rovinare” il file.
5.2.7 Pulsante “Test mail”
- Rilegge la config (in particolare le variabili
Mail*). - Costruisce un body di test.
- richiama
send-mail.ps1per verificare:- connessione SMTP (
MailSmtpHost,MailSmtpPort); - credenziali (
MailUser,MailPassword); - correttezza di mittente/destinatari.
- connessione SMTP (
5.2.8 Pulsanti finali
-
“Installa”
- scarica i file dagli URL indicati;
- prepara le cartelle
bin,conf,RClone,7Zip; - installa rclone/7zr se mancanti;
- salva
backup.conf(se modificato); - crea o aggiorna la Scheduled Task (se abilitata).
-
“Chiudi”
- chiude la GUI;
- se la checkbox “Eseguire il backup subito dopo l’installazione” è spuntata:
- lancia immediatamente
AdHoc-Backup.ps1con ilbackup.confconfigurato.
- lancia immediatamente
6. La configurazione – backup.conf
backup.conf è un file testo CHIAVE=valore con commenti # ....
Lo script:
- ignora righe vuote o che iniziano per
#/;; - espande variabili di ambiente (es.
%COMPUTERNAME%); - gestisce le liste separate da
|.
6.1 Sezione base e retention
Parametri principali:
-
BackupRoot=
Cartella radice dei backup (logs,out,Files,Databases,_sql_stage, ecc.). -
LocalRetentionDaysFiles=
Giorni di retention per gli archivi file inFiles\. -
LocalRetentionDaysDb=
Giorni di retention per gli archivi DB inDatabases\. -
RemoteRetentionDays=
Giorni dopo i quali rclone elimina i file sul remoto (viarclone delete --min-age). -
KeepLocalArchives=(true/false)true: a fine job gli archivi inout\vengono spostati inFiles\/Databases\.false: gli archivi inout\vengono eliminati (dopo l’upload).
-
EnableFileBackup=(true/false)
Abilita/disabilita il backup delle sorgenti file/folder. -
EnableRcloneUpload=(true/false)
Abilita/disabilita l’upload verso lo storage remoto.
6.2 Sorgenti file
ArchiveSources=
Lista di cartelle o share da includere, separate da|.
Esempio:
ArchiveSources=C:\Zucchetti\ahr90|C:\Zucchetti\NetSetup
Lo script:
- rimuove eventuali virgolette;
- ignora percorsi inesistenti (loggando un WARN);
- deduplica i percorsi.
6.3 Backup SQL Server
Parametri principali:
-
EnableSqlBackup=(true/false)
Attiva o meno la parte SQL. -
SqlInstance=
Istanza SQL Server, es.:localhost.\SQLEXPRESSlocalhost\SQLEXPRESS2022192.168.1.10,1433(server remoto su porta esplicita)
-
SqlUseWindowsAuth=(true/false)true: usa Windows Authentication (utente con cui gira il processo).false: usa utente/password SQL esplicitati.
-
SqlUser=,SqlPassword=
Utilizzati solo seSqlUseWindowsAuth=false. -
DbInclude=
Lista di database da includere esplicitamente (separati da|).Se vuoto, lo script:
- chiede a SQL l’elenco dei DB utente online (
sys.databasesconstate=0edatabase_id>4); - li filtra usando
DbExclude.
- chiede a SQL l’elenco dei DB utente online (
-
DbExclude=
Lista di DB da escludere (default includemaster|model|msdb|tempdb). -
SqlCompressStage=(true/false)
Setrue:- comprime
_sql_stage\in un archivioSQL_HOST_DATASTAMP.7znella cartellaout\; - eventuali
.bakpossono essere rimossi (vedi sotto).
- comprime
-
SqlDropBakAfterZip=(true/false)
Setrue:- dopo la compressione, elimina i
.bakda_sql_stage\(riduce lo spazio occupato dalla staging).
- dopo la compressione, elimina i
6.4 7-Zip
SevenZipCompressionLevel=(0–9)- 0 = store (niente compressione);
- 3 = compromesso veloce;
- 7–9 = compressione più forte ma lenta, sconsigliata per DB molto grandi.
Lo script usa 7zr.exe o 7z.exe e gestisce automaticamente i codici di ritorno:
ExitCode=0→ OKExitCode=1→ WARNING (non blocca il job, ma segna un warning e l’esito diventa “COMPLETATO CON WARNING”)- altri codici → errore (solleva eccezione).
6.5 rclone
Parametri principali:
-
RcloneRemoteDest=
Percorso remoto in formatoREMOTE:percorso, es.:RcloneRemoteDest=dropbox:/Backups_AdHoc/%COMPUTERNAME%Dove:
REMOTEè il nome configurato inrclone.conf;%COMPUTERNAME%viene espansa con il nome del server.
-
RcloneBwl=
Limitazione di banda, es.10Mper 10 MB/s. Vuoto = nessun limite. -
RcloneExtraArgs=
Lista di argomenti rclone extra, separati da|, ad esempio:--s3-chunk-size=64M|--s3-upload-concurrency=4|--fast-list
Lo script usa:
rclone copytoper caricare ogni singolo archivio;rclone delete+rclone rmdirsper applicare la retention sul remoto.
Se manca rclone.conf, viene aperta una PowerShell con rclone config --config <percorso> per configurare almeno un remote.
In questo caso lo script si ferma dopo aver lanciato la configurazione, con un messaggio chiaro.
6.6 Email
Parametri:
MailEnabled=(true/false)MailSmtpHost=MailSmtpPort=(es. 587)MailUseAuth=(true/false)MailUser=MailPassword=MailFrom=MailTo=(uno o più destinatari separati da|)MailSubjectPref=
Prefisso per l’oggetto, es.:[BACKUP ADHOC].
send-mail.ps1 usa queste variabili per costruire la connessione SMTP con TLS e inviare la mail di report.
7. Il motore di backup – AdHoc-Backup.ps1
7.1 Avvio e parametri
Lo script accetta:
-Config
Percorso del filebackup.confda usare.-Quiet
Non stampa nulla su console, scrive solo sul file log.
Ricerca il file di configurazione in questa priorità:
- se passi
-Config, usa quello (se esiste, altrimenti errore); - se trova
.\bin\conf\backup.conf(layout installer), usa quello; - altrimenti cerca
backup.confnella stessa cartella dello script.
7.2 Lettura config e variabili script
La funzione Load-Config:
- legge riga per riga
backup.conf; - popola una serie di variabili di scope script, ad esempio:
$BackupRoot$ArchiveSources$EnableFileBackup$EnableSqlBackup$SqlInstance,$SqlUseWindowsAuth,$SqlUser,$SqlPassword$DbInclude,$DbExclude$SqlCompressStage,$SqlDropBakAfterZip$SevenZipCompressionLevel$EnableRcloneUpload$RcloneRemoteDest,$RcloneBwl,$RcloneExtraArgs$KeepLocalArchives$LocalRetentionDaysFiles,$LocalRetentionDaysDb,$RemoteRetentionDays$MailEnabled,$MailSmtpHost,$MailSmtpPort,$MailUseAuth$MailUser,$MailPassword,$MailFrom,$MailTo,$MailSubjectPref
Se manca un parametro obbligatorio (es. BackupRoot, SqlInstance con SQL attivo, credenziali quando richieste), lo script solleva un errore e termina in modo controllato.
7.3 Inizializzazione percorsi e log
Lo script costruisce:
$Paths(oggetto ordinato con Root/Bin/Logs/Out/SqlStage/Files/Databases)$Files(percorsi diSevenZipExe,SevenZip7zr,RcloneExe,RcloneConf, file log)
Crea (se mancanti) tutte le cartelle:
- root backup
Bin,Bin\7Zip,Bin\RClonelogs,out,_sql_stage,Files,Databases
Genera un log file, ad esempio:
C:\Backups_AdHoc\logs\backup_2025-11-19_090224.log
e definisce una funzione di logging che scrive su:
- console (a meno che
-Quiet); - file log.
7.4 Gestione 7-Zip
-
Ensure-7Zip:- controlla se esistono
7z.exeo7zr.exe(prima prova nel layout GUI, poi inBackupRoot\Bin\7Zip); - se assente, scarica
7zr.exeda 7-Zip e lo salva nella cartella corretta.
- controlla se esistono
-
Invoke-7ZipArchive:- costruisce gli argomenti corretti (in base a 7z/7zr);
- usa parametri non interattivi (
-y,-bd, ecc.); - controlla
$LASTEXITCODE:0→ log “OK”;1→ log “WARNING”, non blocca il job;- altri valori → solleva eccezione.
7.5 Gestione rclone
-
Ensure-Rclone:- se
rclone.exenon esiste, scarica lo zip ufficiale dal sito rclone; - lo estrae, trova
rclone.exe, lo copia inBin\RClone; - pulisce le cartelle temporanee.
- se
-
Ensure-RcloneConfigOrLaunch:- se manca
rclone.conf:- apre una PowerShell con
rclone config --config <percorso>; - mostra istruzioni chiare nel log;
- termina il job con un errore esplicito.
- apre una PowerShell con
- se manca
-
Invoke-RcloneCopyTo:- esegue
rclone copytocon:--config rclone.conf;- opzioni standard (
--transfers,--checkers,--retries, ecc.); - eventuale
--bwlimitderivato daRcloneBwl; - argomenti extra da
RcloneExtraArgs.
- esegue
-
Apply-RemoteRetention:- se
RemoteRetentionDays >= 0e upload abilitato:- esegue
rclone deletecon--min-age; - esegue
rclone rmdirsper eliminare cartelle vuote.
- esegue
- se
7.6 Backup SQL Server
Funzioni principali:
-
Resolve-Sqlcmd
Cercasqlcmd.exenel PATH e in percorsi standard di installazione SQL Server. -
Build-SqlcmdArgs/Log-SqlcmdArgsSafe
Preparano gli argomenti persqlcmd, mascherando la password nella versione loggata. -
Get-OnlineUserDatabases
Recupera l’elenco dei DB utente online (sys.databases), escludendo i system DB (master, model, msdb, tempdb). -
Backup-SqlDatabases:- Assicura l’esistenza di
_sql_stage\e tenta di assegnare permessiModifyaEveryone, per evitare problemi quando SQL scrive i.bakcon account di servizio. - Trova
sqlcmd.exe; se assente → errore. - Determina
dbListin base aDbInclude/DbExclude. - Per ogni DB:
- produce script
.sqldi backup; - lancia
sqlcmdper eseguire ilBACKUP DATABASEsu un.bakin_sql_stage\; - verifica l’esistenza del file
.bak.
- produce script
- Se
SqlCompressStage=true:- comprime
_sql_stage\inSQL_HOST_DATASTAMP.7zdentroout\; - se
SqlDropBakAfterZip=true, cancella i.bak.
- comprime
- Ritorna il percorso dell’archivio SQL oppure
nullse non creato.
- Assicura l’esistenza di
7.7 Archiviazione file/folder
Archive-FileSources:- normalizza e verifica tutte le sorgenti di
ArchiveSources; - crea un archivio tipo
FILES_HOST_DATASTAMP.7zinout\; - ritorna il percorso dell’archivio o
nullse nessuna sorgente è valida.
- normalizza e verifica tutte le sorgenti di
7.8 Gestione cartella out\ e copie locali
-
Get-OutFiles
Restituisce tutti i file presenti inout\. -
Move-OutFiles-ToStores
Sposta gli archivi:- quelli con nome che inizia per
FILES_inFiles\; - gli altri (SQL) in
Databases\.
- quelli con nome che inizia per
-
Delete-OutFiles/Empty-OutFolder
Eliminano i file e/o eventuali sottocartelle inout\.
7.9 Retention locale
-
Apply-LocalArchivesRetention
Per ogni file inFiles\eDatabases\più vecchio diLocalRetentionDaysFiles/LocalRetentionDaysDb:- prova a cancellarlo;
- logga sia successi che errori.
-
Apply-GenericRetention
Applica retention generica su:logs\_sql_stage\
cancellando file più vecchi di
RetentionDays.
7.10 Flusso MAIN (riassunto)
In modo semplificato:
- Crea tutte le cartelle necessarie.
- Scrive nel log i parametri principali (root, retention, ecc.).
- Inizia a costruire una stringa di riepilogo con:
- hostname
- data/ora di start
- dettagli che verranno aggiunti via via.
- Prepara i tool:
- se servono archivi (
EnableFileBackupo SQL compresso), chiamaEnsure-7Zip; - se
EnableRcloneUpload=true, chiamaEnsure-RcloneeEnsure-RcloneConfigOrLaunch.
- se servono archivi (
- Se
EnableSqlBackup=true:- esegue
Backup-SqlDatabases; - aggiunge al riepilogo il percorso dell’archivio SQL (se presente).
- esegue
- Se
EnableFileBackup=true:- esegue
Archive-FileSources; - aggiunge al riepilogo il percorso dell’archivio file.
- esegue
- Determina i file effettivamente presenti in
out\:- se nessuno → warning.
- Se upload abilitato e ci sono file in
out\:-
per ogni file costruisce il percorso remoto:
<RcloneRemoteDest>/<DATASTAMP>/<NOMEARCHIVIO> -
chiama
Invoke-RcloneCopyToper inviarlo; -
aggiorna il riepilogo con la destinazione.
-
- Copie locali:
- se
KeepLocalArchives=true:Move-OutFiles-ToStoreseEmpty-OutFolder;
- se
false:Delete-OutFileseEmpty-OutFolder.
- se
- Retention:
- se upload abilitato →
Apply-RemoteRetention; - sempre →
Apply-LocalArchivesRetention+Apply-GenericRetention.
- se upload abilitato →
- Determina l’esito finale:
- se sono stati registrati warning →
ESITO: COMPLETATO CON WARNING; - se nessun errore/warning →
ESITO: COMPLETATO.
- se sono stati registrati warning →
- Report mail:
- se
send-mail.ps1esiste:- viene “dot-sourced” (
. .\send-mail.ps1); - viene chiamata la funzione che invia la mail passando:
Subject = MailSubjectPref + <testo>(es. include host ed esito);Body = riepilogo + log sintetico.
- viene “dot-sourced” (
- se succede un errore generale:
- il
catchimpostaESITO: FALLITO; - logga l’errore;
- tenta comunque di inviare un’email di fallimento.
- il
- se
8. Invio mail e template – send-mail.ps1 + report_template.html
8.1 Parametri e funzioni principali
send-mail.ps1 viene eseguito dal motore di backup con:
-Subject→ oggetto della mail (prefisso daMailSubjectPref+ esito/hostname);-Body→ testo con riepilogo + estratto del log.
Funzioni principali:
-
Format-Bytes/Format-Duration
Utility per formato dimensione e durata in forma leggibile. -
Get-StatusInfo
Analizza la stringaBodycercandoESITO: ...e restituisce:- stato (OK/WARNING/FAIL) e
- colore da usare nel template (verde/giallo/rosso).
-
Build-ReportHtml
Costruisce l’HTML finale del report:- Cerca
report_template.htmlin:$script:InstallerConfDir(quando eseguito tramite installer GUI),$InstallerConfDir,bin\confvicino allo script,C:\polo\scripts\bin\conf.
- Se non trova il template:
- genera una versione HTML di fallback (semplice ma leggibile) e non blocca il job.
- Se trova il template:
- lo legge in UTF-8;
- sostituisce i placeholder con:
- stato e colore (
XXXSTATUSXXX,XXXBGCOLORXXX, ecc.); - host, versione script;
- data/ora di inizio/fine, durata;
- dimensioni totali/SQL/FILES;
- spazio disco totale/usato/libero;
- destinazione rclone;
- dettaglio del log formattato con
<br>al posto dei newline.
- stato e colore (
- Cerca
-
Send-ReportMail
Si occupa di inviare realmente la mail:- Se
MailEnabled=false→ esce loggando che la mail è disabilitata. - Recupera i parametri
Mail*(host, porta, credenziali, mittente, destinatari). - Crea un
SmtpClient:- abilita SSL/TLS;
- imposta eventuali credenziali (
MailUser/MailPassword); - imposta
FromeTo.
- Imposta
BodyHTML (quello generato daBuild-ReportHtml) e l’oggetto. - Invia e logga il risultato.
- Se
Alla fine del file:
- viene chiamato
Send-ReportMail -Subject $Subject -Body $Body.
9. Modalità d’uso consigliata (end-to-end)
9.1 Prima installazione
-
Apri PowerShell come Administrator.
-
Lancia l’installer GUI con:
powershell irm "https://gitea.poloinformatico.it/Mattia/Backup-AdHoc/raw/branch/main/install-AdHoc-Backup-GUI.ps1" | iex -
Nella GUI:
- verifica la cartella di installazione (es.
C:\polo\scripts); - lascia gli URL di default, a meno che tu non voglia prendere i file da un tuo branch.
- verifica la cartella di installazione (es.
-
Configura la schedulazione:
- spunta “Crea attività pianificata”;
- imposta “Giornaliero” o “Settimanale”;
- scegli l’orario (es. 23:00) e il giorno (se settimanale);
- eventualmente modifica il nome dell’attività.
-
Compila la sezione
backup.conf:- imposta
BackupRoot(es.C:\Backups_AdHoc); - imposta
ArchiveSourcescon le cartelle da salvare; - configura SQL (istanza, autenticazione, DB da includere/escludere);
- imposta
RcloneRemoteDeste, se necessario,RcloneBwl/RcloneExtraArgs; - configura la parte mail (SMTP, credenziali, mittente/destinatari).
- imposta
-
(Opzionale) Spunta “Eseguire il backup subito dopo l’installazione” per fare un test completo.
-
Premi “Installa”:
- l’installer scarica gli script;
- prepara layout e tool;
- crea la Scheduled Task se richiesto.
-
Premi “Chiudi”:
- se avevi spuntato l’opzione, parte il backup immediato.
9.2 Verifica dopo il primo run
- Controlla il log in
C:\Backups_AdHoc\logs\. - Verifica che:
- siano presenti archivi in
Files\/Databases\(seKeepLocalArchives=true); - i file siano arrivati sul remoto (rclone);
- sia arrivata la mail di report all’indirizzo/i impostati in
MailTo.
- siano presenti archivi in
9.3 Esecuzione manuale (senza GUI)
Una volta installato, puoi sempre testare o lanciare il backup manualmente.
Da PowerShell:
cd C:\polo\scripts
.\AdHoc-Backup.ps1 -Config "C:\polo\scripts\bin\conf\backup.conf"
Oppure in modalità silenziosa:
cd C:\polo\scripts
.\AdHoc-Backup.ps1 -Config "C:\polo\scripts\bin\conf\backup.conf" -Quiet
10. Troubleshooting rapido
-
Errore: “File di configurazione non trovato. Ho creato un template…”
- Lo script non trova
backup.conf→ ne crea uno base. - Compila il template generato e riesegui il backup.
- Lo script non trova
-
Errore SQL:
sqlcmd.exe non trovato- Installa i client tools di SQL Server oppure aggiungi
sqlcmd.exeal PATH di sistema. - Verifica i permessi di scrittura su
_sql_stage\(account del servizio SQL).
- Installa i client tools di SQL Server oppure aggiungi
-
Errore rclone:
rclone.conf assente- Lo script apre una PowerShell con
rclone config. - Configura almeno un remote con il nome usato in
RcloneRemoteDest. - Riesegui il backup dopo aver completato la configurazione.
- Lo script apre una PowerShell con
-
Mail non arrivano
- Verifica
MailEnabled=trueinbackup.conf. - Controlla
MailSmtpHost/MailSmtpPort/MailUseAuth/MailUser/MailPassword. - Verifica che
MailFromeMailTosiano corretti. - Usa il pulsante “Test mail” della GUI per fare prove rapide.
- Verifica
-
Spazio disco che si riempie troppo
- Controlla:
LocalRetentionDaysFilesLocalRetentionDaysDbRetentionDays(per log e_sql_stage)
- Riduci i valori se vuoi conservare meno storico, oppure aumenta lo spazio a disposizione.
- Controlla:
-
Backup troppo lenti o banda saturata
-
Aumenta o diminuisci
SevenZipCompressionLevela seconda delle esigenze. -
Usa
RcloneBwlper limitare la banda, es.:RcloneBwl=10M -
Valuta di schedulare il backup in orari notturni tramite la GUI.
-