web-dev-qa-db-ja.com

検索+ Grep再帰検索

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

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

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

grep -v ...またはawkを使用することを考えていましたが、それをどのように実行するかはよくわかりません。

誰か助けてくれませんか?

ありがとう!

2

これはcommで行うことができます(bashプロセス置換を使用):

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

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

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

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

2
Graeme

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

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

このようにすると、最初にリストに従うだけなので、ダウンロードされたすべてのファイルがリストの次のファイルになります。したがって、最後にダウンロードしたファイルとリスト内のその位置を確認するだけで、いつでも進捗状況を確認できます。

しかし、それが機能しない場合:

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

findの出力を両方のホストのファイルにダンプしてから、2つのファイルでdiffを実行しないのはなぜですか?ファイルの数を取得するには、wcを使用してカウントできます。

0
sandyp

サーバーで利用可能なSSHアクセスがあるかどうかは質問からは明らかではありません。ある場合は、ジョブにrsyncを使用します。

0
Tero Kilkanen