2013-01-13 22 views
49

Aby pobrać statystyk kanapa z serwera używam polecenia wget:Jak zmienić nazwę pobranego pliku za pomocą wget?

wget -c http://sourceforge.net/projects/sofastatistics/files/latest/download?source=dlp 

Nazwa pliku pobranego pliku w tym przypadku jest download?source=files. Jeśli dodaję do polecenia opcję --output-document, aby zmienić nazwę pliku wyjściowego na sofastatistics-latest.deb, format pobieranego pliku nie zostanie rozpoznany przez pakiet dpkg.

dpkg-deb: error: `sofastatistics-latest.deb' is not a debian format archive 

Jak poprawnie zmienić nazwę pobranego pliku z wget?

AKTUALIZACJA - 08 stycznia '15

pomocą dostarczonego łącza pobrany plik będzie zawsze * .tar.gz jeden. Aby dostać się z prawdziwym nazwiskiem wystarczy dodać opcję --content-disposition jak ten (dzięki @ 6EQUJ5!):

wget --content-disposition http://sourceforge.net/projects/sofastatistics/files/latest/download?source=dlp 

Ale potrzebne pliku * .deb, tak tutaj było dobrze za @creaktive, musiałem szukać dla linku do pliku * .deb.

Dziękuję wszystkim za odpowiedzi!

+2

Jeśli dpkg mówi, że to nie jest _really_ archiwum Debiana ... Co 'file' powiedzieć? – fge

+0

Podany adres URL to strona HTML. –

+0

Myślę, że przyjąłeś złą odpowiedź. – user83039

Odpowiedz

1

To połączenie wskazuje na przekierowanie, a nie na miejsce docelowe! Więc pobierasz HTML i zmieniasz jego nazwę na .deb. Zapełniona strona ma to na górze:

Twoje pobieranie rozpocznie się za 0 sekund ... Problemy z pobieraniem? Użyj tego direct link lub spróbuj innego mirror.

Teraz to jest ważne ogniwo (nota prefiks download): http://downloads.sourceforge.net/project/sofastatistics/sofastatistics/1.3.1/sofastats-1.3.1-1_all.deb?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fsofastatistics%2Ffiles%2Fsofastatistics%2F1.3.1%2F&ts=1358119361&use_mirror=ufpr

zdać ten URL do wget. Należy również zauważyć, że SourceForge próbuje cię przechytrzyć, korzystając z systemu operacyjnego za pośrednictwem ciągu User-Agent. Najlepszym domysłem dla "wget" wydaje się być pakiet .tar.gz. Powinieneś być bardziej konkretny, żądając pliku deb!

+0

Istnieje wersja .tar.gz dla tego oprogramowania: http://sourceforge.net/projects/sofastatistics/files/sofastatistics/1.3.1/ Upewnij się, że wybierasz link .deb! – creaktive

59

Przekierowanie standardowego wyjścia na dowolną nazwę pliku zawsze działa. Robisz to poprawnie man wget mówi, używając -O

wget http://www.kernel.org/pub/linux/kernel/README -O foo 
--2013-01-13 18:59:44-- http://www.kernel.org/pub/linux/kernel/README 
Resolving www.kernel.org... 149.20.4.69, 149.20.20.133 
Connecting to www.kernel.org|149.20.4.69|:80... connected. 
HTTP request sent, awaiting response... 200 OK 
Length: 12056 (12K) [text/plain] 
Saving to: `foo' 

100%[======================================================================================================================================>] 12,056  --.-K/s in 0.003s 

2013-01-13 18:59:45 (4.39 MB/s) - `foo' saved [12056/12056] 

Rzeczywiście, trzeba być coraz HTML w pliku (zwykle można sprawdzić za pomocą man pliku).

[EDIT]

W przypadku klienta odbiera 302 Znaleziony (można to sprawdzić z curl -v URL).

Poniższy curl załatwia sprawę przez poszanowaniem 3xx:

$ curl -L http://sourceforge.net/projects/sofastatistics/files/latest/download?source=files -o foo.deb 
    % Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
    0 463 0  0 0  0  0  0 --:--:-- 0:00:01 --:--:--  0 
    0  0 0  0 0  0  0  0 --:--:-- 0:00:02 --:--:--  0 
100 2035k 100 2035k 0  0 390k  0 0:00:05 0:00:05 --:--:-- 1541k 
$ file foo.deb 
foo.deb: gzip compressed data, was "sofastats-1.3.1.tar", last modified: Thu Jan 10 00:30:44 2013, max compression 

Nie powinno być podobna opcja dla wget tolerować przekierowań HTTP.

14

Jeśli było to samo pobieranie z poziomu przeglądarki internetowej, a zauważysz przeglądarka faktycznie prawidłowo nazywania pliku, można użyć opcji --content-disposition dać wget ten sam problem:

wget --content-disposition http://sourceforge.net/projects/sofastatistics/files/latest/download?source=dlp 

Mój Debian raporty strona człowiek to jako „eksperymentalny” cecha, ale nie mogę sobie przypomnieć, że nie działa dla mnie:

 --content-disposition 
      If this is set to on, experimental (not fully-functional) support for "Content-Disposition" headers is enabled. This can currently result in extra round-trips to the server 
      for a "HEAD" request, and is known to suffer from a few bugs, which is why it is not currently enabled by default. 

      This option is useful for some file-downloading CGI programs that use "Content-Disposition" headers to describe what the name of a downloaded file should be.