Answers:
FTP的“二进制”传输模式逐字节地精确复制文件。简单明了。
但是,当在不同的操作系统之间放置文本文件时,这可能不是您想要的-不同的操作系统使用不同的代码表示换行符。为此存在“ ASCII”模式:它自动将所有行尾从源系统的格式转换为目标系统的格式。
不确定“自动”,但我想它看起来像是文件的扩展名或类似的内容来确定它是否是文本文件,并尝试猜测适当的模式。
您想要哪种模式取决于您对文件的确切操作...如果您只是复制文件以备份它们,则可能需要以二进制模式复制,因此当它们复制时,它们将完全相同。您以后再将它们还原到Windows服务器。如果双方都需要将它们用作文本文件(也许是跨平台程序的配置文件?),则需要使用ASCII模式来翻译它们。
编辑:据我所知,从Windows向Linux传输文件的FTP绝不应该导致换行符消失... 但是,如果以ASCII模式复制它们,然后以二进制模式将它们带回到 Windows服务器,则Linux Windows框上可能无法识别样式行尾。(记事本看不到它们;写字板将看到; YMMV与其他软件一起。)
(今天,在FTP这样的基本协议中,这种方便的操作-自动转换行尾-看起来很奇怪。但是,当FTP发明时,发送文本文件已成为一种规范,而该协议的目标之一就是这越容易。)
Windows和Unix在行尾具有不同的字节(Windows为0D 0A(十六进制),Unix为0A)。在二进制模式下传输文件时,文件的字节将从一台计算机上保持不变。这是二进制格式(例如ZIP文件,图像等)所必需的,但可能导致文本文件出现问题:例如Windows上的notepad.exe将显示文本文件,其中Unix样式的换行符为长行,而Unix编辑器看到Windows样式时,可能会在每行末尾显示^ M。
因此从技术上讲,对于二进制格式(zip,jpg,png和无尽其他),您需要将FTP设置为BINARY,而对于文本格式(HTML,PHP,CGI等),则需要将其设置为ASCII。
大多数优质的FTP程序还具有自动设置,这意味着它们将根据众所周知的文件扩展名来确定模式(BINARY或ASCII),例如,它将自动将JPG文件的传输切换为BINARY并以ASCII格式发送/接收PHP文件模式。