高度な Wget の使用

高度な Wget の使用

個々のファイルへのリンクを含む約 200 台のサーバーのリストがあります。この質問では、それらが .txt ファイルであると仮定します。すべてのファイルをダウンロードする必要がありますが、一部のサーバーには圧縮バージョンしかなく、オリジナルはありません。また、一部のサーバーには両方があり、使用される圧縮は bzip2 です。

つまり、サーバーには次のファイルが存在する可能性があります。

foo.txt.bz2
bar.txt
bar.txt.bz2

私は wget に .txt ファイルと .txt.bz2 ファイルのみをダウンロードするように指示し、各サーバーから同じファイルがダウンロードされるのを防ぐために no-clobber を使用しています。ただし、圧縮されたファイルはダウンロードされると解凍され、元のファイルは保持されますが、bz2 ファイルは保持されません。つまり、wget はローカルに圧縮バージョンがないため、すべてのサーバーから同じ bz2 ファイルをダウンロードしていることになります。

wgetにどう伝えるかないすでに解凍されたバージョンがある場合に .bz2 ファイルをダウンロードします (たとえば、foo.txt がすでに存在する場合は foo.txt.bz2 をダウンロードしません)。

ありがとう

答え1

私は次のようにコマンドを連鎖しますwget:

wget http://example.com foo.txt || wget http://example.com/foo.txt.bz2 && bzip -d foo.txt.bz2

このbzip -dコマンドは、wget が成功した場合にのみアーカイブを解凍します。

関連情報