我有 rootfs,/
但其中/mnt/another_rootfs
包含第二个已安装的 rootfs。
我想比较其中的文件......但是当我执行以下操作时:diff -r / /mnt/another_rootfs
我开始获取所有正在比较的挂载点(我对此不太感兴趣)但 rootfs/
还将包含第二个挂载/mnt/another_rootfs
......这也会导致问题。
所以我实际上只是想比较实际安装的文件/
与安装的文件之间的差异/mnt/another_rootfs
,而不是递归到其他安装中。
那可能吗?
答案1
当您将问题反转为“我想要diff /mnt/another_rootfs /
”时,命令行解决方案很简单:
find /mnt/another_rootfs -xdev -type f -print0 | \
xargs -0 -r $HOME/bin/diffwithslash
类似的东西在哪里$HOME/bin/diffwithslash
:
#!/bin/bash
while [[ $# -gt 0 ]] ; do
afile="$1"
shift
bfile="${afile#/mnt/another_rootfs}"
if [[ -f "$afile" ]] && [[ -f "$bfile" ]] ; then
diff "$bfile" "$afile"
fi
done
exit 0
答案2
您可以将包含当前启动安装的文件系统的分区挂载到第二个挂载点,并将该挂载点与其他文件系统/
的挂载点进行比较。/
用于lsblk -f
检查哪个分区安装在/
。
然后使用
sudo mount -t ext4 /dev/sdXY /mnt (replace XY with the found value)
与作为其他文件系统/mnt
的挂载点的文件夹进行比较。/
卸载sudo umount /mnt