我想使用 SFTP 命令将文件从大型机服务器下载到 Linux 机器,并希望保留 EOL。实际文件似乎没有 EOL 字符,而 SFTP 进程在将文件下载到 Linux 服务器时会添加 EOL 字符。
是否有使用 SFTP 命令以二进制模式下载文件的选项?
我尝试使用 FTP 和 SFTP 从主机服务器下载数据。二进制模式的 FTP 保留原始文件的实际内容而不进行任何修改,而 ASCII 模式的 FTP 和 SFTP 命令则通过添加 EOL 和其他特殊字符来修改文件的内容。
我使用以下 SFTP 命令从大型机服务器下载文件:
[[email protected]: /var/fedex/srs/rcd/data/Dev/serial/Src/Private/src_intl_rating/main/ABC ]$ sftp [email protected]
* * * * * * * * * * * * * * * * * * * * * * * * * * *
* NOTE: YOU ARE CONNECTING VIA IBM'S SSH PORTED *
* TOOLS. *
* DEV2. *
* THIS IS IN TEST MODE AND MAY NOT FUNCTION *
* AS EXPECTED. *
* * * * * * * * * * * * * * * * * * * * * * * * * * *
[email protected]'s password:
Connected to XXX.XXX.XXX.com.
sftp> binary
Invalid command.
sftp> get //SYS2542.RTSB.RCD130.OUT.FEAB091
Fetching //SYS2542.RTSB.RCD130.OUT.FEAB091 to SYS2542.RTSB.RCD130.OUT.FEAB091
//SYS2542.RTSB.RCD130.OUT.FEAB091 99% 2620KB 2.0MB/s 00:00 ETA
sftp> bye
[[email protected]: /var/fedex/srs/rcd/data/Dev/serial/Src/Private/src_intl_rating/main/ABC ]$ ls -ltr
total 22360
-rw-r--r-- 1 ABC rcd 2682504 Jul 26 03:49 FTP.SYS2542.RTSB.RCD130.OUT.FEAB091.ASCII
-rw-r--r-- 1 ABC rcd 2680128 Jul 26 03:50 FTP.SYS2542.RTSB.RCD130.OUT.FEAB091.BINARY
-rw-r--r-- 1 ABC rcd 2682504 Jul 26 15:21 SYS2542.RTSB.RCD130.OUT.FEAB091
[[email protected]: /var/fedex/srs/rcd/data/Dev/serial/Src/Private/src_intl_rating/main/ABC ]$ mv SYS2542.RTSB.RCD130.OUT.FEAB091 SFTP.SYS2542.RTSB.RCD130.OUT.FEAB091
[[email protected]: /var/fedex/srs/rcd/data/Dev/serial/Src/Private/src_intl_rating/main/ABC ]$ ls -ltr
total 22360
-rw-r--r-- 1 ABC rcd 2682504 Jul 26 03:49 FTP.SYS2542.RTSB.RCD130.OUT.FEAB091.ASCII
-rw-r--r-- 1 ABC rcd 2680128 Jul 26 03:50 FTP.SYS2542.RTSB.RCD130.OUT.FEAB091.BINARY
-rw-r--r-- 1 ABC rcd 2682504 Jul 26 15:21 SFTP.SYS2542.RTSB.RCD130.OUT.FEAB091
[[email protected]: /var/fedex/srs/rcd/data/Dev/serial/Src/Private/src_intl_rating/main/ABC ]$
答案1
OpenSSH 的 z/OS 端口包含在z/OS 2.2,操作系统 2.3, 和z/OS 2.4(GA 30-Sep-2019)提供ascii
和binary
命令。有一条注释...
ascii 子命令仅对 UNIX 平台之间的文件传输有效。它对 Windows 和 UNIX 平台之间的文件传输无效。
...关于命令使用的限制ascii
。另外,binary
被记录为默认值。
您可能正在使用不支持该binary
命令的旧 OpenSSH 端口,因为我从您的会话日志中看到您在使用该命令时会出错。我不知道该binary
命令是何时引入的,也许它一直存在于 z/OS 端口中。
你也可能正在使用Dovetailed Technologies Co:Z sftp 服务器,使用不同的命令集. 测试此操作的一种方法是ls /+
在 sftp 会话期间发出命令。
您要查找的选项是mode
,默认值为二进制。但管理员可以更改默认值。如果默认值为文本,而您希望将其设为二进制,则可以ls /+mode=binary
在 sftp 会话期间发出命令来更改它。