¿Cómo oculto las líneas "Archivo adicional" y "100%" de la salida de robocopy?


17

Tengo una secuencia de comandos robocopy para hacer una copia de seguridad de nuestros repositorios Kiln que se ejecuta todas las noches, que se parece a esto:

robocopy "$liveRepoLocation" "$cloneRepoLocation" /MIR /MT /W:3 /R:100 /LOG:"$backupLogLocation\BackupKiln.txt" /NFL /NDL /NP

En la salida, hay un montón de líneas que contienen "Archivos adicionales", como este:

*EXTRA File              153    E:\Kiln Backup\elasticsearch\data\elasticsearch-kiln\nodes\0\indices\kiln-2\0\index\_yxe.fdt
*EXTRA File               12    E:\Kiln Backup\elasticsearch\data\elasticsearch-kiln\nodes\0\indices\kiln-2\0\index\_yxe.fdx
*EXTRA File              128    E:\Kiln Backup\elasticsearch\data\elasticsearch-kiln\nodes\0\indices\kiln-2\0\index\_yxe.fnm
*EXTRA File              363    E:\Kiln Backup\elasticsearch\data\elasticsearch-kiln\nodes\0\indices\kiln-2\0\index\_yxe.frq
*EXTRA File               13    E:\Kiln Backup\elasticsearch\data\elasticsearch-kiln\nodes\0\indices\kiln-2\0\index\_yxe.nrm

Además, hay cientos de líneas en la parte inferior que contienen nada más que "100%", como esta:

100%  
100%  
100%  
100%  
100%  
100%  
100%  

Además de hacer que los archivos de registro sean enormes (hay muchas carpetas / archivos en los repositorios de Kiln), resulta molesto escanear los registros de vez en cuando para ver si todo funcionaba bien.

  1. ¿Cómo detengo la aparición de "Archivos adicionales" en el registro? (editar: las filas completas, no solo el texto como / NC se detendrá)
  2. ¿Cómo detengo estas tontas líneas "100%" que aparecen en el registro?

He probado todas las combinaciones de interruptores que se me ocurren (los interruptores actuales se enumeran arriba en el comando), ¡pero ninguno parece ocultarlos!


De acuerdo con ss64.com/nt/robocopy.html , debería estar funcionando. ¿Has intentado cambiar el orden de los parámetros para reflejar la documentación? Eso sería: / L / NP / LOG: archivo / UNILOG: archivo / LOG +: archivo / UNILOG +: archivo / TS / FP / NS / NC / NFL / NDL / TEE / NJH / NJS
Luiz Angelo

Respuestas:


8

Acabo de notar que te falta un / NC allí.

/ NC: Sin clase: no registrar clases de archivo.

Los archivos de clase son ... ¿Qué quiere decir robocopy con retocado, solitario y extra?

Así que intentaría: robocopy "$ liveRepoLocation" "$ cloneRepoLocation" / MIR / MT / W: 3 / R: 100 / NP /LOG:"$backupLogLocation\BackupKiln.txt "/ NC

Editar 1

Culpa mía. No vi que ya habías mencionado intentar / NC

Lo he probado aquí. Parece que la opción / MIR ignora las opciones de registro. También / MT lo estropea, agregando el 100%.

La única forma en que trabajé fue

D: \ robocopy> robocopy source destination / MIR / W: 3 / R: 100 / NS / NC / NFL / NDL / NP /LOG:log.txt ".

* Realmente funciona con / MIR. Pero debe especificar / NFL y /NDL.* No sé si eso es aceptable para usted.

Si lo intentas / MT, todavía mostrará el tonto 100%

Editar 2

Sé que la pregunta era sobre Robocopy, pero creo que deberías probar RichCopy http://technet.microsoft.com/en-us/magazine/2009.04.utilityspotlight.aspx

Aquí está la línea de comando:

richcopy "D: \ robocopy \ source" "D: \ robocopy \ destination" / P / QO / QP "D: \ robocopy \ report.log" / UE / US / UD / UPC / UFC / USC / UPR / UET

Inicia la GUI de RichCopy y se cierra cuando termina.

Y aquí está el registro.

28/11/2012 11: 35: 19,0, inicio de copia,

28/11/2012 11: 35: 20,0, Ruta de origen: D: \ robocopy \ source,

