![相同的文件夹内容但不同驱动器上的大小不同,为什么?](https://linux22.com/image/170940/%E7%9B%B8%E5%90%8C%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%B9%E5%86%85%E5%AE%B9%E4%BD%86%E4%B8%8D%E5%90%8C%E9%A9%B1%E5%8A%A8%E5%99%A8%E4%B8%8A%E7%9A%84%E5%A4%A7%E5%B0%8F%E4%B8%8D%E5%90%8C%EF%BC%8C%E4%B8%BA%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我有同一个文件夹的三个副本,但它们的大小不同。为什么?
我有一个文件夹“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/) 。
如果出现单行,则该目录在相反的目录中不存在。
希望这可以帮助。