如何快速找到 Linux 上两个应该相同的目录之间最大的不同文件/目录?

如何快速找到 Linux 上两个应该相同的目录之间最大的不同文件/目录?

我是尝试同步两个硬盘。我认为大多数不想丢失任何数据并且不使用 RAID 的人都会使用这种方法,这样就会有一个运行良好的 GUI。情况似乎并非如此,在 Linux 上我只找到了 Grsync GUI 可以做到这一点,但由于它无法复制 root 拥有的文件,我仍然必须在控制台中运行此 rsync 命令:

sudo rsync -r -t -p -o -g --delete -l -s /media/veracrypt1 /media/veracrypt2
这基本上意味着复制原始驱动器上的所有内容,并删除目标驱动器上已在源驱动器上删除的文件。我打算克隆驱动器,使其内容 100% 完全相同,并且命令中可能仍然缺少一些参数。两个 ext4 驱动器均使用 VeraCrypt 完全加密,并且型号完全相同(存储大小也相同)。我使用的是 Debian12/KDE。

我的问题是由于目标驱动器已满,它总是在完成复制之前中止,rsync 显示此错误:

rsync: [receiver] write failed on "/media/veracrypt2/file": No space left on device (28)
rsync error: error in file IO (code 11) at receiver.c(380) [receiver=3.2.7]
rsync: [sender] write error: Broken pipe (32)

但它不应该已满,因为lsblk -f显示源驱动器的 FSUSE% 低于 95%,并且有大量可用 GB。

我已经尝试删除目标磁盘上的大文件并重新运行它,--exclude-from='./exclude-file.txt' --delete-excluded添加以排除一些大文件,var/spool/并且var/cache/这些文件位于使用 BackInTime 制作的系统分区备份的目录中的某个位置。我还将根保留磁盘空间从 5% 更改为 1%,sudo tune2fs -m 1 /dev/mapper/veracrypt2之前导致它显示删除大文件后0B仍然可用。还是没有跑通。

如何快速找出哪些目录大小不同这样我就可以尝试找出这个问题的原因?

在磁盘空间未释放问题上,用户建议运行命令,例如sudo du -sk /media/veracrypt2/*/* > ./before_deleting_files.txt比较磁盘空间,但它只显示4某些文件和目录,并且每个命令需要很长时间加载。

我正在寻找一种不需要很长时间扫描的方法,没有必须首先解决的其他问题,理想情况下是 1)像图形磁盘映射(gdmap)这样的动态图形,人们可以在其中看到(在这种情况还比较)视觉上的大小和动态导航或2)创建一个简单列出哪些目录不同的报告的东西。

答案1

tree -d --du disk1您可以将和的输出tree -d --du disk2分别重定向到一个文件,然后比较它们......

为了避免 rsync 的差异:

在我上面的评论中,我完全沉迷于您所描述的系统的整体复杂性,以至于我什至没有仔细查看您的rsync调用。

那需要是

sudo rsync -r -t -p -o -g --delete -l -s /media/veracrypt1/ /media/veracrypt2

不是

sudo rsync -r -t -p -o -g --delete -l -s /media/veracrypt1 /media/veracrypt2

请注意 上的尾部斜杠/media/veracrypt1/

相关内容