AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1568570
Accepted
Artalus
Artalus
Asked: 2020-07-15 05:35:37 +0800 CST2020-07-15 05:35:37 +0800 CST 2020-07-15 05:35:37 +0800 CST

如何计算目录的总大小,为什么目录副本之间的“du”输出不同?

  • 772

因为我显然在这里遗漏了一些东西:

 $ cp -a CENTOS-chroot 1
 $ cp -a CENTOS-chroot 2
 $ cp -a CENTOS-chroot 3
 $ cp -a CENTOS-chroot 4
 $ du --block-size=1 -s 1 2 3 4
6320304128  1
6320304128  2
6320234496  3
6320238592  4

这发生在我拥有的两台 Linux 机器(Manjaro 和 Centos7)上带有 ext4 的 HDD 和 NVME SSD 上。

linux disk-space
  • 2 2 个回答
  • 1222 Views

2 个回答

  • Voted
  1. Eugen Rieck
    2020-07-15T05:54:22+08:002020-07-15T05:54:22+08:00

    ext4 文件系统的块和扩展区布局取决于文件系统的填充率和碎片。

    这意味着,与空文件系统相比,具有更多文件的文件系统可能会为其他文件占用(略微)不同的空间。在您的情况下,第 4 个副本将比第 1 个副本占用更多空间。

    • 1
  2. Best Answer
    Attie
    2020-07-15T08:00:13+08:002020-07-15T08:00:13+08:00

    不要忘记du在原始底层文件系统级别报告磁盘使用情况,而不是在明显的“文件大小”级别......请参阅--apparent-size。

    --apparent-size

    打印外观尺寸,而不是磁盘使用情况;尽管表观大小通常较小,但由于(“稀疏”)文件中的漏洞、内部碎片、间接块等原因,它可能会更大

    另请参阅-b,这可能是给予--block-size=1 和 --apparent-size一起更好的选择:

    -b,--bytes

    相当于--apparent-size --block-size=1

    ...那么,会du -bs ${dir}产生更好的结果吗?


    鉴于大多数/所有文件系统都基于固定大小的块,很常见的是明显的“文件大小”(即您可以从文件中读取的字节数)与磁盘上使用的实际空间不同(即:存储此文件及其元数据所消耗的字节数)。

    例如:

    • 小文件通常会使用比“应该”更多的空间......在具有 4KiB 块的文件系统上,即使文件只存储一个字节,也不可能让文件使用少于 4KiB 的磁盘空间。
    • 大文件通常由许多“范围”构成……一个范围将描述在何处定位文件一部分的数据。盘区也消耗磁盘空间。
      • 在没有任何碎片(即:未使用空间的大间隙)的文件系统中,可能有一个只有一个扩展区的“大”文件。
      • 在具有大量碎片的文件系统中(即:到处都有大量数据,在数据之间留下很小的间隙),同一个“大”文件实际上可能有许多用于指示数据存储位置的范围。

    这完全取决于文件在磁盘上的放置顺序,以及用于寻找连续空闲空间块的算法。

    您可以拥有一个非常节省空间的文件系统,它可以连续且仔细地重新排列所有文件,使它们像玩得好的俄罗斯方块板一样完美地镶嵌。文件系统最终会花费大量时间来寻找合适的空间,并且性能会受到严重影响。

    同样,您可以拥有一个非常面向碎片的文件系统,它只使用第一个未使用的块,并跳过使用的块。在第一间隙写入数据也会影响你的表现。

    相反,我们更喜欢平衡事物,花一些时间(但不要太多)来寻找一个连续的未使用空间块,其中将包含我们正在尝试写入的全部数据。

    文件的碎片级别与复制命令的发布顺序没有直接关系——部分原因是上面概述的“尝试,但不太难”的方法。


    综上所述,这两个目录中存储的数据应该是相同的,但磁盘使用情况(即使是相同的数据)不太可能完美匹配。

    有许多选项可以验证存储的数据是否相同 - 尝试diff(没有输出是好的,它会报告更改):

    diff -qr "${src}" "${dst}"
    

    更复杂的是,稀疏文件的使用可能比预期的要少得多:

    $ truncate -s 100M x
    $ ls -l x
    -rw-r--r-- 1 attie attie 104857600 Jul 14 17:15 x
    $ du --block-size 1 x
    0       x
    $ du -bs x
    104857600       x
    
    • 1

相关问题

  • 如何让我的 Linux 机器看起来像是在运行 Windows?

  • 对于 cp 或 mv,是否有等同于 cd - 的东西?

  • 以 root 身份运行 docker 容器

  • 如何在域和 Linux 活动目录中启用指纹传感器

  • 如何在CentOS 7 中将Ctrl+C 永久更改为Ctrl+K?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve