【发布时间】:2023-04-06 04:41:01
【问题描述】:
我想知道使用 SCP 传输文件时使用的默认模式是什么(ASCII 或二进制,如 FTP)。
SCP中有文件模式的概念吗?它是如何工作的?
【问题讨论】:
标签: scp
我想知道使用 SCP 传输文件时使用的默认模式是什么(ASCII 或二进制,如 FTP)。
SCP中有文件模式的概念吗?它是如何工作的?
【问题讨论】:
标签: scp
FTP中的文件传输方式是用来解决不同操作系统行尾不同的问题。这个想法是,如果将文本文件从 Unix 机器传输到 Windows 机器,则行尾必须固定,这意味着文件中的任何地方都必须用 CR LF 替换 LF。向另一个方向传输文件时必须进行反向操作。
但是,如果您要传输二进制文件,则希望文件保持原样,因为二进制文件中的任何 LF 实际上都不是行尾。因此,FTP引入了ASCII模式和Binary模式。
这仍然是一个有问题的解决方案,特别是因为默认模式是 ASCII 模式,所以如果您忘记切换模式,您可能会破坏您的二进制文件并且它们将无法工作。不同的模式被认为比它们解决的问题造成的麻烦更多。
因此,SCP 根本不提供此功能,并且始终保持文件原样。用户可以使用dos2unix 和unix2dos 等工具来修复行尾。
本质上,所有文件都以“二进制”模式传输,这意味着行尾永远不会改变。
【讨论】:
据我所知,scp 没有模式。 有关详细信息,请参阅此 man 页面
【讨论】:
我想知道使用 SCP 传输文件时使用的默认模式是什么(ASCII 或二进制,如 FTP)。
不幸的是,根据我的经验,这在一定程度上取决于 scp 在您运行的操作系统上的实现。例如,尽管 linux scp 似乎没有对文件进行任何更改——即 EOL 字符不会在 Windows 和 linux 之间转换,但在 z/OS (sic) 下并非如此。在 IBM 大型机上,所有被 scp-ed 的文件似乎都由 scp 应用程序本身从 ASCII 转换为 EBCDIC 字符编码。
但是,默认情况下,sftp 似乎 不 进行字符转换,因此文件以其本机 ASCII 形式出现。
【讨论】: