Robocopy para mover archivos

November 1, 2019 - Reading time: 2 minutes

La situación es la siguiente: tenemos un servidor linux (raspbian) que realiza dos copias de seguridad mediante un script y cron, por un lado copia una carpeta con todo lo que tiene dentro (tamaño variable, con archivos y subcarpetas variables) y por otro hace una copia de todo el disco sobre el que está el sistema operativo en caliente, es decir, crea una imagen del disco sin extraerlo y tan solo parando los servicios indispensables.

¿La solución? Robocopy. Como define la wikipedia, Robust File Copy (Robocopy) es un comando de cmd (command-line) para replicar archivos introducido en Windows Vista y Windows Server 2008, algunas de sus características son:

  • Resumir la copia aunque haya una interrupción
  • Permite conservar las ACLs de NTFS además de los atributos, la fecha real de creación y modificación.
  • Permite copiar todo un directorio, incluso aquellos archivos a los que el administrado no tiene acceso (si se le ha denegado)
  • Modo espejo.

Estos son los que yo he utilizado (en un archivo .bat)

Para copiar una carpeta

robocopy \\ruta_de_red\carpeta E:\backup\carpeta /E /LOG:\\ruta_de_red\\www\logs\carpeta.log

El atributo /E copia el contenido de la carpeta en red hacia la ruta específicada, en este caso en el disco E:

Lo interesante de robocopy es que comparará el contenido de la carpeta origen con la carpeta destino y solo copiará aquello que haya variado desde que se realizó la operación anterior.

El atributo /LOG crea un archivo log con toda la información pertinente de la operación, en mi caso la guardo en una carpeta alojada en mi servidor web

Para hacer un espejo

robocopy \\ruta_de_red\carpeta\ E:\backup /MIR /LOG:\\ruta_de_red\\www\logs\carpeta.log

El atributo /MIR realiza una copia exacta de lo que se encuentra dentro de \carpeta\ (un espejo) y lo colocará dentro de la carpeta backups alojada en el disco E:.

About

I am a system administrator, everything is hosted in my home.
I document my projects here, sometimes I will write about other things.