
我想使用 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 連接埠包含在作業系統 2.2,作業系統 2.3, 和作業系統 2.4(GA 2019 年 9 月 30 日) 提供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 會話期間發出命令來變更它。