Robocopy è una piccola utility, che non tutti conoscono, presente nei sistemi operativi Microsoft ed è in grado di gestire la copia dei file in molti modi particolari. Dopo la richiesta fatta da VRR nel nostro forum ho scoperto, cosa che non sapevo, che è in grado di fare un backup, in tempo praticamente reale, dei file modificati presenti in una cartella a nostra scelta. Vediamo come utilizzare robocopy per avere il nostro backup in tempo reale.
Il comando
La forma più semplice del comando è robocopy “cartella sorgente” “cartella destinazione”
Dato che robocopy ha numerose opzioni, che potete consultare nella pagina ufficiale Microsoft, vediamo di aggiungerne alcune, quelle che mi sono sembrate più utili, al comando visto in precedenza:
/mot:x
tiene sotto controllo la cartella sorgente e ogni x minuti, cifra che possiamo impostare noi, esegue il comando/mon:x
tiene sotto controllo la cartella sorgente e ogni x modifiche fatte ai file esegue il comando./e
esegue la copia di tutte le cartelle presenti all’interno della cartella sorgente./purge
cancella dalla cartella destinazione i file che non sono più presenti nella cartella origine, esegue così la sincronizzazione delle cartelle./log:”nome file”
crea un file di log contenente tutte le operazioni fatte da robocopy.
Ho indicato la pagina di supporto inglese perché in quella italiana sono state tradotte (malissimo) anche le opzioni del comando che sono così diventate /epurazione, /Grasso e /Massimo.
Il comando finale può così diventare simile a questo: robocopy c:\temp e:\backup /mot:1 /mon:1 /e /purge /log:”d:\log.txt”
Dove c:\temp è la cartella sorgente, e:\backup quella destinazione della copia e d:\log.txt e il file che contiene il report delle varie operazioni (non è indispensabile ma magari volete tenere una traccia).
Come eseguire il comando
Quello che ci serve adesso è di eseguire robocopy e di mantenerlo sempre attivo in memoria, nella foto vedete quanto poco consuma a livello di RAM, in modo che controlli in tempo reale la cartella sorgente e le modifiche ai file.
La via che mi è sembrata migliore, così da poter eseguire il comando in modo del tutto invisibile all’utente è quella di utilizzare lo script VBS che avevo allegato a questo articolo, creare uno script PowerShell con la stringa che abbiamo visto prima robocopy c:\temp e:\backup /mot:1 /mon:1 /e /purge /log:”d:\log.txt”
, poi ci serve un file di comandi, un .cmd, che attivi PowerShell e i due script, il cui contenuto deve essere simile a questo C:\Windows\System32\wscript.exe //B "d:\esecuzione_silenziosa.vbs" pwsh.exe -ExecutionPolicy ByPass -file "d:\backup.ps1"
.
Infine bisogna usare le operazioni pianificate per eseguirlo a ogni avvio del sistema operativo.
In allegato all’articolo trovate i file esempio che dovrete modificare a seconda delle vostre esigenze, ho inserito due file cmd a seconda della versione di PowerShell che avete nel computer.
Nella creazione dell’attività pianificata va scelto come Attivazione
all’accesso di qualsiasi utente.
Mentre tra le Azioni
bisogna selezionare il file .cmd creato in precedenza.