相同的文件,不同的文件大小

use*_*638 12 linux ftp backup

我使用 lftp 和 Transmit(Mac 应用程序)从我的 FTP 服务器进行了备份。一切都很好,但 1-2 个文件的文件大小不同,但它们是相同的。

第一个文件:

http://dl.dropbox.com/u/229956/deadcow_seo.php

第二个文件:

http://dl.dropbox.com/u/229956/deadcow_seo.php_2.php

这两个文件有什么区别?

use*_*686 25

deadcow_seo.php使用 Unix 行尾 ( LF),而deadcow_seo.php_2.php使用 DOS/Windows 行尾 ( CR LF)。

FTP 有几种“传输模式”,其中两种是常用的1二进制(也称为“图像”)和文本(或“ASCII”)。在“二进制”模式下,文件按原样逐字节传输,而“ASCII”使文件被解释为由文本行组成——行尾CR LF在发送时转换为网络标准,并且接收时转换为机器的本机行尾。

以文本形式传输文件一开始可能有意义,但它只会在以后造成麻烦——事实上,一些 FTP 服务器已经完全删除它或在服务器端使其等同于二进制文件。此外,大多数文本编辑器(不包括记事本)可以读取和保存 Windows 和 Unix 格式的文件。

只需将您的 FTP 客户端配置为始终使用二进制模式 - 命令通常是binmode i,而图形客户端可能在其设置中具有复选框或文件类型列表。


1一些旧模式是“tenex”(长期过时,对于 TENEX 基于页面的文件)和“压缩”(这似乎被定义为一个简单的 RLE 算法)。最近的 FTP 服务器支持 zlib 压缩的“模式 z”。


Dan*_*eck 12

您使用了文本(或 ASCII)传输模式,它在传输过程中替换了换行符。当您在 Windows 上开发脚本和程序并将文件传输到 Linux 或 Mac OS X 时,这通常很有用。否则它们将无法正常工作,因为系统会在每一行的末尾看到垃圾数据。

如果文件有一个 Windows 换行符\r\n(或CRLF),并且您下载到 Linux 或 Mac OS X,则它被替换为\n(或LF),后者少 1 个字节。使用 FileMerge 比较文件在状态栏中确认了这一点:

在此处输入图片说明

另请参阅有关数据解释的此答案


您可以在 Transmit 的首选项中配置将哪些文件类型解释为文本:

在此处输入图片说明

您可以从此列表中删除所有文件扩展名,并仅对 Linux/Mac OS X 换行符进行标准化,即\n,即使在使用 Windows 时也是如此。大多数编辑器都能够更改行结束模式。