ファイルをダウンロードし、ソースと同じファイル構造を作成します

ファイルをダウンロードし、ソースと同じファイル構造を作成します

ダウンロードしたいURIのリストを含む設定ファイルがあります。例えば、

  http://xyz.abc.com/Dir1/Dir3/sds.exe
  http://xyz.abc.com/Dir2/Dir4/jhjs.exe
  http://xyz.abc.com/Dir1/itr.exe

構成ファイルを読み取って各 URL をコピーしますが、同時にホストと同じディレクトリ構造を作成します。たとえば、構成ファイルの最初の行では、ローカル マシンにディレクトリ構造 Dir1/Dir3 を作成し (存在しない場合)、sds.exe を .../Dir1/Dir3/ にコピーします。

「wget -i」を使用してファイル内のすべてのURLをダウンロードできることがわかったのですが、それを使用して対応するディレクトリ構造を作成するにはどうすればよいでしょうか。

答え1

からman wget

-x, --force-directories:

[...]

そうでなければ作成されないディレクトリの階層を作成します。例: wget -xhttp://fly.srk.fer.hr/robots.txtダウンロードしたファイルは fly.srk.fer.hr/robots.txt に保存されます。

答え2

求めている構造を取得するには、-x だけでなく -nH も使用することをお勧めします。

これにより、ホスト名が削除され、期待されるディレクトリ構造が作成されます。

例えば

wget -x -nH http://xyz.abc.com/Dir1/Dir3/sds.exe

- 'Dir1/Dir3/sds.exe' saved [1234]

man ページから:

-nH
--no-host-directories
   Disable generation of host-prefixed directories.  By default, invoking Wget with -r http://fly.srk.fer.hr/ will create a structure of directories beginning with fly.srk.fer.hr/.  This option disables such behavior.

-x
--force-directories
   ...create a hierarchy of directories, even if one would not have been created otherwise...

関連情報