Ejemplos Robocopy

Ejemplo Robocopy 1

Copiar la estructura de carpetas recursivamente, sin los archivos que pueda haber, sólo las carpetas vacías:
·El parámetro /XF * excluye todos archivos
·El parámetro /E copia subdirectorios
·El parámetro /Z indica que es modo reiniciable, es caso de pérdida de conexión continúa donde estaba
Origen d:
Destino f:

> robocopy d:\CarpetaA\ f:\CarpetaANoFiles\ /E /Z /XF *	

Si además queremos generar un log añadimos el parámetro /LOG:nombreArchivoLog.txt:

> robocopy d:\CarpetaA\ f:\CarpetaANoFiles\ /E /Z /XF * /LOG:EstructuraCarpetasLog.txt





Ejemplo Robocopy 2

Sincronizar dos carpetas. Los archivos en destino se eliminan si en el origen ya no existen:
·El parámetro /COPY:DT copia el data y el timestamps, exluye atributos que en ocasiones nos pueden crear problemas.
·El parámetro /MIR elimina los ficheros en destino que ya no existen en el origen
·El parámetro /XO excluye de copiar los ficheros mas antiguos
·El parámetro /TEE muestra el proceso en pantalla
Origen d:
Destino f:

> robocopy d:\CarpetaA\ f:\CarpetaACopia\ /COPY:DT /MIR /XO /TEE 

Si queremos generar un archivo de log añadimos el parámetro /LOG+:nombreArchivoLog.txt
(LOG genera un archivo de log nuevo cada vez, LOG+ añade a archivo log si ya existe)

> robocopy d:\CarpetaA\ f:\CarpetaACopia\ /COPY:DT /MIR /XO /TEE /LOG+:sincrolog.txt 

Si no queremos que muestre el porcentage (genera logs muy grandes) añadimos parámetro /NP

> robocopy d:\CarpetaA\ f:\CarpetaACopia\ /COPY:DT /MIR /XO /TEE /LOG+:sincrolog.txt /NP 





Ejemplo Robocopy 3

Sincronizar dos carpetas. Exluymos de la sincornización unas carpetas determinadas.
Los archivos en destino se eliminan si en el origen ya no existen:
·El parámetro /COPY:DT copia el data y el timestamps, exluye atributos que en ocasiones nos pueden crear problemas.
·El parámetro /MIR elimina los ficheros en destino que ya no existen en el origen
·El parámetro /XO excluye de copiar los ficheros mas antiguos
·El parámetro /TEE muestra el proceso en pantalla
·El parámetro /XD dirs excluye las carpetas indicadas
Origen C:\CarpetaOrigen
Destino C:\CarpetaDestino
En la carpeta C:\CarpetaOrigen hay las siguiente esturctura:

> dir C:\CarpetaOrigen\
 El volumen de la unidad C es OS
 El número de serie del volumen es: DDB08-A03

 Directorio de C:\CarpetaOrigen

07/07/2014  13:08    <DIR>          .
07/07/2014  13:08    <DIR>          ..
07/07/2014  13:09    <DIR>          Sub1
07/07/2014  13:09    <DIR>          Sub2
07/07/2014  13:09    <DIR>          Sub3
07/07/2014  13:09    <DIR>          Sub4
               0 archivos              0 bytes
               6 dirs  64.534.093.504 bytes libres

Queremos sincronizar la carpeta C:\CarpetaOrigen\ pero excluyendo la carpeta C:\CarpetaOrigen\Sub3\

> robocopy c:\CarpetaOrigen\ c:\CarpetaDestino\ /COPY:DT /MIR /XO /TEE /XD C:\CarpetaOrigen\Sub3\

Resultado: 1 directorio omitido

------------------------------------------------------------------------------

               Total   Copiado   OmitidoNo coincidencia     ERROR    Extras
Directorios:      85        84         1         0         0         0
 Archivos:      1016      1016         0         0         0         0
    Bytes:   11.95 m   11.95 m         0         0         0         0
    Veces:   0:00:07   0:00:06                       0:00:00   0:00:01


Velocidad:             1963152 Bytes/s
Velocidad:             112.332 Megabytes/min

Finalizado: Mon Jul 06 19:28:29 2014

Como resultado la estruturca de la carpeta C:\CarpetaDestino\ es la siguiente:

> dir C:\CarpetaDestino\
 El volumen de la unidad C es OS
 El número de serie del volumen es: DDB08-A03

 Directorio de C:\CarpetaDestino

07/07/2014  13:28    <DIR>          .
07/07/2014  13:28    <DIR>          ..
07/07/2014  13:28    <DIR>          Sub1
07/07/2014  13:28    <DIR>          Sub2
07/07/2014  13:28    <DIR>          Sub4
               0 archivos              0 bytes
               5 dirs  64.534.468.992 bytes libres

Si queremos excluir mas carpetas la vamos enumerando. Por ejemplo si queremos excluir las subcarpetas Sub3 y Sub4

> robocopy c:\CarpetaOrigen\ c:\CarpetaDestino\ /COPY:DT /MIR /XO /TEE /XD C:\CarpetaOrigen\Sub3\ C:\CarpetaOrigen\Sub4\





Si el post te ha ayudado a salir de un marrón, te ha servido pá lo que sea o simplemente te ha gustado y quieres colaborar puedes pinchar en los anuncios 😉

