档案内的磁盘使用情况,例如 ncdu

档案内的磁盘使用情况,例如 ncdu

我是该产品的忠实用户NCDU用于确定目录中空间使用情况的实用程序。

但是,我有一个用例,我尝试选择要备份的文件夹和不备份的文件夹,并且备份将被压缩(作为 .tar.xz 存档,但我认为 .tar.gz 会产生相同的结果)结果符合我的想法)。因此,直观上,我不太关心较大但压缩效果好的文件(例如,电子邮件存档),而我更关心相对较小但根本无法压缩的文件(例如,JPG 图片)。我想查看按压缩大小排序的文件和文件夹,而不是按实际未压缩大小排序。

一个自然的解决方案是压缩所有文件,然后有一个ncdu类似的工具可以运行在档案上告诉我文件夹如何占用存档中的空间。

有这样的实用工具吗?

我对 GUI 程序很满意(尽管我更喜欢基于文本的程序),并且我对仅适用于不同压缩算法的方法也很满意,因为我认为它们仍然会产生有用的结果(例如,复制文件系统中的层次结构)具有内置压缩/重复数据删除功能)。

答案1

可以ncdu自己用啊!

这显示了文件的未压缩大小。
如果您说您关心,即许多不可压缩的文件,它应该很好地反映您需要的内容:


使文件大小无障碍ncdu,他们需要在文件系统中。所以我们需要将存档挂载为文件系统。

我们使用一个熔断用户空间文件系统执行,archivemount:

安装fuse文件系统:

sudo apt-get install archivemount

mkdir一个目录,mount将存档cd放入其中,然后运行ncdu

$ mkdir bash-4.3-mount
$ archivemount bash-4.3.tar.gz bash-4.3-mount
$ cd bash-4.3-mount
$ ncdu


现在你可以ncdu正常使用了:

ncdu 1.10 ~ Use the arrow keys to navigate, press ? for help                     
--- /tmp/archivedutest/bash-4.3-mount/bash-4.3/lib ----------------
                        /..                                                      
    1.2MiB [##########] /readline
  343.0KiB [##        ] /sh
  316.5KiB [##        ] /intl
  104.5KiB [          ] /glob
   97.0KiB [          ] /malloc
   32.0KiB [          ] /termcap
   22.0KiB [          ] /tilde

 Total disk usage:   2.1MiB  Apparent size:   2.0MiB  Items: 251                 



现在,您真正感兴趣的是文件的压缩大小,而不是未压缩的大小:您想查看哪些文件在实际存档中占用最多空间。

严格来说,这是不可能的,因为存档是整体压缩的。单个文件没有“压缩大小”。

因此单个文件的压缩大小只能是近似值。
一种近似值是单独压缩文件的大小。
另一个是假设所有文件都按相同比率压缩的压缩大小的一小部分。当然还有其他方法。

第一个好像还可以。为了实现它,没有办法实际解压和重新压缩各个文件,所以我认为没有理由不这样做,解压到文件系统,并对文件使用 ncdu。

相关内容