Я использую wget для зеркалирования некоторых файлов с одного сервера на другой. Я использую следующую команду:
wget -x -N -i http://domain.com/filelist.txt
-x = Потому что я хочу сохранить структуру каталогов
-N = отметка времени, чтобы получать только новые файлы
-i = Чтобы загрузить список файлов из внешнего файла, по одному в каждой строке.
Маленькие файлы, такие как один, который я тестирую, большой размер - 326 КБ.
Но другой, который составляет 5 ГБ, загружает только 203 МБ, а затем останавливается (это всегда 203 МБ плюс-минус несколько килобайт)
Показанное сообщение об ошибке:
Невозможно записать в âpath / 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) [приложение / 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
Вы получите эту ошибку, если у вас закончится место на диске. запустите df, и вы увидите, находится ли каталог, в который вы пишете, на 100%
Это проблема с длинным URL. Я тоже с этим столкнулся. Итак, я использовал bit.ly и сократил URL-адрес. Работает как шарм!
Я только что добавил -
к 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
Я получал ту же ошибку в этой команде:
sudo wget -O - https://nightly.odoo.com/odoo.key | apt-key add -
проблема заключалась в sudo для второй команды, и я решил ее:
sudo su
Если он начинает сохранять большой файл и записывает из него 203 МБ, я подозреваю, что у вас либо полная файловая система на принимающей стороне, либо время ожидания сетевого подключения истекает.
Вы можете использовать df -h на принимающем сервере, чтобы узнать, заполнена ли файловая система
Ознакомьтесь с этим ответом для проблем с тайм-аутом с wget:
https://stackoverflow.com/questions/2291524/does-wget-timeout
Кроме того, повторите попытку передачи, которая не удалась, и опустите параметр -N timestamp
Также запустите ulimit -a, чтобы узнать, есть ли ограничение на размер файла на принимающем сервере.
Наконец разобрался, и это была проблема с местом. Это проблема с облачным сервером 1 и 1, подробнее об этом здесь: http://www.mojowill.com/geek/1and1-dynamic-cloud-server-disk-allocation/
Я делал что-то подобное:
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
Альт! Похоже, что ?
была проблема, но хорошей практикой было бы удалить все специальные символы из имен файлов, представьте, что &
будет делать, если не сбежал.