wget начинает загрузку, затем останавливается «не могу писать»


13

Я использую wget для зеркалирования некоторых файлов с одного сервера на другой. Я использую следующую команду:

wget -x -N -i http://domain.com/filelist.txt

-x = Потому что я хочу сохранить структуру каталогов

-N = отметка времени, чтобы получить только новые файлы

-i = Чтобы загрузить список файлов из внешнего файла, по одному в каждой строке.

Небольшие файлы, такие как один, который я тестирую, это загрузка размером в 326 КБ.

Но другой, который составляет 5 ГБ, загружает только 203 МБ, а затем останавливается (это всегда 203 МБ, которые дают или принимают несколько килобайт).

Отображаемое сообщение об ошибке:

Невозможно записать в athp / to / file.zipâ

(Я не уверен, почему существуют странные символы до и после. Я использую Putty в Windows, и это может иметь или не иметь какое-то отношение к этому, поэтому я оставил их. Хотя, я полагаю, нет.).

Полный ответ выглядит следующим образом: (я заменил пути, IP и доменное имя)

--2012-08-31 12: 41: 19-- http://domain.com/filelist.txt Разрешение domain.com ... MY_IP Подключение к domain.com | MY_IP |: 80 ... подключено. HTTP-запрос отправлен, ожидание ответа ... 200 OK Длина: 161 [text / plain] Файл сервера не новее локального файла âdomain.com / filelist.txtâ

--2012-08-31 12: 41: 19-- http://domain.com/path/to/file.zip Подключение к domain.com | MY_IP |: 80 ... подключено. HTTP-запрос отправлен, ожидание ответа ... 200 OK Длина: 5502192869 (5.1G) [application / zip] Размеры не совпадают (локальный 213004288) - получение.

--2012-08-31 12: 41: 19-- http://domain.com/path/to/file.zip Подключение к domain.com | MY_IP |: 80 ... подключено. HTTP-запрос отправлен, ожидание ответа ... 200 OK Длина: 5502192869 (5.1G) [application / zip] Сохранение в: âdomain.com / path / to / file.zipâ

3% [====>
] 213 003 412 8,74 М / с в 24 с

Невозможно записать на âdomain.com / path / to / file.zipâ

Кажется, что не имеет никакого значения, если каталог пути уже существует или создается на лету.

У кого-нибудь есть идеи, почему он остановился и как я могу это исправить?

Любая помощь с самой высокой оценкой.

РЕДАКТИРОВАТЬ: Я также попытался просто сделать wget, без ввода файла и переименования файла. На этот раз он загружает чуть более 3 ГБ, а затем выдает ту же ошибку записи.

wget -x -N http://domain.com/path/to/file.zip -O files/bigfile.zip

У вас есть какие-то специальные символы на вашем пути?
JMeterX

Работает ли это так, как ожидается, если вы введете «cd / tmp &&» перед командой?

Ваш диск заполнен?
Дженни Д

Диск определенно не заполнен и специальных символов нет. Несмотря на то, что длина пути составляет 87 символов, некоторые из них показали некоторые проблемы с длинными именами (хотя имя файла составляет всего 29 символов). В tmp он тоже не работает.
Джон Меллор

@FreezeDriedPop Поскольку имя вашего файла относительно длинное, вы можете изменить его, используя такую -Oопциюwget -O test.zip http://link
JMeterX

Ответы:


7

Вы получите эту ошибку, если у вас недостаточно места на диске. запустите df, и вы увидите, находится ли каталог, в который вы пишете, на 100%


4

Это проблема с длинным URL. Я тоже с этим столкнулся. Итак, я использовал bit.ly и сократил URL. Работает как Шарм!


Вы уверены? Представляется маловероятным, что загрузка начнется и прекратится в какой-то момент, когда проблема связана с URL-адресом, который используется только в самом начале транзакции.
Феликс Франк

Да. У меня такая же проблема. Попытайся.
Намчестер

Я думаю, что проблема с Linux не может распознать длинный URL-адрес.
Намчестер

Я полагаю, вы имеете в виду оболочку? Потому что ядро ​​совершенно определенно невиновно в этом сбое. Даже для оболочки это маловероятно, но если бы это было так, загрузка снова не могла бы начаться - оболочка выдаст ошибку, прежде чем даже разорвать предполагаемый wgetпроцесс.
Феликс Фрэнк

1
Для меня это была строка запроса на URL -wget http://dltr.org/skin/frontend/lowes/default/css/custom.css?001
Дамодар Башял

1

Я просто добавил -в tarкоманду после канала после wget

я имел

wget https://example.com/path/to/file.tar.gz -O -|tar -xzf -C /path/to/file

затем изменил его на

wget https://example.com/path/to/file.tar.gz -O - | tar -xzvf - -C /path/to/file

Также не забывайте `-` для tar :).
Шиталь Шах

0

Если он начинает сохранять большой файл и записывает 203 МБ, я подозреваю, что у вас либо полная файловая система на принимающей стороне, либо истекло время ожидания сетевого подключения.

Вы можете использовать df -h на принимающем сервере, чтобы увидеть, переполнена ли файловая система

Проверьте этот ответ для вопросов тайм-аута с wget:

/programming/2291524/does-wget-timeout

Кроме того, попробуйте повторить неудачную передачу и пропустите опцию -N timestamp.

Кроме того, запустите ulimit -a, чтобы увидеть, существует ли ограничение размера файла на принимающем сервере.


Я не эксперт, но я думаю, что это работает CentOS 6. Также я не уверен, как проверить представление символов. Хотя он начинает скачивать и скачивать другие файлы меньшего размера, но я не думаю, что это похоже на проблему.
Джон Меллор

Есть ли в файлах, которые удалось загрузить, какие-нибудь забавные символы в именах?
DisgruntledUser

Нет, никаких странных символов нет, если только точка не является странным символом, например "megapack_4.11.zip". Но снова я попробовал это только с именем "bigfile.zip", и та же проблема возникает.
Джон Меллор

Возможно, только для Putty установлено другое представление, чем для UTF-8
DisgruntledUser

Да, я действительно не думаю, что это проблема, я просто упомянул об этом, когда я копировал и вставлял из Putty. Настоящая проблема, которую не может написать.
Джон Меллор


0

Я делал что-то похожее на:

wget -x -N -i http://domain.com/filelist.txt

Я получал:

--2016-12-09 07:44:23--  https://www.example.com/dir/details?abc=123&def=456
Resolving www.example.com (www.example.com)... 1.2.3.4
Connecting to www.example.com (www.example.com)|1.2.3.4|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
details?abc=123&def=456: No such file or directory

Cannot write to ‘details?abc=123&def=456’ (Success).

В моем эквивалентном файле filelist.txt у меня был такой URL:

https://www.example.com/dir/details?abc=123&def=456

Поэтому для отладки я попытался создать тот же файл, который пытался создать wget:

touch "details?abc=123&def=456"
touch: cannot touch ‘details?abc=123&def=456’: No such file or directory

Виола! Похоже, ?проблема была в этом, но хорошей практикой было бы удалить все специальные символы из имен файлов, представьте, что &будет делать, если не избежать.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.