/media/A 和 /media/B 应该相同,但我想在删除其中一个之前确认一下。
重复文件查找器不起作用,因为它们会在 B 中找到同一文件的两个副本。我只想确认其中一个文件中的每个文件是否与另一个文件相同。
diff -qr /media/A/ /media/B/
似乎有效,但输出内容杂乱,如
差异:/media/A//etc/alternatives/ControlPanel:没有此文件或目录
和
文件 /media/A//dev/tty8 是字符特殊文件,而文件 /media/B//dev/tty8 是字符特殊文件
我可以用 来抑制前者2> /dev/null
,但我不知道后者。
rsync -avn /media/A/ /media/B/
还会产生一堆混乱的信息,例如“跳过非常规文件”。
我如何比较这两棵树并确保所有真实文件都存在于两棵树中并且完全相同?
答案1
使用以下命令检查它们是否相同。
diff imageA imageB -r 2> /dev/null | grep -v "is a character special file" | grep -v "is a block special file" && echo "viola"
答案2
看看 Guiffy。它不是免费的,但有 21 天的免费试用期,不限制功能:
它声称可以做到以下几点,而且似乎非常接近您所寻找的,或者可能足够接近,您可以从那里获取它:
- 文件夹比较适用于 Unicode 文件/文件夹名称
- 文件夹比较适用于存档文件(.zip、.tar、.jar 等)。
- 保存比较报告 - Guiffy 文件夹比较工具生成 HTML 格式的报告
- 从文件夹比较快速启动文件比较。
- 用户友好的文件夹比较视图,具有类似资源管理器的界面和可扩展的子文件夹。
- 文件夹比较界面包括文件同步操作的弹出菜单。
- 递归比较选项 - 文件夹比较可以进行文件树比较。
答案3
使用 rsync 的写入模式(带-v
/--verbose
和不带-n
/ --dry-run
),运行几次直到输出稳定。以 root 身份运行,以便重新创建非常规文件(由 -D 和 -a 暗示)有效,这应该可以消除混乱。