相同文件,不同文件大小


12

我使用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

这两个文件有什么区别?


您确定问题不只是报告的大小吗?苹果几年前改变了Mac OS X报告存储空间的方式,以匹配硬盘制造商使用的方法。他们使用1MB = 1000KB而不是1MB = 1024KB。Linux主机可能会使用其他方法报告其他大小,因此文件看起来是不同的大小。不知道这是否适用于您的情况,但是仍然很有趣。
WebDevKev 2012年

这并不是说。只需查看他作为问题的一部分提供的文件或我的答案中的diff屏幕截图即可。顺便说一下,文件的大小还不足以使每个文件都占用1800-1900字节的空间。
丹尼尔·贝克

Answers:


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”。


12

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

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

在此处输入图片说明

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


您可以在“传输”首选项中配置将哪些文件类型解释为文本:

在此处输入图片说明

您可以从此列表中删除所有文件扩展名,甚至可以在Linux / Mac OS X换行符上进行标准化,即\n使用Windows也可以。大多数编辑器都可以更改行尾模式。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.