FTP не загружает последние 4 байта - PullRequest
1 голос
/ 12 января 2009

У меня есть скрипт bash для загрузки некоторых файлов на мой веб-сервер. Проблема в том, что, похоже, предполагается, что когда они попадают на веб-сервер, им не хватает последних 4 КБ файла.

На моем компьютере файл указан как 8 КБ (округлен в большую сторону, потому что блоки имеют размер 4 КБ), но загружено только 4 КБ.

Вот забавная / запутанная часть, она влияет только на последний загруженный файл, как если бы он закрывал сессию раньше.

Это известная проблема? На странице руководства ничего нет, что я мог видеть.

Ниже приведена копия скрипта (минус данные для входа, конечно):

ftp -in <ftp.host> <<EOF
quote USER <username>
quote PASS <password>

binary

put file1.xml
put file2.xml
put file3.xml
put file4.xml
put file5.xml
put file6.xml
put file7.xml
put file8.xml
put file9.xml
put file0.xml
quit
EOF

Ссылка на один из файлов примеров: http://woarl.com/xml/f8d9b3b981a356efc1ecbb705b369c9e.xml

Ответы [ 3 ]

3 голосов
/ 12 января 2009

Последняя команда put, вероятно, все еще передает данные (через пассивное соединение), когда клиент выходит. BYE - это просто псевдоним для выхода, так что это не поможет, но, возможно, вы можете попробовать добавить какую-то другую команду между положением и выходом, например, ls.

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

2 голосов
/ 12 января 2009

Конечно, не то, что вы спрашиваете, но для такого рода вещей мне нравится устанавливать утилиты ncftp. Это включает в себя ncftpput и ncftpbatch для пакетирования нескольких команд ftp и их выполнения.

0 голосов
/ 12 января 2009

Похоже, ваша FTP-программа читает «quit» сразу после запуска «put», но перед тем, как дать ей закончить.

Возможно, вы хотите найти другую команду, отличную от quit, которая ожидает завершения загрузки. Возможно, "до свидания" или что-то подобное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...