Robocopy – Meglio un Backup Rudimentale di Nulla…

I miei colleghi più illustri di sicuro storceranno il naso ben conoscendo l’importanza di un backup a regola d’arte. Difficilmente però ho avuto la fortuna ed il piacere di riuscire a sensibilizzare anche il piccolo ufficio relativamente ai software di backup ed ai fondamentali tempi di ripristino …., allora piuttosto che lasciare il povero malcapitato senza l’ombra di un backup, come spesso mi è capitato nella vita ho cercato di “arrangiarmi” con “quello che passa il convento”; qualche script e un po’ di sudore della fronte.

Non ricordo la prima volta che ho iniziato a testare Robocopy, uno dei piccoli gioiellini di mamma Microsoft, ma ricordo benissimo perché lo uso tutt’ora: grazie agli ottimi risultati raggiunti. Come forse avrete capito non sono un “programmatore”e non ho la prestesa di volerlo sembrare. Negli anni però ho preso spunto da colleghi molto più bravi di me e messo in piedi le 3 o 4 versioni dei mie script che uso in base alle esigenze del caso.

Oggi vi regalerò un bello script già pronto per avere almeno una copia dei vostri dati sempre aggiornata e alcune copie dei soli file modificati divise per data, mi raccomando prima di renderlo operativo fate le vostre prove con percorsi di test.

Ecco il codice che potete incollare in un file di testo con il notepad e salvare con estensione .cmd o .bat

@echo off

:: variables

rem impostiamo il formato della data in italiano
set Date=%date:~6,4%-%date:~3,2%-%date:~0,2%

rem impostiamo il comando robocopy per il backup completo e incrementale
set backupcmdfull=robocopy /MIR /V /NP /LOG:"A:\logfiles\%date%.txt" /r:0 /w:0

rem impostiamo il comando robocopy per il backup differenziale
set backupcmdday=robocopy /MIR /M /V /NP /LOG:"A:\logfiles\%date%.txt" /r:0 /w:0

rem impostaimo il comando robocopy per pulire la cartella con i log
set checklogcmd=robocopy /s /mov /create /minage:30 /r:0 /w:0

rem ipotizziamo che L sia l'unità sorgente di cui vogliamo effettuare il backup
rem ipotizziamo che Z sia l'unità nella quale vogliamo avere i nostri backup

:DriveZ
setlocal
set source=Z:\BACKUP_DAILY
mkdir Z:\LOGFILES
%backupcmdfull% L:\ Z:\BACKUP_FULL\
%backupcmdday% L:\ Z:\BACKUP_DAILY\BACKUP_%date%\
%checklogcmd% Z:\LOGFILES Z:\GARBAGE
rd Z:\Garbage /s /q

rem ripuliamo il nostro disco dai backup più vecchi di 10 giorni

pushd "%source%"
for /f "skip=10 delims=" %%a in ('dir /b /a:d /o:-d 2^>NUL') do rmdir /s /q "%%a"
popd
endlocal
GOTO End
:End

@echo Backup Completed

 

Vi ricordo che nei Sistemi operativi precedenti a Windows Vista, Robocopy deve essere installato come parte del “Resource Kit” per Windows Servere 2003 che trovate qui:

http://www.microsoft.com/en-us/download/details.aspx?id=17657

Uno sguardo al file di log vi darà un’idea di come sia andato il vostro backup:

E uno Sguardo ai vostri Backup Giornalieri… in cui troverete l’intero albero di cartelle uguale all’originale ma con solo i file modificati durante la data indicata.

Ancora una volta la parte che mi piace di meno: questa è solo la mia personale esperienza e non è detto che sia la migliore o la più efficace, mi raccomando fate un milione di test prima di lavorare su file e cartelle importanti e vi prego di non ritenermi responsabile relativamente alla possibile perdita dei vostri dati; magari prossimamente racconterò qualcosa dei Software che uso in situazioni professionalmente più delicate, non prima però di aver condiviso ancora qualche script ^__^.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *