相同的文件夹内容但不同驱动器上的大小不同,为什么?

相同的文件夹内容但不同驱动器上的大小不同,为什么?

我有同一个文件夹的三个副本,但它们的大小不同。为什么?

我有一个文件夹“Documents”,已将其从桌面硬盘驱动器上的加密 lvm 复制到外部驱动器上的加密 luks 分区。然后,我将此文件夹从外部驱动器复制到笔记本电脑硬盘驱动器上的加密 lvm 中。

所以我有同一个文件夹的三个副本:

  • 桌面
  • 外部驱动器
  • 笔记本电脑

diff我在台式机和外部驱动器之间使用过--> 没有区别。

diff我在笔记本电脑和外部驱动器之间使用过--> 没有区别。

但我对这三种情况有不同的文件夹大小。

我用过

du -bs --apparent-size Documents

测量尺寸。结果如下:

  • 桌面:1735750760
  • 外置驱动:1735742568
  • 笔记本电脑:1735746664

因此,我们注意到尺寸之间存在细微差别。差异虽小但仍然存在。我想知道为什么会这样。你有解释吗?

答案1

您可能已经注意到,不同文件夹之间的区别如下:

    Desktop:        1735750760
                  -       8192
    External drive: 1735742568  
                  +       4096  
    Laptop:         1735746664  

根据我的经验,这种 4K 块的差异通常是由于目录大小的变化造成的。如果您比较目录本身的大小(在 ext 文件系统上通常是 4K 的倍数),您可能会发现差异。
(例如,在复制操作期间重组目录时,目录有时会变小,从而清除已删除的条目)

要查找大小不同的目录,您必须将目录相互比较。以下脚本可以帮助您:

#!/bin/bash
DIR1="${1%/}/"
DIR2="${2%/}/"

diff \
  <(find $DIR1 -type d -printf "%k %p\n" | sed -e "s|$DIR1||" | sort -k2) \
  <(find $DIR2 -type d -printf "%k %p\n" | sed -e "s|$DIR2||" | sort -k2)

将代码复制到新文件(例如 dircomp.sh)并使其可执行chmod +x dircomp.sh。然后称呼它为./dircomp.sh /home/lemenhir/ /media/lemenhir/ExternalDrive/.

输出现在应该仅列出具有不同大小的目录,并且可能如下所示:

< 4 Documents/Appartement/Bail
> 8 Documents/Appartement/Bail

其中以 开头的行<列出了位于作为第一个参数给出的目录中的目录(例如 /home/lemenhir/),而以 开头的行>列出了位于作为第二个参数给出的目录中的目录(例如 /media/lemenhir/ExternalDrive/) 。

如果出现单行,则该目录在相反的目录中不存在。

希望这可以帮助。

相关内容