検索 + Grep 再帰検索

検索 + Grep 再帰検索

wgetを使用してウェブサイトをミラーリングしています。サーバーには、find /次の形式のファイル名を含むコマンドダンプがあります。

/dir1/ /dir1/page1.txt /dir1/page2.txt ...

ミラーリングは非常に大きく(100GB以上)、findローカル出力をサーバー側のダンプを含むテキストファイルと比較して、残りのファイル数を確認したいと思います。

grep -v ...orを使用しようとしていますが、awkどうすればよいかわかりません。

誰でも私を助けることができますか?

ありがとうございます!

答え1

次の方法でこれを行うことができますcomm(プロセス置換を使用)。bash

comm -13 <(find / | sort) <(sort server_dump)

これにより、サーバー固有のファイルが表示されます。ローカルシステム固有のファイルの場合:

comm -23 <(find / | sort) <(sort server_dump)

また-xdev、他のファイルシステムのファイルを比較しないように検索オプションを追加することもできます。/proc/sys

答え2

wget's再帰ダウンロードオプションを使用する必要はないと思います。すでにダウンロードする必要があるファイルのリストは次のとおりです。

wget --input-file=./path/to/your/list --base=URL

これにより、リストに最初に従うことができるため、ダウンロードしたすべてのファイルがリスト内の次のファイルになります。したがって、最後にダウンロードしたファイルとリスト内の対応する場所を確認して、いつでも進行状況を確認できます。

しかし、これがうまくいかない場合:

{ find . ; sed 's/.*/.&/' list.file ; } | 
    sort | uniq -u

答え3

find両方のホスト上のファイルに出力をダンプしてから、両方のdiffファイルに対して操作を実行するとどうなりますか?ファイル数を取得するにはcountを使用できますwc

答え4

サーバーにSSHアクセス権があるかどうかは質問からは明確ではありません。あれば、ただrsync仕事用に使います。

関連情報