Pobierz pliki i utwórz taką samą strukturę plików jak źródło


21

Mam plik konfiguracyjny, który składa się z listy identyfikatorów URI, które chcę pobrać. Na przykład,

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

Chcę odczytać plik konfiguracyjny i skopiować każdy adres URL, ale jednocześnie utworzyć tę samą strukturę katalogów co na hoście. Na przykład dla pierwszego wiersza w pliku konfiguracyjnym chcę utworzyć strukturę katalogów Dir1 / Dir3 na moim komputerze lokalnym (jeśli nie istnieje), a następnie skopiować sds.exe do ... / Dir1 / Dir3 /

Odkryłem, że mogę pobrać wszystkie adresy URL z pliku za pomocą „wget -i”, ale jak mogę utworzyć odpowiednią strukturę katalogów z tym

Odpowiedzi:


27

Od man wget:

-x, --force-katalogi:

[...]

utwórz hierarchię katalogów, nawet jeśli nie powstałby inaczej. Np. Wget -x http://fly.srk.fer.hr/robots.txt zapisze pobrany plik do fly.srk.fer.hr/robots.txt.


Dzięki za rekomendację mężczyzny. Powinienem przyzwyczaić się do pomagania sobie.
NGambit

Chris: Ale wygląda na to, że jeśli mam plik fly.srk.fer.hr/dir1/robots.txt, to wget -x tworzy katalog fly.srk.fer.hr i umieszcza w nim plik o nazwie dir1 / robots.txt. Potrzebuję tego, aby tworzyło nawet podkatalogi. tzn. zapisz plik robots.txt, aby fly.srk.fer.hr/dir1/
NGambit

@NGambit Nie można utworzyć pojedynczego pliku o nazwie dir1/robots.txtUnix.
Chris Down,

Masz rację. Plik konfiguracyjny, którego używałem, zawierał „\” zamiast „/” (ponieważ został przeanalizowany z innego pliku opartego na systemie Windows) w ścieżkach katalogów, co psuje rzeczy. Właśnie zastąpiłem „\” przez „/” i „wget -x -i nazwa pliku” działa jak urok
NGambit

2
Dodatkowa uwaga: czasami chcesz pominąć pierwsze N ​​folderów w adresie URL, a następnie dodajesz:--cut-dirs=N
tokland

16

Aby uzyskać żądaną strukturę, sugerowałbym użycie -nH oraz -x.

Spowoduje to usunięcie nazwy hosta oraz utworzenie oczekiwanej struktury katalogów.

na przykład

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

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

Ze strony podręcznika:

-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...
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.