1

我正在尝试将文件 FTP 到 Tandem HP/Non-Stop 环境中。记录使用 C 进程写入文件,然后使用另一个 C 进程读取。

该文件本身包含一些使用标准文本编辑器无法读取的记录。我认为这意味着要正确传输文件,我需要以二进制模式传输它。尝试以二进制模式传输会产生以下错误。

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 模式。

第二个错误是为了什么?(即“相对文件记录长度>最大记录长度”)

4

1 回答 1

0

您的帖子没有说清楚,但听起来您正在HP-NonStop FTP 到 HP-NonStop,并且您的源文件是“结构化的”。您需要注意,在 NonStop 环境中,“结构化文件”具有特定含义:该文件不同于在 *nix 或 MS-DOS 系统上找到的一种文件(在 NonStop上称为非结构化文件)。结构化文件不是字节数组,而是具有记录边界,以及潜在的其他特征,其中一些特征类似于 SQL 表的特征。

FTP 对非结构化文件正常工作,但对于结构化文件,您可能需要使用额外的参数来欺骗。(FTP NonStop 扩展是在 NonStop 的系统软件中发现的最糟糕的设计,对你来说很不幸。)基本上你需要在put命令的和参数之后使用属性,从结构化文件类型开始(即“e”,“ k”或“r”)以及可能的其他属性。这告诉 FTP 您正在传输结构化文件。您可能需要查看手册以获取正确的语法。尽管有二进制数据,但您需要为此使用“ASCII 模式”。

(“相对文件记录长度”错误可能是由于未能进行结构化文件传输。如果您的源文件是相对结构化文件,则使用文件类型“r”(代表相对)将是合适的。)

但是,如果两个系统都是 NonStop,它们通常会使用“扩展”网络(例如通过 IP)进行联网,然后复制文件比使用 FTP 更容易。您将使用普通命令解释器,只需将系统名称作为普通副本或重复命令的目标文件名的一部分。

于 2011-06-14T00:13:19.590 回答