如何比较两个根文件系统 - 但忽略挂载点?

如何比较两个根文件系统 - 但忽略挂载点?

我有 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

相关内容