SHADOW COPY en Windows XP
-
Utilidad: por ejemplo, copiar ficheros que están en uso por otra aplicacion.
Con este ejemplo, podemos copiarnos la carpeta de correo: outlook.pst por
ejemplo, aunque esté abierto el correo. Su uso no se limita unicamente 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 estan en uso por usuarios, y ante posibles
errores de usuarios realiza copias periodicas al objeto de no perder datos por
manipulaciones incorrectas como por ejemplo borrados accidentales.
XP tambien es capaz de usarlo indirectamente con NTBackup, pero en principio
está restringido solo a un servicio y por desgracia, solo para lo use NTBackup.
¿COMO IMPLEMENTARLO EN XP DE UNA MANERA GENERICA?
-
Es necesario tener en el Path el programa vshadow.exe (290 KB's) y posteriormente
usar un script que describiré a continuacion. La unica manera de obtener ese
fichero es bajarse el SDK del Volume Shadow Copy Service:
http://www.microsoft.com/downloads/...x?FamilyID4F56E4-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,
por ejemplo a una carpeta que esté accesible en el path, por ejemplo a \windows\system32
Una vez copiado, el resto del SDK no nos hace falta ya que son herramientas para desarrolladores.
CREACION DEL SCRIPT DE COPIA
-
Con notepad por ejemplo, o con cualquier editor, creamos un fichero llamado copyshadow.cmd
con el siguiente contenido (delimitado por las lineas 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=%~dpnx0
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,
deberan 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"
Jose Manuel Tella Llop
MVP - Windows
jmtella@XXXcompuserve.com (quitar XXX)
http://www.multingles.net/jmt.htm
Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no otorga ningún derecho.
This posting is provided "AS IS" with no warranties, and confers no rights.
You assume all risk for your use.
Leer las respuestas