13 thoughts on “Ejemplos Robocopy

    • A m me pasa lo mismo, creo que en Windows Server 2012 R2 no funciona correctamente el robocopy

  1. Buen día

    Estoy buscando una manera de hacer lo siguiente:

    Situacion:
    Tengo un servidor de archivos lo llamaré “A” los usuarios suben sus datos a este lugar, en “B” es un respaldo incremental que se ha realizado desde hace mucho tiempo por lo tanto hay archivos viejos que ya no son necesarios.

    Necesidad:
    Se requiere un script que realize lo siguiente:

    Compare ambos lados A y B, si los archivos que estan en “A” (servidor de archivos) estan en el lugar “B” (respaldo) no haga nada, pero si NO estan (Probablemente han sido borrado por los usuarios ) que los envie al lugar “C” (otra unidad). La finalidad de enviarlos a otra unidad es para almacenar los archivos viejos por un tiempo y mantener lo que le importa al usuario.

    Gracias por sus atenciones.

    • Buenas Miguel,
      Entiendo la situación, pero creo que sólo con el comando robocopy no se puede hacer. Deberías crear un batch file con varios comandos.

      Un saludo.

  2. Tengo varios archivos dentro de un arbol de directorios con una extensión específica que quiero copiar en un solo directorio. Algo como esto:

    raiz
    dir1
    dir2
    archivo1.txt
    archivo2.txt
    dir3
    dir4
    archivo3.txt
    dir5

    Y quiero copiar los archivos txt en dir5, de tal forma que después de la copia quedé así:

    raiz
    dir1
    dir2
    archivo1.txt
    archivo2.txt
    dir3
    dir4
    archivo3.txt
    dir5
    archivo1.txt
    archivo2.txt
    archivo3.txt

    Es decir, los subdirectorios (la estructura en si) no se copia, solo el contenido. ¿Se puede hacer con robocopy? ¿como quedaría el comando?

    • Hola Carlos,

      Con robocopy lo veo difícil, creo que en este caso sería mucho mejor y más rápido hacerlo con el comando forfiles. Sería así:

      > forfiles /s /p “c:\CarpetaRaiz” /m *.txt /C “cmd /c copy @file c:\CarpetaRaiz\dir5”

      Un saludo.

      • Hola Admin, curioso el forfiles, creo que se podría hacer algo que llevo tiempo buscando pero no llego a conseguir, te explico el caso a ver si me puede ayudar.
        Tengo una estructura de carpetas donde se ha guardado durante mucho tiempo diferentes archivos y carpetas detro de una principal, tipo:
        \1
        \2
        \…
        \1\archivos
        \1\directorios\archivos
        \2\archivos
        \2\directorios\archivos

        Al no haber una organización con el tiempo hay un gran desorden y la intención es mover todo a una carpeta old dentro de su carpeta principal para luego crear una estructura de directorios que permita mantener el orden a partir de ahí.
        Abría que mover todo el contenido de todas las carpetas principales una a una a una subcarpeta old, tipo:
        \1\old\archivos
        \1\old\directorios
        \2\old\archivos
        \2\old\directorios

        Una vez guardado todo lo existente en subcarpetas se crearía una nueva estructura de directorios IMG, DOC, LIST, INF…
        \1\IMG
        \1\DOC
        \1\LIST
        \1\INF
        \1\old\archivos
        \1\old\directorios
        \2\IMG
        \2\DOC
        \2\LIST
        \2\INF
        \2\old\archivos
        \2\old\directorios

        Así poder almacenar cada cosa en su sitio y que el tiempo no genere caos.
        Lo he intentado de varias maneras pero la recursividad hace cosas un poco raras 🙂
        Gracias de antemano

        • Bat que casi lo soluciona de todo, pues si hay directorios dentro del primer nivel no los mueve, pero si para crear la carpeta y mover los ficheros, por suerte tengo pocos con directorios, por que ya sería demasiado complicado.

          En un bat:

          REM Para meter lo antiguo dentro de una carpeta OLD
          FOR /d %%A IN (D:\RUTA\*) DO mkdir %%A\OLD & move %%A\*.* %%A\OLD\

          REM Para crear nueva estructura de carpetas
          FOR /d %%A IN (D:\PN\*) DO mkdir %%A\IMG & mkdir %%A\DOC & mkdir %%A\LIST & mkdir %%A\INF

          También probé con robocopy a mover todo lo que no tenia acceso en años y eso era el old, dejando solo los archivos que realmente se usan, a falta de organizar los que si se usan en la nueva estructura de carpetas.

          😀

          Gracias por el forfiles me inspiró y me quedé con ganas de saber más de el, para la próxima…

  3. Muchas gracias por el post me ha servido de mucha ayuda.

    Quería preguntar si hacer esto es posible con robocopy.
    La idea es hacer una copia completa inicial, y luego incrementales diarias, pero me gustaría que cada incremental se guardará en una carpeta distinta (si hicera falta la renombraría yo a diario antes de realizar la siguiente incremental), pero solo con los archivos creados o modificados, no con todo, ya que serían 80gb diarios que ocupa la completa y es mucho espacio.

    De forma que si por ejemplo tenemos un word que todos los días modificamos, que pudiera recuperarlo del día que quisiera, porque la copia incremental me lo fuera copiando cada día en una carpeta por ejemplo con el día de la copia, no que la incremental del día 3, modifique la incremental del día 2.

    No se si me he explicado, más o menos.

    Gracias,
    Juan

  4. Completo la pregunta, porque viendo otro foro he encontrado que Cobian hace lo que necesitaría yo, y así queda mejor explicado, la pregunta sería sí robocopy hace esto.

    cada backup diferencial o incremental, crea una carpeta nueva con la fecha del backup y dentro de ella la estructura de carpetas con los ficheros nuevos o modificados desde el último backup completo o desde el último backup (dependiendo de si es diferencial o incremental).

    Esto es lo que necesitaría yo para poder volver a versiones anteriores de documentos modificados.

    Gracias,
    Juan

Leave a Reply

Your email address will not be published. Required fields are marked *