16

У меня есть скрипт 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 ответа4

7

Просто заметил, что вам не хватает /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

4

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

2

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

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

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

0

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

 /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 находят все строки, которые не содержат строку поиска
  • > "имя файла журнала" перенаправляет окончательный вывод в ваш файл журнала. Если вы обычно используете /LOG:+, тогда используйте >> "log filename" вместо

Примечания: если вы используете это в скрипте powershell, как вы, кажется, вам нужно использовать findstr вместо find, как вы можете в файле .bat или .cmd. Обратите внимание, что /L и /C: не поддерживаются командой find, но для команды find они не требуются.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .