可能是我没有把问题说清楚,我的原话是:

*有2个文件,file1和file2,大小都是4G,如果想合并file1和file2,可以 cat
file2>>file1来实现,这样要花几分钟时间。有没有一种办法,能把file2 "剪切"
到file1中?也就是说把file2在文件系统中占用的数据块分配给file1?使用的是ext3文件系统。*

mv
的作用是把一个文件改一个名字,该文件除了文件名以外其他信息都不变,所以mv的速度特别快。mv不能把一个文件的内容移动到另一个文件的末尾去。我觉着下面shell909090说的比较有道理:

*有点困难,因为根据我的理解,任何文件在磁盘中都是"块**"的集合存储的。如果头
一个文件正好放满N块还好说,如果正好差一点,那么后面的数据按**照规则必须先
填充前面的块。这样会造成后一个文件全面的内容位移**,其读写数据量没有比直接
附加低多少。*

举例:
file1的文件长度是1个字节,在块大小是4k的ext3文件系统下,这个文件要占用4k的空间,也就是一个块的空间。
file2的文件长度是8K+1个字节,在块大小是4k的ext3文件系统下,这个文件要占用8K+4k的空间,也就是3个块的空间。
如果要把file2剪切到file1的末尾,要做到比"cat file2>>file1"更快,不修改内核中的文件系统能做到吗?

2008/6/13 马利 <[EMAIL PROTECTED]>:
> 看看mv的源代码就差不多了吧,适当复用,没看出来和内核有什么关系
>
> --
> 马利
> richard.ma
> --
> ubuntu-zh mailing list
> [email protected]
> https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh
>
>



-- 
瑞豪开源VPS - 基于Linux/Xen - 最低58元/月 - 免费试用
http://www.RasHost.com
-- 
ubuntu-zh mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh

回复