wget починає завантажувати, потім зупиняє "не можу записати"


13

Я використовую wget для дзеркального відображення деяких файлів з одного сервера на інший. Я використовую таку команду:

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

-x = Тому що я хочу зберегти структуру каталогу

-N = мітка часу, щоб отримати лише нові файли

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

Невеликі файли, такі як один, який я тестую, є великим завантаженням 326 Кбіт.

Але інший, що становить 5 Гб, завантажує лише 203 Мб, а потім зупиняється (він завжди дає 203 Мбайт або займе кілька кілобайт)

Повідомлення про помилку:

Не вдається записати на шлях / в / файл.zipâ

(Я не впевнений, чому існують дивні персонажі до і після. Я використовую Putty в Windows, і це може чи не може мати щось спільне з цим, тому я залишив їх. Думаю, що не.)

Повна відповідь така: (Я замінив шляхи, ip та доменне ім’я)

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

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

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

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

Не вдається записати на âdomain.com / path / to / file.zipâ

Здається, це не має ніякого значення, якщо каталог маршрутів вже існує або створений на ходу.

Хтось має уявлення, чому він зупиняється і як я можу це виправити?

Будь-яка допомога з найцікавішим.

EDIT: Я також спробував просто виконати wget, не вводячи файл і перейменувавши файл. Цього разу він завантажує трохи більше 3 Гб, а потім дає те саме, що не може написати помилку.

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

Чи є на вашому шляху якісь особливі символи?
JMeterX

Чи працює він, як очікувалося, якщо ви введете "cd / tmp &&" перед командою?

Ваш диск повний?
Дженні Д

Диск, безумовно, не повний і немає спеціальних символів. Незважаючи на те, що довжина шляху становить 87 символів, деякі Googling показали деякі проблеми з довгими іменами (хоча ім'я файлу всього 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

Не забувайте також `-` для дьогтю :).
Shital Shah

0

Якщо він починає зберігати великий файл і записує на нього 203 МБ, я підозрюю, що у вас є повна файлова система на кінці прийому, або мережеве з'єднання закінчується.

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

Ознайомтеся з цією відповіддю на питання про час очікування за допомогою wget:

/programming/2291524/does-wget-timeout

Також повторіть спробу передачі, яка не вдалася, і пропустіть опцію -N часової позначки

Також запустіть ulimit -a, щоб побачити, чи є обмеження розміру файлу на приймальному сервері


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

Чи мають файли, які йому вдалося завантажити, у своїх іменах БУДЬ-які смішні символи?
Незадоволений користувач

Ні, ніяких дивних символів взагалі немає, якщо крапка не є дивним символом, наприклад "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

Віола! Схоже, це ?була проблема, але хорошою практикою було б видалити всі спеціальні символи з імен файлів, уявіть, що &буде робити, якщо не уникнути.


0

У цій команді я отримував таку ж помилку:

sudo wget -O - https://nightly.odoo.com/odoo.key | apt-key add -

Проблема була sudo для другої команди, і я вирішую її за допомогою:

sudo su
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.