ASCII与二进制与自动?

我在服务器之间传输文件,并开始注意到,其中一些正在修改为一个长期的连续的行,而不是有他们原来的回报和换行符。 我假设这与我最初设置为“自动”的FTP客户端的传输types有关,但是运动“二进制”和“ASCII”作为附加选项。

简而言之,将文件从一台服务器转移到另一台服务器的方式有什么区别,这些差异是否能够像我上面提到的那样修改文件?

Windows转移 Linux。

FTP的“二进制”传输模式准确地复制文件,字节为字节。 简单而直接。

当在不同的操作系统之间传送文本文件时,这可能不是您想要的 – 不同的操作系统使用不同的代码来表示换行符。 为此,存在“ASCII”模式:它自动将所有行结束从源系统的格式转换为目的地。

不知道关于“自动”,但我想它看起来像文件的扩展名或类似的东西,以决定是否是一个文本文件,并试图猜测适当的模式。

你想要的模式取决于你正在做什么与文件…如果你只是复制他们备份,那么你可能会想要复制二进制模式,所以他们会完全一样您稍后再将它们还原到Windows服务器。 如果他们需要作为文本文件(也许作为跨平台程序的configuration文件)在两边都可用,那么您将需要使用ASCII模式来翻译它们。

编辑:据我所知,FTP从Windows到Linux的文件不应该导致换行符消失… 但是 ,如果您以ASCII模式复制它们,然后将它们以二进制模式返回到Windows服务器,Linux Windows风格的行结尾可能无法识别。 (记事本不会看到他们;写字板会; YMMV与其他软件。)

(今天,这样一种方便的转换线自动结束 – 在FTP这样的基本协议中可能看起来很奇怪,但是在发明FTP时,发送文本文件是常态,协议的目标之一是这尽可能容易。)

确实存在差异,除非使用二进制选项,否则它们将与您的非纯文本文件传输混淆 – 通常在使用时一定要使用:)

什么操作系统,你正在传输文件/从? Linux / Unix使用不同的换行符,然后是Windows。 所以,如果你在Linux电脑上生成一个文件,并在Windows上打开它可能看起来很奇怪。 有工具来纠正这一点虽然以我的经验,如果你使用Windows的记事本,而不是记事本,你会没事的。

Windows和Unix在行末有不同的字节(Windows 0D 0Ahex,Unix只是0A)。 在二进制模式下传输文件时,文件的字节将从一台计算机不变地移动。 这是二进制格式(例如ZIP文件,图像等)所必需的,但可能导致文本文件的问题:例如,Windows上的notepad.exe将显示一个文本文件,只有unix样式换行符作为一个长行,一个unix编辑器看到Windows风格的时候可能会在每行的末尾显示^ M。

因此,从技术上来说,对于二进制格式(zip,jpg,png和无尽的其他格式),您需要将FTP设置为BINARY,而对于文本格式(HTML,PHP,CGI等)则需要将其设置为ASCII。

大多数优秀的FTP程序也有一个自动设置,这意味着它们将根据众所周知的文件扩展名来确定模式(BINARY或ASCII),例如,它将自动将JPG文件的传输切换到BINARY,并以ASCIIforms发送/接收PHP文件模式。