我有 2 个 solaris 盒子,我需要检查某些目录(在本地文件系统和已挂载的 nfs 上)以确保它们在两个盒子上匹配,并将其他不匹配的内容删除或移动到本地文件系统的其他位置。
我研究了诸如 rsync 和 tree 之类的 unix 命令,但看来我的 Solaris 机器不支持这些命令。
解决这个问题的最佳方法是什么?使用 rsync、tree 然后比较输出还是 find?
我很难将 find 命令限制在某些目录中,因为已安装的文件夹包含太多 xml 文件,而我不太关心该目录中的文件。
在单个 find 命令上搜索多个目录路径的 find 命令是什么?
答案1
我认为“rsync”非常适合这个用途。您需要特别注意“--dry-run”和“--compare-dest”命令行开关。
答案2
您提到 rsync 在您的 Solaris 机器上不可用,因此这里还有另一种可能的解决方案。
(cd ${localdir}; find . -type f -exec md5sum {} \;) > /tmp/md5s.lcl.lst & lclpid=$!
ssh -n ${remotesrv} "cd ${remotedir} && find . -type f -exec md5sum {} \;)" > /tmp/md5s.rem.lst & rempid=$!
wait $lclpid; wait $rempid
comm -12 /tmp/md5s.lcl.lst /tmp/md5s.rem.lst
当然,这假设你的机器上有 md5sum。如果我没记错的话,它在早期版本中就有。