【问题标题】:Default file transfer mode in SCPSCP 中的默认文件传输模式
【发布时间】:2023-04-06 04:41:01
【问题描述】:

我想知道使用 SCP 传输文件时使用的默认模式是什么(ASCII 或二进制,如 FTP)。

SCP中有文件模式的概念吗?它是如何工作的?

【问题讨论】:

    标签: scp


    【解决方案1】:

    FTP中的文件传输方式是用来解决不同操作系统行尾不同的问题。这个想法是,如果将文本文件从 Unix 机器传输到 Windows 机器,则行尾必须固定,这意味着文件中的任何地方都必须用 CR LF 替换 LF。向另一个方向传输文件时必须进行反向操作。

    但是,如果您要传输二进制文件,则希望文件保持原样,因为二进制文件中的任何 LF 实际上都不是行尾。因此,FTP引入了ASCII模式和Binary模式。

    这仍然是一个有问题的解决方案,特别是因为默认模式是 ASCII 模式,所以如果您忘记切换模式,您可能会破坏您的二进制文件并且它们将无法工作。不同的模式被认为比它们解决的问题造成的麻烦更多。

    因此,SCP 根本不提供此功能,并且始终保持文件原样。用户可以使用dos2unixunix2dos 等工具来修复行尾。

    本质上,所有文件都以“二进制”模式传输,这意味着行尾永远不会改变。

    【讨论】:

      【解决方案2】:

      据我所知,scp 没有模式。 有关详细信息,请参阅此 man 页面

      【讨论】:

        【解决方案3】:

        我想知道使用 SCP 传输文件时使用的默认模式是什么(ASCII 或二进制,如 FTP)。

        不幸的是,根据我的经验,这在一定程度上取决于 scp 在您运行的操作系统上的实现。例如,尽管 linux scp 似乎没有对文件进行任何更改——即 EOL 字符不会在 Windows 和 linux 之间转换,但在 z/OS (sic) 下并非如此。在 IBM 大型机上,所有被 scp-ed 的文件似乎都由 scp 应用程序本身从 ASCII 转换为 EBCDIC 字符编码。

        但是,默认情况下,sftp 似乎 进行字符转换,因此文件以其本机 ASCII 形式出现。

        【讨论】:

          猜你喜欢
          • 2017-04-06
          • 2013-12-15
          • 2014-07-30
          • 2012-04-05
          • 1970-01-01
          • 2016-09-07
          • 2015-07-30
          • 2013-10-12
          • 2016-11-22
          相关资源
          最近更新 更多