sábado, 22 de mayo de 2010

xcopy no funciona ? robocopy es la solución !

Por un buen tiempo estuve confiando los respaldos de mis archivos al comando "xcopy" de Windows XP (gran equivocación!).

Mi solución de respaldo consiste en un NAS iOMEGA "Home Media - Network Hard Drive" de 1TB, el cual tengo conectado en mi LAN (y dicho sea de paso, funciona de maravillas para respaldos y como repositorio de películas). Desde mi PC monto el disco del NAS como una unidad de red X:.

Tenía un script (un .bat), que hacía uso del comando xcopy para respaldar todos los archivos y carpetas modificadas del directorio de mis documentos, y para eso usé la opción /M del xcopy, que sólo copia los archivos que tienen el atributo "A" activado (luego de la copia, el xcopy desactiva dicho atributo del archivo).

Todo parecía funcionar de maravillas, hasta que un día necesité recuperar un archivo y no lo encontré en mi backup!! Qué pasó? Pues sucede que xcopy tiene problemas con los paths de archivo demasiado extensos, y cuando se encuentra con un caso así, el archivo simplemente no se copia!! Sin duda fui demasiado confiado, ya que tendría que haber revisado los logs que arrojaban mis copias, y allí tal vez me hubiera dado cuenta antes del problema.

Me puse a buscar alguna alternativa a xcopy, alguna solución confiable pero simple de usar, y que no requiriera de una instalación y/o configuración muy aparatosas.

Así fue que di con el comando "robocopy", provisto por MicroSoft en su resource kit. Robocopy sin duda era la solución confiable y sencilla que estaba buscando. Para que tengan una idea de las ventajas de este comando, copio a continuación las características que se publican muy claramente en Wikipedia:

---------------
# Puede tolerar cortes de red y continuar la copia por donde la había dejado (los ficheros incompletos se marcan con la fecha 01/01/1980 y contienen un registro de recuperación para que Robocopy sepa por dónde continuar).
# Puede copiar correctamente atributos, información del propietario, flujos alternos de datos (ADS), información de auditoría y fechas por defecto, sin la necesidad de utilizar los engorrosos parámetros de los comandos.
# Puede copiar la ACL de NTFS, (si se añade el parámetro /COPYALL), y hacer valer el "derecho de copia de seguridad" de Windows NT (/B) para que un administrador pueda copiar un directorio completo, incluyendo aquellos ficheros cuya lectura está denegada al administrador.
# Persistencia por omisión, con un número programable de reintentos automáticos si no se puede acceder a un archivo.
# Dispone de un modo "espejo", que mantiene la arborescencia sincronizada borrando archivos del destino, opcionalmente, si ya no están en el origen.
# Puede copiar grandes cantidades de ficheros que harían que con la utilidad XCOPY no se consiguiera.
# Tiene un indicador de progreso que la línea de comandos que se actualiza continuamente.
# Puede copiar archivos y carpetas con nombres largos que superen los 256 caracteres - hasta un máximo teórico de 32.000 - sin errores.
# Soporta copiado multihilo (sólo en Windows 7).
---------------

Volviendo a mi caso, simplemente instalé el comando en mi Windows XP, y modifiqué mi script de backup de la siguiente forma:

Mi vieja linea XCOPY:
xcopy "d:\MisDocumentos\*.*" "x:\athlon\MisDocumentos\" /E /C /F /M /Y /V

... pasó a ser:

robocopy /M /E /R:5 /W:10 /V /ETA d:\MisDocumentos X:\athlon\MisDocumentos

Donde:
/M cumple la misma función que en xcopy, copiando sólo los archivos con el atributo A (y luego de la copia apaga el atributo)

/E copia carpetas aunque estuvieran vacías

/R:5 es para que en caso de tener problemas con la copia de un archivo, reintente dicha copia hasta un máximo de 5 veces

/W:10 es la cantidad de segundos que robocopy deberá esperar entre cada uno de los 5 reintentos en caso de no poder copiar el archivo

/V es para obtener log detallado de lo que el comando va haciendo

/ETA es para tener una idea del tiempo estimado de finalización de la copia


Si alguna parte de tu solución de respaldos está dependiendo de xcopy, no lo dudes ni un segundo, cambiate a robocopy!

1 comentario:

Anónimo dijo...

Robocopy también tiene un número limitado de caracteres, lo mismo que xcopy, lo que si es una ventaja es que cuando lo intente x veces pase del fichero y continue con el siguiente pero con /c creo que se puede evitar.

Compartir en FaceBook

UpTweet