从一开始标准 UNIX/Linux 系统就支持稀疏文件,这是一个包含未分配空间的文件,直到需要时才分配。查看,通过C程序生成:创建文件,定位到2G,写入一个字节,关闭文件。执行 ls -l 显示大小为 2G....但是 ls -ls 显示块的大小更接近一个字节文件。如果您从逻辑上访问该文件(即 cp sparse_file xxx),则生成的文件 xxx 将确实包含完全分配的 2Gbytes。
我过去创建了稀疏文件作为某些应用程序的测试工具。然而,它们的存在带来了一些问题。
重要的问题是,在“转储”程序之外,备份程序和一般程序可以逻辑地访问这些类型的文件,因此对于 1 字节的稀疏文件,可以获得 2G 的 0'd 数据的备份。当我这样做时,这引起了一些后备人员的不安。
这种情况有什么好的解决方案吗?
GNU Tar 具有--sparse ( -S ) 选项,使处理备用文件变得简单。
使用能够正确检测和处理稀疏文件的备份程序。周围有很多(杰里米建议使用 -S 的 tar),只需将其作为备份系统评估的清单项即可。
基于 rsync 的备份程序应该能够很好地处理空间文件(rsync 有 --sparce/-S 选项)
对于稀疏文件,star 程序比 GNU tar 快得多。处理此类文件时需要 -sparse 选项。对于普通复制使用 cp --sparse=auto