web-dev-qa-db-ja.com

「余分なファイル」と「100%」の行をrobocopy出力から非表示にするにはどうすればよいですか?

夜間実行されるKilnリポジトリをバックアップするためのrobocopyスクリプトがあります。これは次のようになります。

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

出力には、次のような「追加ファイル」を含む大量の行があります。

*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%」行を停止するにはどうすればよいですか?

私は考えられるすべてのスイッチの組み合わせを試しましたが(現在のスイッチはコマンドの上記にリストされています)、どちらもこれらを非表示にしていないようです!

18
Danny Tuppeny

そこに/ NCがないことに気づきました。

/ NC:クラスなし-ファイルクラスをログに記録しません。

クラスファイルは... robocopyは微調整された、孤独で余分なものとはどういう意味ですか?

だから私は試してみます: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のGUIを起動し、完了すると閉じます。

そしてここにログがあります

2012/11/28 11:35:19,0、コピー開始、

2012/11/28 11:35:20,0、ソースパス:D:\ robocopy\source、

2012/11/28 11:35:20,0、宛先パス:d:\ robocopy\destination、

2012/11/28 11:35:20,0、ソースファイル数:12ファイル、

2012/11/28 11:35:20,0、コピーされたファイル数:13ファイル、

2012/11/28 11:35:20,0、パージされたファイル数:1,224ファイル、

2012/11/28 11:35:20,0、経過時間:00:00:01、

2012/11/28 11:35:20,0、平均パフォーマンス:1,641,528バイト/秒、

2012/11/28 11:35:20,0、平均パフォーマンス:13ファイル/秒、

2012/11/28 11:35:20,0、コピー完了、D:\ robocopy\source

9
Luiz Angelo

/XXオプションを指定すると、余分なファイルがリストから除外されます。逆に、このオプションはLoggingではなくFile Selectionオプションにリストされています。 /Xロギングオプションの反対です。

5
Keith

私はこれがうまくいくと思います:

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

したがって、指定したテキスト「* Extra File」を含む行を除外するために、/ Vを使用して出力を「find」にパイプするだけです。

3

スイッチの使い方は?

 /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スイッチのようにそれらの行をキャプチャしたいためです。
  • / vスイッチを指定した2つのfindstrコマンドは、検索文字列を含まないすべての行を検索します
  • > "log filename"は、最終出力をログファイルにリダイレクトします。通常/ LOG:+を使用する場合は、>> "log filename"代わりに

注:Powershellスクリプトでこれを使用している場合は、.batまたは.cmdファイルでできるように検索するのではなく、findstrを使用する必要があります。/Lと/ C:はfindではサポートされていませんが、findコマンドでは必要ありません。

0
BeowulfNode42