Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Da anni ho l'abitudine di lanciare un backup notturno sul disco esterno (una volta lo scambiavo con il lettore DVD ora è un drive USB). Ieri ho applicato due importanti modifiche.
Anzitutto ho scoperto che Vista ha una versione aggiornata di ROBOCOPY, di cui segnalo l'opzione /MIR che copia rimuovendo i file in più trovati nella destinazione.
La seconda scoperta, grazie ad Adi è che le funzionalità di Shadow Copy non sono una faccenda esoterica per server con uno storage attaccato ma posso usarla anche sul mio piccolo notebook per i backup. Per farla breve c'è il programmino VSHADOW, contenuto ora nell'SDK di Vista (la versione ISO son 1,15GB), che permette di controllare le shadow copy; in pratica creo delle istantanee di un disco di cui voglio fare il backup, assegno un drive (S:) alla fotografia e posso farne il backup senza problemi di lock... database SQL, OST/PST di Outlook, anche il registry!
Ecco l'estratto del mio script UserBackup.cmd, come vedete mi piace avere un log di quanto succede.
@echo off
echo Vuoi davvero cominciare il backup?
pause
pushd
setlocal
set SYS_DRIVE=C:
set DATA_DRIVE=D:
set DEST_DRIVE=F:\BACKUP
REM use Vista version
set ROBOCOPY=ROBOCOPY
set VSHADOW=d:\bin\vshadow.exe
set LOG_DIR=BackupLogs
set LOG_PATH=%SYS_DRIVE%\%LOG_DIR%
REM Backup counter
if exist %LOG_PATH%\lastnum.cmd call %LOG_PATH%\lastnum.cmd
set /a N+=1
echo set N=%N% > %LOG_PATH%\lastnum.cmd
set COPY_OPT=/MIR /ZB /R:1 /W:1 /XJ /EFSRAW
set LOG_OPT=/NP /TEE /LOG+:%LOG_PATH%\robocopy%N%.log
title BACKUP RUN #%N% TO %DEST_DRIVE%
cls
%SYS_DRIVE%
cd \
echo Checking environment
if not exist %LOG_PATH% md %LOG_PATH%
REM echo Defragmenting destination (%DEST_DRIVE%)
REM defrag %DEST_DRIVE% -f -v >> %LOG_PATH%\d-defrag%N%.log
REM >>> DATA VOL
%VSHADOW% -p -script=%TEMP%\SetVShadowVars.cmd %DATA_DRIVE% >> %LOG_PATH%\shadow%N%.log
call %TEMP%\SetVShadowVars.cmd
%VSHADOW% -el=%SHADOW_ID_1%,S: >> %LOG_PATH%\shadow%N%.log
set F=Archive
echo *** Backup %F% ********************************
%ROBOCOPY% "S:\%F%" "%DEST_DRIVE%\%F%" %COPY_OPT% %LOG_OPT%
REM eccetera eccetera
%VSHADOW% -dx=%SHADOW_SET_ID% >> %LOG_PATH%\shadow%N%.log
del %TEMP%\SetVShadowVars.cmd
REM >>> SYSTEM VOL
%VSHADOW% -p -script=%TEMP%\SetVShadowVars.cmd %SYS_DRIVE% >> %LOG_PATH%\shadow%N%.log
call %TEMP%\SetVShadowVars.cmd
%VSHADOW% -el=%SHADOW_ID_1%,S: >> %LOG_PATH%\shadow%N%.log
set F=%USERPROFILE%
echo *** Backup %F% ********************************
%ROBOCOPY% "S:\%F%" "%DEST_DRIVE%\%F%" /XD "Temp" /XD "Temporary Internet Files" %COPY_OPT% %LOG_OPT%
%VSHADOW% -dx=%SHADOW_SET_ID% >> %LOG_PATH%\shadow%N%.log
del %TEMP%\SetVShadowVars.cmd
REM echo Defragmenting source (%SYS_DRIVE%)
REM defrag %SYS_DRIVE% -w -f -v >> %LOG_PATH%\defrag%N%.log
REM echo Defragmenting source (%DATA_DRIVE%)
REM defrag %DATA_DRIVE% -f -v >> %LOG_PATH%\defrag%N%.log
xcopy %LOG_PATH%\*.log %DEST_DRIVE%\%LOG_DIR%\ /M /C /R /K /Y
echo Backup complete.
echo Script complete.
pause
goto bye
:usage
echo Usage: %0
:bye
endlocal
popd
Attenzione che funziona esclusivamente con Vista, per usarlo su XP o 2003 son necessari degli adattamenti.
Ovviamente non ci sono garanzie o responsabilità se volete usarlo ;-)