有哪些东西是 du 能看到而 rsync 不能看到的?
-
10-07-2019 - |
题
我想复制整个 Linux 服务器,该服务器将通过网络退役,这样我们就可以确保不会丢失任何内容。
我做到了 du /
并被告知有 60 GB 以下 /
然后我做了 rsync -r / root@newserver:/old-server
当做 du
在里面 old-server
dir 我有 22 GB。
那么为什么会有这样的差异呢?有没有什么东西 du
可以看到但是 rsync
无法复制?
解决方案
您可能已删除了尚未解除分配的文件,因为它们上有打开的文件句柄。 (我以前不知道du会看到那些用法,但是有些测试显示它确实如此。)你可以使用 lsof 。根据我的经验,这两个主要原因是删除了Apache日志而没有踢出httpd并从文件系统中删除mysql表而不是使用DROP TABLE。
其他提示
如果你有一些时间在手上,你可以弄清楚到底有什么区别:在旧服务器上运行cd /; find . > /tmp/old
,在新服务器上运行cd /old-server; find . > /tmp/new
,然后vimdiff
这两个文件看看有什么变化。
有一些特殊的文件系统应避免使用rsync
进行复制,例如/proc
,/sys
,/tmp
。他们可能会说明你看到的差异,但无论如何它似乎太大了。
可能存在一些不可读的目录(例如,没有r
或x
)。我不记得使用root
权限运行的进程是否可以在没有先修复权限的情况下访问这些目录。
更好地生成和比较文件列表及其md5总和。
不隶属于 StackOverflow