Como ocultar linhas "Arquivo extra" e "100%" da saída da robocópia?


17

Eu tenho um script de robocopy para fazer backup de nossos repositórios do Kiln que são executados todas as noites, que se parece com isso:

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

Na saída, há várias linhas que contêm "arquivos extras", 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

Além disso, existem centenas de linhas na parte inferior que contêm nada além de "100%" s, como este:

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

Além de tornar os arquivos de log enormes (há muitas pastas / arquivos nos repositórios do Kiln), torna irritante verificar os logs de vez em quando para ver se tudo estava funcionando bem.

  1. Como faço para parar "Arquivos extras" que aparecem no log? (editar: as linhas inteiras, não apenas o texto como / NC irá parar)
  2. Como faço para parar essas linhas "100%" que aparecem no log?

Eu tentei todas as combinações de opções em que consigo pensar (as opções atuais estão listadas acima no comando), mas nenhuma delas parece ocultar essas opções!


De acordo com ss64.com/nt/robocopy.html, ele deve estar funcionando. Você tentou alterar a ordem dos parâmetros para espelhar a documentação? Isso seria: / L / NP / LOG: arquivo / UNILOG: arquivo / LOG +: arquivo / UNILOG +: arquivo / TS / FP / NS / NC / NFL / NDL / TEE / NJH / NJS
Luiz Angelo

Respostas:


8

Só notei que está faltando um / NC lá.

/ NC: Sem classe - não registre classes de arquivo.

Os arquivos de classe são ... O que significa robocopy com ajustes, solitários e extras?

Então, eu tentaria: robocopy "$ liveRepoLocation" "$ cloneRepoLocation" / MIR / MT / W: 3 / R: 100 / NP /LOG:"$backupLogLocation\BackupKiln.txt "/ NC

Editar 1

Foi mal. Não viu que você já havia mencionado tentar / NC

Eu testei aqui. Parece que a opção / MIR ignora as opções de log. Também / MT estraga tudo, adicionando 100%.

A única maneira de começar a trabalhar foi

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

* Ele realmente funciona com / MIR. Mas você precisa especificar / NFL e /NDL.* Não sei se isso é aceitável para você.

Se você tentar / MT, ainda mostrará os 100% bobos

Editar 2

Sei que a pergunta era sobre o Robocopy, mas acho que você deveria experimentar o RichCopy http://technet.microsoft.com/en-us/magazine/2009.04.utilityspotlight.aspx

Aqui está a linha de comando:

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

Inicia a GUI do RichCopy e fecha quando concluído.

E aqui está o log

28/11/2012 11: 35: 19,0, início da cópia,

28/11/2012 11: 35: 20,0, Caminho da fonte: D: \ robocopy \ source,

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

28/11/2012 11: 35: 20,0, contagem de arquivos de origem: 12 arquivos,

28/11/2012 11: 35: 20,0, Contagem de arquivos copiados: 13 arquivos,

28/11/2012 11: 35: 20,0, Contagem de arquivos eliminados: 1.224 arquivos,

28/11/2012 11: 35: 20,0, Tempo decorrido: 00:00:01,

28/11/2012 11: 35: 20,0, Desempenho médio: 1.641.528 bytes / s,

28/11/2012 11: 35: 20,0, desempenho médio: 13 arquivos / s,

28/11/2012 11: 35: 20,0, cópia completa, D: \ robocopy \ source


11
/ NC apenas remove a coluna "Arquivo extra", para que o texto não seja mostrado. O restante da linha ainda está incluído. Eu não quero a linha; Eu só quero o resumo :(
Danny Tuppeny

Foi mal. Não viu que você já havia mencionado isso. Eu testei aqui. Parece que a opção / MIR ignora as opções de log. Também / MT estraga tudo. A única maneira de começar a trabalhar foi "D: \ robocopy> destino de origem da robocopy / MIR / W: 3 / R: 100 / NS / NC / NFL / NDL / NP /LOG:log.txt". Se você tentar / MT, ele ainda mostrará os 100% bobos.
Luiz Angelo

11
Os 100% são a pior parte (muito mais do que arquivos extras); não percebeu que a MT estava fazendo isso, então pode remover isso se não estiver dando um grande benefício!
Danny Tuppeny

Marcando isso como correto, como é uma solução para o 100% 's, e eu não acho que há uma solução para o logging 'arquivo Extra' com / MIR :(
Danny Tuppeny

Acabei de editar minha resposta original. Basta postar um novo comentário para que você não perca.
Luiz Angelo

5

A /XXopção exclui os arquivos extras da lista. Perversamente, esta opção está listada nas File Selectionopções, não Logging. É o oposto da /Xopção de log, eu acho.


11
Eu acredito que / XX impede que você selecione os arquivos extras, e / X é apenas para registro, mas permite exibir AINDA MAIS arquivos extras! O / XX fez o truque para mim.
sonjz

11
-1, porque / XX deixa o arquivo extra no destino, em vez de excluí-lo, conforme o esperado do processo de espelhamento.
marque

3

Eu acho que isso pode funcionar:

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

Portanto, basta canalizar a saída para "encontrar" com o / V para excluir linhas que contenham o texto especificado "* Arquivo Extra".


Como excluir o% progress (contador de 0 a 100%) apenas do log (mas ainda visível no console)?
PeterCo 27/07/16

0

que tal usar os comutadores

 /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"

Então você tem

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"
  • o %% duplo é necessário para ter um% na cadeia de pesquisa
  • o 2> & 1 redireciona o fluxo stderr para o stdout porque algumas mensagens são gravadas no stderr e queremos capturar essas linhas como a opção / LOG.
  • os 2 comandos findstr com a opção / v encontram todas as linhas que não contêm a sequência de pesquisa
  • o > "log filename" redireciona a saída final para o seu arquivo de log. Se você usaria normalmente / LOG: + então usar >> "filename log" em vez

Notas: se você estiver usando isso em um script do PowerShell, como parece, precisará usar o findstr em vez de encontrar como em um arquivo .bat ou .cmd. Observe que / L e / C: não são suportados pelo find, mas para o comando find, eles não são necessários.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.