我是该产品的忠实用户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。