Как скрыть строки "Extra File" и "100%" из вывода Robocopy?

У меня есть скрипт robocopy для резервного копирования наших репозиториев Kiln, который работает каждую ночь и выглядит примерно так:

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

В выводе есть тонна строк, которые содержат "Extra file", например:

*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

Кроме того, есть сотни строк внизу, которые не содержат ничего, кроме "100%", например:

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

В дополнение к огромному количеству файлов журналов (в репозиториях Kiln есть много папок / файлов), это также раздражает время от времени сканировать журналы, чтобы увидеть, все ли работает нормально.

  1. Как мне остановить, чтобы "Дополнительные файлы" появлялись в журнале? (редактировать: все строки, а не только текст, так как /NC остановится)
  2. Как мне остановить эти глупые "100%" строки, появляющиеся в журнале?

Я пробовал каждую комбинацию переключателей, о которой только мог подумать (текущие переключатели перечислены выше в команде), но ни один из них не скрывает их!

4 ответа

Решение

Просто заметил, что вам не хватает /NC там.

/NC: No Class - не регистрировать классы файлов.

Файлы классов... Что означает "робокопия" под измененным, одиноким и лишним?

Поэтому я бы попробовал: robocopy "$liveRepoLocation" "$cloneRepoLocation" /MIR /MT /W:3 /R:100 /NP /LOG:"$backupLogLocation\BackupKiln.txt" /NC

Редактировать 1

Виноват. Не видел, что вы уже упоминали, пытаясь /NC

Я проверял здесь. Кажется, что параметр / MIR игнорирует параметры ведения журнала. Также / MT портит это, добавляя 100%.

Единственный способ, которым я получил работу, был

D:\robocopy> источник назначения robocopy / MIR / W: 3 / R: 100 / NS /NC /NFL / NDL / NP /LOG:log.txt ".

* Это на самом деле работает с /MIR. Но вы должны указать /NFL и /NDL.* Не знаю, приемлемо ли это для вас.

Если вы попытаетесь /MT, он все равно покажет глупые 100%

Редактировать 2

Я знаю, что вопрос был о Robocopy, но я думаю, что вы должны попробовать RichCopy http://technet.microsoft.com/en-us/magazine/2009.04.utilityspotlight.aspx

Вот командная строка:

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

Он запускает графический интерфейс RichCopy и закрывается по завершении.

А вот и журнал

28/11/2012 11:35:19,0, начало копирования,

28/11/2012 11: 35: 20,0, Путь к источнику: D: \ robocopy \ source,

28/11/2012 11: 35: 20,0, Путь назначения: d: \ robocopy \ destination,

28/11/2012 11: 35: 20,0, Количество исходных файлов: 12 файлов,

28/11/2012 11: 35: 20,0, Количество скопированных файлов: 13 файлов,

28/11/2012 11: 35: 20,0, Количество очищенных файлов: 1224 файла,

28/11/2012 11: 35: 20,0, прошедшее время: 00:00:01,

28/11/2012 11: 35: 20,0, средняя производительность: 1 641 528 байт / с,

28/11/2012 11: 35: 20,0, средняя производительность: 13 файлов / с,

28/11/2012 11: 35: 20,0, Копирование завершено,D:\robocopy\source

/XX опция исключает дополнительные файлы из списка. Наоборот, эта опция указана в File Selection варианты, а не Logging, Это противоположность /X вариант логирования, наверное.

Я думаю, что это может работать:

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

Так что просто передайте вывод "find" с помощью /V для исключения строк, содержащих указанный текст "*Extra File".

Как насчет использования переключателей

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

так что у тебя есть

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"
  • двойной %% должен иметь% в строке поиска
  • 2>&1 перенаправляет поток stderr в stdout, потому что некоторые сообщения записываются в stderr, и мы хотим захватить эти строки, как переключатель /LOG.
  • 2 команды findstr с ключом /v находят все строки, которые не содержат строку поиска
  • the > "log filename" redirects the final output to your log file. If you would normally use /LOG:+ then use >> "log filename" instead

Notes: if you are using this in a powershell script, like you seem to be, you need to use findstr instead of find like you can in a.bat or.cmd file. Note the /L and /C: are not supported by find but for the find command they are not required.

Другие вопросы по тегам