1

我想复制整个 linux 服务器,该服务器将通过网络停用,因此我们确定不会丢失任何内容。

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

然后我rsync -r / root@newserver:/old-serverdu了,在old-server目录中做时我得到了 22 GB。

那么为什么会有这种差异呢?有什么du看得见却rsync不能复制的东西吗?

4

4 回答 4

3

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

于 2009-03-11T14:15:17.970 回答
0

有一些特殊的文件系统您应该避免使用 复制rsync,例如/proc, /sys, /tmp. 他们可能会解释您看到的差异,尽管它似乎太大了。

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

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

于 2009-03-11T14:19:26.197 回答
0

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

于 2009-03-11T14:22:16.580 回答
0

一些建议:

  • 稀疏文件(使用 -S)
  • 硬链接(使用-H)
  • /proc/sys(使用 --exclude 或者更好的是 -x 并分别备份每个文件系统)

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

于 2009-03-12T08:50:50.003 回答