Загрузите файлы и создайте ту же файловую структуру, что и у источника

Загрузите файлы и создайте ту же файловую структуру, что и у источника

У меня есть файл конфигурации, который содержит список 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/

Я обнаружил, что могу загрузить все URL-адреса в файл с помощью «wget -i», но как мне создать соответствующую структуру каталогов с помощью этого?

решение1

От man wget:

-x, --force-directories:

[...]

создать иерархию каталогов, даже если в противном случае она не была бы создана. Например, wget -xhttp://fly.srk.fer.hr/robots.txtсохранит загруженный файл в fly.srk.fer.hr/robots.txt.

решение2

Чтобы получить нужную вам структуру, я бы посоветовал использовать -nH и -x.

Это приведет к удалению имени хоста, а также созданию ожидаемой структуры каталогов.

например

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

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

Из страницы руководства:

-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...

Связанный контент