除了已知的差异之外,我有两台服务器应具有相同的设置.
通过运行:
find / \( -path /proc -o -path /sys -o -path /dev \) -prune -o -print | sort > allfiles.txt
我可以在一台服务器上找到所有文件的列表,并将其与另一台服务器上的文件列表进行比较.这将显示驻留在服务器上的文件名称的差异.
我真正想要做的是对两台服务器上的所有文件运行校验和,并比较它们以找到内容不同的位置.例如
find / \( -path /proc -o -path /sys -o -path /dev \) -prune -o -print | xargs /usr/bin/sha1sum
解决方法
你是对的,rsync是完美的.使用–itemize-changes(aka -i).确保您可以在双方(或其他具有完全访问权限的用户)的root用户身份运行此命令:
rsync -ani --delete / root@remotehost:/
> -a用于存档,基本上使rsync完全重复(除了某些涉及链接的情况)
> -n用于干运行,意味着什么都不会实际改变(这个是重要的!:))
> -i用于逐项更改,并输出一个简单易懂的一次性格式,显示需要更新的每个文件(语法在详细帮助下的手册页中有详细解释)触发).
> –delete使rsync删除目标但不存在源的文件.
如果要排除某些路径,请使用–exclude / var之类的命令.排除模式是相对于源目录(在这种情况下是/,因此它们实际上是绝对的).