Как скрыть строки "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 есть много папок / файлов), это также раздражает время от времени сканировать журналы, чтобы увидеть, все ли работает нормально.
- Как мне остановить, чтобы "Дополнительные файлы" появлялись в журнале? (редактировать: все строки, а не только текст, так как /NC остановится)
- Как мне остановить эти глупые "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.