使用 rsync 备份的目录比源目录大得多

使用 rsync 备份的目录比源目录大得多

我们使用 将一组虚拟机备份到外部 USB 驱动器rsync -a。 报告的源目录为 145G du -sh,但目标报告为 181G。

这两个文件系统ext3和块大小都相同,所以有人可以解释一下差异是什么吗?

答案1

正如 Dennis 所说,这似乎是一个稀疏文件问题。例如:

$ dd if=/dev/zero of=sparse.txt count=0 seek=1000
0+0 records in

$ du sparse.txt
0   sparse.txt

$ ls -l sparse.txt
-rw-r--r-- 1 user user 512000 2010-03-22 11:54 sparse.txt

如您所见,du报告实际使用了多少块,同时ls显示文件应该有多大。

答案2

其他人已经谈到了稀疏文件,但还有另一件事:硬链接。硬链接 - 系统分区上经常使用文件的多个名称(以及磁盘上的空间)(例如,用于在同一二进制文件中实现的多个 shell 命令),并且 rsync 不会仅使用“-a”选项来专门处理它们。因此,例如,具有四个硬链接的文件将存储为四个单独的文件。

尝试使用rsync -aH

答案3

-S,--稀疏
              尝试有效处理稀疏文件,以减少它们占用的内存
              目标上的空间。与 --inplace 冲突,因为它
              无法以稀疏的方式覆盖数据。

              注意:当目标是 Solaris 时,请勿使用此选项
              “tmpfs” 文件系统。它似乎无法处理空查找
              区域正确并最终损坏文件。

答案4

使用 rsync 脚本,您是否会删除目标上存在但不再存在于目标上的项目?如果您希望在两边都有相同的副本,则需要在 rsync 例程中使用“--delete”标志。

"rsync -a --delete /source/ /destination/"

您还可以将“-n 和 -P”注入字符串以分别提供试运行和进度指示器,以向您展示使用“--delete”选项会发生什么。

相关内容