我使用“rsync”将一个大文件夹从NTFS复制到ext4,并使用“diff”验证它。出于好奇,我还使用“du”命令检查文件夹是否具有相同的大小。虽然“diff”没有显示任何差异,但“du”显示文件夹具有不同的大小。我在执行以下命令时没有遇到任何错误。
rsync --archive --recursive "$src" "$dest" 2>rsync_error.txt
sync
diff --brief --recursive --new-file "$src" "$dest" 1>diff-log.txt 2>diff-error.txt
然后我用“du”表示每个文件夹:
du -sb "$src"
du -sb "$dest"
Output:
137197597476
137203512004
1.既然没有任何区别,为什么会发生这种情况?
2.我应该担心我的数据还是我的系统?
编辑:我也试过du -s --apparent-size
,还是有区别的。
3条答案
按热度按时间qltillow1#
备份文件
在linux下,你可以创建所谓的
sparse files
,它们是一个没有完整NULL
块的文件!试试这个:
以及
那么
但是
sparsefile
中的长块未使用,因此不会 * 分配 *!然后
这两个文件之间几乎没有区别!
进一步
83qze16e2#
问候无敌,
我搜索了一下,发现了这个:
由于du报告的是分配空间而不是绝对文件空间,因此如果文件已删除但其块尚未释放,则du显示的文件系统空间量可能与df显示的空间量不同。source
不是最好的源代码,但很好地描述了
du
的用途。因此,我将依靠
diff
来检查文件的内容,但我建议忽略文件系统上的大小差异,除非它太大,但这不是这种情况。zzoitvuj3#
du
报告的空间包括文件系统空间,而不仅仅是文件内容大小。同时检查
du
中可能不包含的隐藏文件。