Структурированные файлы FTP в двоичном режиме

Я пытаюсь отправить файл FTP в среду Tandem HP/Non-Stop. Записи записываются в файл с использованием процесса Си, а затем читаются с использованием другого процесса Си.

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

ftp> bin
200 Type set to I.
ftp> put SM11098
200 PORT command successful.
553 Error: Structured file transfer only allowed in Ascii mode,
ftp> ascii
200 Type set to A.
ftp> put SM11098
200 PORT command successful.
150 Opening data connection for SM11098 (10.220.98.237,4078d).
552 SM11098: Relative file record length > Maximum record length
ftp: 1576960 bytes sent in 4.08Seconds 386.70Kbytes/sec.

Я попытался погуглить вышеупомянутые ошибки, но ничего не подошло. Для меня структурированный файл звучит как двоичный файл, содержащий структурированные записи. Разве это не должно быть FTP в двоичном режиме? Программа FTP вынуждает меня использовать режим ASCII.

Для чего вторая ошибка? (т.е. "Относительная длина записи файла> Максимальная длина записи")

1 ответ

Решение

В вашем посте не совсем сказано, но звучит так, будто вы перешли с HP-NonStop на FTP-сервер, а ваш исходный файл "структурирован". Вы должны знать, что в среде NonStop "структурированный файл" имеет конкретное значение: файл отличается от файла одного типа, обнаруженного в системах *nix или MS-DOS (которые называются неструктурированными файлами в NonStop). Структурированные файлы не являются массивом байтов, но имеют границы записей и, возможно, другие характеристики, некоторые из которых аналогичны характеристикам таблиц SQL.

FTP работает нормально для неструктурированных файлов, но для структурированных файлов вам, вероятно, придется дурачиться с дополнительными параметрами. (Расширения FTP NonStop - это худший дизайн, найденный в системном программном обеспечении NonStop, к сожалению для вас.) В основном вам нужно использовать атрибуты после параметров и в вашем put команда, начиная со структурированного типа файла ("e", "k" или "r") и, возможно, других атрибутов. Это говорит FTP, что вы переносите структурированный файл. Возможно, вам придется проверить руководство, чтобы получить правильный синтаксис. Для этого вам нужно будет использовать "режим ASCII", несмотря на наличие двоичных данных.

(Ошибка "Относительная длина записи файла", вероятно, связана с невозможностью передачи структурированного файла. Использование типа файла "r" (что означает "Относительный") будет целесообразным, если исходный файл является относительным структурированным файлом.)

Однако, если обе системы являются NonStop, они, как правило, объединяются в сеть с использованием сети "Expand" (например, через IP), и тогда копирование файла проще, чем с использованием FTP. Вы бы использовали обычный интерпретатор команд и просто указали бы системное имя как часть имени файла назначения обычной копии или дублирующейся команды.

Другие вопросы по тегам