|
La utilidad consiste en poder copiar ficheros que están en uso por otra aplicación. Con este ejemplo, podemos copiarnos la carpeta de correo: outlook.pst por ejemplo, aunque esté abierto el correo. Su uso no se limita únicamente al correo: es posible copiar cualquier archivo o carpeta completa aunque esté en uso.
Shadow Copy es un servicio nativo de W2003 cuya utilidad está dirigida a proteger carpetas compartidas que están en uso por usuarios, y ante posibles errores de usuarios realiza copias periódicas al objeto de no perder datos por manipulaciones incorrectas, como por ejemplo borrados accidentales. XP también es capaz de usarlo indirectamente con NTBackup, pero en principio está restringido sólo a un servicio y por desgracia, solo para que lo use NTBackup.
¿CÓMO IMPLEMENTARLO EN XP DE UNA MANERA GENÉRICA?
Lamentablemente, la única manera de obtener ese fichero es bajarse el SDK del Volume Shadow Copy Service: http://www.microsoft.com/downloads/details.aspx?FamilyID=0B4F56E4-0CCC-4626-826A-ED2C4C95C871&displaylang=en que por desgracia ocupa 23 megas. Una vez instalado, debemos localizar el programa vshadow.exe del cual nos dejará dos versiones: una para XP y otra para W2003. Debemos copiar la de XP a la misma carpeta en donde nos vamos a generar el script que se describe a continuación.
Con Notepad por ejemplo, o con cualquier editor, creamos un fichero llamado copyshadow.cmd con el siguiente contenido (delimitado por las líneas de guiones, sin copiar estas):
----------------------------------------- setlocal
if NOT "%CALLBACK_SCRIPT%"=="" goto :IS_CALLBACK
set SOURCE_DRIVE_LETTER=%~d1 set SOURCE_RELATIVE_PATH=%~pnx1 set DESTINATION_PATH=%2
set CALLBACK_SCRIPT=%~s0 set TEMP_GENERATED_SCRIPT=GeneratedVarsTempScript.cmd
"%~dp0\vshadow.exe" -script=%TEMP_GENERATED_SCRIPT% -exec=%CALLBACK_SCRIPT% %SOURCE_DRIVE_LETTER%
del /f %TEMP_GENERATED_SCRIPT%
@goto :EOF
:IS_CALLBACK setlocal
call %TEMP_GENERATED_SCRIPT%
copy "%SHADOW_DEVICE_1%\%SOURCE_RELATIVE_PATH%" %DESTINATION_PATH% ----------------------------------------
Posteriormente la manera de ejecutarlo en una ventana de comandos (cmd.exe) es:
copyshadow origen destino
siendo "origen" un archivo o carpeta y el mismo criterio para "destino". Si el origen o destino tuviese caracteres especiales, como espacios en blanco, deberán encerrarse entre comillas. Por ejemplo:
copyshadow "carpeta origen 1" "c:\pruebas de copia"
en este caso, copiará todo el contenido de "carpeta origen 1" que cuelga de la carpeta en donde estemos situados en ese momento a la carpeta "c:\pruebas de copia"
NOTAS:
El "origen" puede ser:
1) Un nombre de fichero, y en este caso el destino debe ser una carpeta en donde vayamos a dejarlo, o bien una carpeta y el nombre del archivo. El nombre "origen" debe estar totalmente cualificado, o supondrá que está en la carpeta actual.
2) Una carpeta. En este caso el destino debe ser otra carpeta y debe existir. Si no existiese, lo creará como un único archivo y meterá dentro de él, todos los archivos origen uno a continuación del otro.
PROBLEMAS CONOCIDOS:
La letra de unidad Z: debe estar libre en nuestra máquina y no mapeada a ningún recurso local o de red.
Autor: José Manuel Tella Llop http://www.multingles.net/jmt.htm |