为什么解压缩的目录 (4.0 K) 比压缩的 (73.0 G) 小得多?

blu*_*oid 38 zip centos unzip

我解压缩了一个压缩文件,zip -l <filename>但得到的是一个比解压缩前小得多的目录。解压后的目录包含所有文件,主要是视频。为什么解压出来的目录正好是4.0k?我错过了什么吗?

命令的 Bash 输出ls -alh

drwxrwsr-x  4 shubhankar gen011    4.0K May 19 15:47 Moments_in_Time_256x256_30fps
-rw-rw-r--  1 shubhankar gen011     73G Mar  1  2018 Moments_in_Time_256x256_30fps.zip
Run Code Online (Sandbox Code Playgroud)

iva*_*van 153

屏幕截图中显示的目录大小不是内容大小的总和,而是与目录关联的元数据的大小 - 文件名等。

https://unix.stackexchange.com/questions/55/what-does-size-of-a-directory-mean-in-output-of-ls-l-command

要了解目录内容使用了多少空间,您可以使用

du -sh /path/to/directory

  • @poizan42 效率很低,要求文件系统在每次更改时更新所有父目录(包括根目录,其大小会不断变化)。 (25认同)
  • 而对于*为什么*做出这个设计决定的答案留给了读者(在运行两个命令之后;-))。 (21认同)
  • @poizan42,不,因为文件可以是硬链接的,所以你不能在沿着层次结构向上时总结大小。 (11认同)
  • @poizan42 该解决方案比乍一看更糟糕(这已经慢得令人无法接受):inode 不存储对链接它们的目录的引用,而只是一个计数。这意味着您还必须为每个 inode 存储更多元数据,并担心保持所有内容同步。对于很少使用的功能来说,相当多的开销和复杂性。 (8认同)