Подтвердить что ты не робот

Как переименовать загруженный файл с помощью wget?

Чтобы загрузить статистику SOFA с сервера, я использую команду wget:

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

В этом случае имя файла загруженного файла составляет download?source=files. Если я добавлю параметр --output-document в команду, чтобы переименовать выходной файл в sofastatistics-latest.deb, формат загруженного файла не будет распознан пакетом dpkg.

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

Как правильно переименовать загруженный файл с помощью wget?

ОБНОВЛЕНИЕ - Январь 08 '15

С предоставленной ссылкой загруженный файл всегда будет *.tar.gz. Чтобы получить его с реальным именем, просто добавьте параметр --content-disposition как это (спасибо @6EQUJ5!):

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

Но мне нужен файл *.deb, поэтому здесь было правильно @creaktive, мне пришлось искать ссылку в файле *.deb.

Спасибо всем за ответы!

4b9b3361

Ответ 1

Всегда работает перенаправление стандартного вывода на произвольное имя файла. Вы делаете это правильно, как говорит человек wget, используя -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]

В самом деле, вы должны получать HTML-код в своем файле (обычно его можно проверить с помощью файла man).

[EDIT]

В вашем случае клиент получает 302 Найдено (вы можете проверить его с помощью curl -v URL).

Следующий скручивание делает трюк с учетом 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

Для wget должна быть аналогичная опция для переноса перенаправления HTTP.

Ответ 2

Если вы должны сделать одну и ту же загрузку из веб-браузера, и заметите, что браузер действительно правильно именовал файл, вы можете использовать параметр --content-disposition, чтобы дать wget такое же поведение:

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

Моя справочная страница Debian сообщает об этом как о "экспериментальной" функции, но я не могу вспомнить, что она не работает для меня:

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

Ответ 3

Эта ссылка указывает на перенаправитель, а не на конечный пункт назначения! Таким образом, вы загружаете HTML и переименовываете его в .deb. Захламленная страница имеет это в верхней части:

Ваша загрузка начнется через 0 секунд... Проблемы с загрузкой? Используйте прямую ссылку или попробуйте другой mirror.

Теперь это действительная ссылка (обратите внимание на префикс 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

Передайте этот URL-адрес wget. Также обратите внимание, что SourceForge пытается перехитрить вас, приглашая операционную систему через строку User-Agent. Лучшее предположение для "wget" похоже на пакет .tar.gz. Итак, вы должны быть более конкретными, запрашивая файл deb!