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