個々のファイルへのリンクを含む約 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 が成功した場合にのみアーカイブを解凍します。