28/11/2012 11: 35: 20,0, Ruta de destino: d: \ robocopy \ destination,

28/11/2012 11: 35: 20,0, Recuento de archivos de origen: 12 archivos,

28/11/2012 11: 35: 20,0, Número de archivos copiados: 13 archivos,

28/11/2012 11: 35: 20,0, Recuento de archivos purgados: 1,224 archivos,

28/11/2012 11: 35: 20,0, Tiempo transcurrido: 00:00:01,

28/11/2012 11: 35: 20,0, Rendimiento promedio: 1,641,528 bytes / seg,

28/11/2012 11: 35: 20,0, Rendimiento promedio: 13 archivos / seg,

28/11/2012 11: 35: 20,0, Copia completa, D: \ robocopy \ source


1
/ NC simplemente elimina la columna "Archivo adicional", por lo que no se muestra el texto. El resto de la línea todavía está incluido. No quiero la línea en absoluto; Solo quiero el resumen :(
Danny Tuppeny

Culpa mía. No vi que ya lo había mencionado. He probado aquí. Parece que la opción / MIR ignora las opciones de registro. También / MT lo estropea. La única forma en que trabajé fue "D: \ robocopy> robocopy source destination / MIR / W: 3 / R: 100 / NS / NC / NFL / NDL / NP /LOG:log.txt". Si intenta / MT, todavía mostrará el 100% tonto.
Luiz Angelo

1
Los 100% son la peor parte (muchos más que archivos adicionales); no me di cuenta de que MT estaba haciendo esto, ¡así que podría eliminar eso si no está dando un gran beneficio!
Danny Tuppeny

Marcar esto como correcto ya que es una solución para el 100%, y no creo que haya una solución para el registro de "Archivo adicional" con / MIR :(
Danny Tuppeny

Acabo de editar mi respuesta original. Solo publica un nuevo comentario para que no te lo pierdas.
Luiz Angelo

5

La /XXopción excluye los archivos adicionales de la lista. Perversamente, esta opción aparece en las File Selectionopciones, no Logging. Es lo contrario de la /Xopción de registro, supongo.


1
Creo que / XX le impide seleccionar los archivos adicionales, y / X es solo para iniciar sesión, ¡pero le permite incluso MÁS archivos adicionales! El / XX hizo el truco para mí.
sonjz

1
-1, porque / XX deja el archivo adicional en el destino, en lugar de eliminarlo, como se esperaba del proceso de duplicación.
marca el

3

Creo que esto puede funcionar:

robocopy sourceDir targetDir *.* /njh /njs /ndl /np | find /v "*EXTRA File"

Así que simplemente canalice la salida a "buscar" con / V para excluir las líneas que contienen el texto especificado "* Archivo adicional".


¿Cómo excluir el% de progreso (contador de 0 a 100%) solo del registro (pero aún visible en la consola)?
PeterCo

0

¿Qué tal usar los interruptores?

 /MIR /MT /W:3 /R:100 /NFL /NDL /NP 2>&1 | findstr /v /L /C:" * EXTRA " | findstr /v /L /C:"100%%" > "log file name with or without path"

así que tienes

robocopy "$liveRepoLocation" "$cloneRepoLocation" /MIR /MT /W:3 /R:100 /NFL /NDL /NP 2>&1 | findstr /v /L /C:" * EXTRA " | findstr /v /L /C:"100%%" > "$backupLogLocation\BackupKiln.txt"
  • se requiere el doble %% para tener un% en la cadena de búsqueda
  • el 2> & 1 redirige el flujo de stderr a stdout debido a que algunos mensajes se escriben en stderr y queremos capturar esas líneas como el selector / LOG hace.
  • los 2 comandos findtr con el modificador / v encuentran todas las líneas que no contienen la cadena de búsqueda
  • el > "nombre de archivo de registro" redirige la salida final a su archivo de registro. Si normalmente usaría / LOG: +, entonces use >> "log filename" en su lugar

Notas: si está utilizando esto en una secuencia de comandos de PowerShell, como parece ser, debe usar findtr en lugar de find como puede hacerlo en un archivo .bat o .cmd. Tenga en cuenta que / L y / C: no son compatibles con find, pero para el comando find no son necesarios.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.