E’ esigenza diffusa realizzare copie di sicurezza di file personali e/o aziendali su una macchina diversa da quella in cui risiedono i file stessi. In questo micro post vi riporto un semplice script da utilizzarsi su macchine windows verso uno sharing di rete che può essere ospitato tanto su di un server Windows tanto su di una macchina Linux con server Samba.
Si tratta di un file batch molto semplice ma efficace ed efficiente.
Per prima cosa si definiscono un paio di variabili di ambiente che facilitano l’eventuale modifica del file. La variabile LOGFILE contiene il percorso ed il nome di un file di LOG in cui memorizzare le attività svolte dallo script. Una seconda variabile di nome REMOTEDISK indica la lettera di unità di volume dello sharing per la destinazione del backup.
Al lancio lo script accoda nel file di log data ed ora dell’inizio delle operazioni e verifica l’esistenza della destinazione. In caso negativo termina saltando all’etichetta :notarget. Le istruzioni ECHO sembrano ripetitive ma hanno uno scopo. La prima è per la visualizzazione a schermo durante l’esecuzione dello script mentre la seconda serve per accodare, tramite l’operatore di redirezione >>, il testo descrittivo nel file di log.
Se tutto procede come ci si attende le istruzioni xcopy, grazie all’opzione /D,copiano sulla destinazione i soli file modificati. Ciò consente una notevole efficienza dello script. L’opzione /E serve per copiare anche le cartelle vuote in modo da riportare sul disco di backup la reale struttura di origine. L’opzione /Y non chiede conferma per la sovrascrittura dei file.
Da notare l’uso dei doppi apici nel comando xcopy. Nell’esempio non sarebbero strettamente necessari ma risulterebbero indispensabili nel caso di percorsi con spazi presenti al loro interno.
Lo script può essere facilmente inserito nelle attività automatiche di Windows per essere lanciato, nel caso di server aziendali, preferibilmente di notte.
Carlo A. Mazzone
@ECHO OFF
CLS
ECHO ************************
ECHO *** BACKUP UTILITY ***
ECHO *** VER 1.1.3 ***
ECHO *** Carlo A. Mazzone ***
ECHO ************************
SET LOGFILE=c:\BackupLogs.txt
SET REMOTEDISK=X:
ECHO *********************** >> %LOGFILE%
DATE /T >> %LOGFILE%
TIME /T >> %LOGFILE%
ECHO Inizio operazioni …
ECHO Inizio operazioni >> %LOGFILE%
REM Test esistenza directory destinazione
IF not EXIST %REMOTEDISK% GOTO notarget
ECHO Copia CARTELLA_1 in corso …
ECHO COPIA CARTELLA_1 >> %LOGFILE%
xcopy “C:\CARTELLA_1\*.*” %REMOTEDISK%\DATI_BACKUP\ /E /D /Y >> %LOGFILE%
ECHO Copia CARTELLA_2 in corso …
ECHO COPIA CARTELLA_2 >> %LOGFILE%
xcopy “C:\CARTELLA_2\*.*” %REMOTEDISK%\DATI_BACKUP\ /E /D /Y >> %LOGFILE%
GOTO fine
:notarget
ECHO Errore – target NON disponibile >> %LOGFILE%
GOTO fine
:fine
DATE /T >> %LOGFILE%
TIME /T >> %LOGFILE%
ECHO Fine operazioni >> %LOGFILE%
ECHO *********************** >> %LOGFILE%