Controlla la velocità della tua connessione

VAI AL CONTENUTO DELLA PAGINA | VAI AL MENU PRINCIPALE

ONLUS
via Borgognona, 38 - 00187 Roma Tel 06.69.98.81 - Fax 06.67.86.815 - numero verde 800 682682 - Part. I.V.A. 00989551007

U I C - Osservatorio Siti Internet - OSI -

VAI AL MENU PRINCIPALE

Effettuare il backup di file e cartelle con un semplice script batch.

Gli script batch tornano sempre utili. In Windows, per automatizzare il backup del contenuto di alcune cartelle, è possibile servirsi di un semplice script che si farà carico di creare una copia di sicurezza di interi percorsi.

Particolarmente utile allo scopo è il comando XCopy. Verrà impiegato insieme con alcuni "switch" in modo da regolarne il comportamento.

Com'è possibile verificare nello script sotto riportato, XCopy viene invocato utilizzando gli switch /c, /d, /e, /h, /i, /r e /y in rigoroso ordine alfabetico. Di seguito si riassume brevemente il significato di ciascuno di essi.

/c continua la copia dei file e delle cartelle anche qualora dovesse verificarsi un errore. Nel caso in cui risultasse impossibile copiare un file, per un qualsiasi motivo, la procedura di copia degli altri elementi non verrà interrotta;

/d richiede di copiare solamente i file modificati dopo una certa data. Dal momento che, in questo caso, non viene specificata alcuna data, XCOPY provvede a copiare solo i file la cui data di creazione risulta posteriore a quella del file omonimo eventualmente contenuto nella cartella di destinazione;

/e permette di copiare tutte le cartelle, comprese le sottocartelle eventualmente presenti. Utilizzando, in alternativa, l'opzione /s, XCOPY copierà esclusivamente le cartelle non vuote.

/h copia anche file nascosti e file di sistema.

/i se la destinazione non esiste e la copia riguarda più file, verrà presupposto che la destinazione sia una directory.

/r provvede a sovrascrivere anche gli eventuali file dotati dell'attributo di sola lettura.

/y evita che lo script chieda conferma ad ogni eventuale operazione di sovrascrittura dei file, dalla cartella sorgente a quella di destinazione.

Nello script batch che segue abbiamo concentrato la nostra attenzione solamente sulle cartelle predefinite per la memorizzazione dei documenti, del contenuto del desktop di Windows, dell'elenco dei siti web preferiti di Internet Explorer.

Sarà comunque semplice aggiungere nuovi percorsi (ad esempio se si è soliti memorizzare i propri file in altre directory od in altre unità).

@ECHO OFF

SET Versione=sconosciuta

VER | FINDSTR /IL "5.0" > NUL

IF %ERRORLEVEL% EQU 0 SET Versione=2000

VER | FINDSTR /IL "5.1." > NUL

IF %ERRORLEVEL% EQU 0 SET Versione=XP

VER | FINDSTR /IL "6.0." > NUL

IF %ERRORLEVEL% EQU 0 SET Versione=Vista

VER | FINDSTR /IL "6.1." > NUL

IF %ERRORLEVEL% EQU 0 SET Versione=Seven

if %Versione%==Vista goto WINVISTA

if %Versione%==Seven goto WIN7

if %Versione%==2000 goto WIN2000

if %Versione%==XP goto WINXP

goto FINE

:WINVISTA

:WIN7

xcopy /c /d /e /h /i /r /y "%USERPROFILE%Documents"

"BACKUP_%COMPUTERNAME%_%date:/=-%%USERNAME%Documents"

xcopy /c /d /e /h /i /r /y "%USERPROFILE%Desktop"

"BACKUP_%COMPUTERNAME%_%date:/=-%%USERNAME%Desktop"

xcopy /c /d /e /h /i /r /y "%USERPROFILE%Favorites"

"BACKUP_%COMPUTERNAME%_%date:/=-%%USERNAME%Favorites"

goto FINE

:WIN2000

:WINXP

xcopy /c /d /e /h /i /r /y "%USERPROFILE%Documenti"

"BACKUP_%COMPUTERNAME%_%date:/=-%%USERNAME%Documenti"

xcopy /c /d /e /h /i /r /y "%USERPROFILE%Desktop"

"BACKUP_%COMPUTERNAME%_%date:/=-%%USERNAME%Desktop"

xcopy /c /d /e /h /i /r /y "%USERPROFILE%Preferiti"

"BACKUP_%COMPUTERNAME%_%date:/=-%%USERNAME%Preferiti"

:FINE

SET Versione=

echo Backup completato.

Il funzionamento dello script è piuttosto semplice. In prima battuta, viene utilizzato un espediente per cercare di stabilire la versione di Windows installata sul sistema. Per far ciò viene invocato il comando VER ed analizzato il suo output. A seconda del numero di versione rilevato, viene creata una nuova variabile (denominata Versione) ed all'interno di essa viene memorizzata una stringa facente riferimento alla versione del sistema operativo in uso.

E' stato previsto il rilevamento di Windows 2000, Windows XP, Windows Vista e Windows 7 (il comando VER indica, ad esempio, Windows 7 come Windows 6.1 mentre Windows Vista come Windows 6.0). Se si volesse aggiungere anche Windows Server 2003, si dovrà – ad esempio – inserire qualcosa di simile:

VER | FINDSTR /IL "5.2." > NUL

IF %ERRORLEVEL% EQU 0 SET Versione=2003

Successivamente bisognerà comunque aggiungere del codice per trattare anche l'eventualità che lo script batch sia eseguito su Windows Server 2003 o su Windows Server 2008.

A seconda del sistema operativo installato, vengono quindi eseguiti comandi differenti. L'approccio scelto consente di lavorare sulle cartelle appropriate, che differiscono a seconda della versione di Windows. Ad esempio, se in Windows XP in italiano la cartella contenente i segnalibri di Internet Explorer si chiama "Preferiti", in Windows 7 in italiano diventa "Favorites".

Come cartella di destinazione (secondo argomento del comando XCOPY), viene indicata la seguente:

"BACKUP_%COMPUTERNAME%_%date:/=-%%USERNAME%nome_cartella"

Ciò significa che, appena avviato lo script batch, esso provvederà a creare una nuova cartella – nella stessa directory ove è stato salvato il file .BAT – e le assegnerà il nome BACKUP_nome_del_computer_data_creazione.

Utilizzando %date:/=-% si legge la variabile di sistema contenente la data corrente (orologio di Windows) e si sostituisce il carattere "/" con "-". Quest'ultima operazione di sostituzione è indispensabile perché Windows non accetta la barra all'interno dei nomi di file e cartelle.

Prima di lanciare lo script o effettuare qualunque intervento, assicuratevi comunque più e più volte della correttezza dei percorsi sorgente e destinazione specificati.

Aggiungendo un'istruzione come xcopy /c /d /e /h /i /r /y "%APPDATA%MicrosoftAddress Book" "BACKUP_%COMPUTERNAME%_%date:/=-%%USERNAME%Address Book" si può ad esempio aggiungere, nel caso di Windows XP, la copia della rubrica di Outlook Express.

Analogamente si possono copiare le directory degli altri browser web e degli altri client di posta elettronica contenenti preferenze, segnalibri, archivi e-mail, firme per i messaggi, rubrica e così via.