什么可以看到rsync不能?

时间:2009-03-11 14:08:06

标签: linux filesystems rsync du

我想要复制一个将通过网络退役的整个Linux服务器,这样我们确定没有任何东西丢失。

我做了du /并且被告知有60 GB以下/

然后我做了rsync -r / root@newserver:/old-server并且在du目录中执行old-server时我获得了22 GB。

那为什么会有这种差异?是否有du可以看到但rsync无法复制的内容?

4 个答案:

答案 0 :(得分:3)

您可能已删除了尚未解除分配的文件,因为它们上有打开的文件句柄。 (我以前不知道du会看到那些用法,但有些测试表明它确实如此。)你可以使用lsof进行研究。根据我的经验,这两个主要原因是删除了Apache日志而没有踢出httpd并从文件系统中删除mysql表而不是使用DROP TABLE。

答案 1 :(得分:0)

有些特殊文件系统应避免使用rsync进行复制,例如/proc/sys/tmp。他们可能会说明你看到的差异,但无论如何它似乎太大了。

可能有一些不可读的目录(例如,它们上没有rx。我不记得使用root权限运行的进程是否可以在没有先修复权限的情况下访问这些目录。

更好地生成和比较文件列表及其md5总和。

答案 2 :(得分:0)

如果你手头有一点时间,你可以弄清楚到底有什么区别:在旧服务器上运行cd /; find . > /tmp/old,在新服务器上运行cd /old-server; find . > /tmp/new,然后{{ 1}}两个文件,看看有什么变化。

答案 3 :(得分:0)

一些建议:

  • sparse files(使用-S)
  • hard links(使用-H)
  • /proc/sys(使用--exclude或者更好,-x并分别备份每个文件系统)

我倾向于在类似情况下使用rsync -axHSW --numeric-ids