a3n*_*3nm 5 software-rec compression ncurses disk-usage
我非常喜欢使用ncdu实用程序来了解目录中的空间使用情况。
但是,我有一个用例,我尝试选择要备份的文件夹和不备份的文件夹,并且备份将被压缩(作为 .tar.xz 存档,但我认为 .tar.gz 会产生相同的结果)结果符合我的想法)。因此,直观上,我不太关心大但压缩效果好的文件(例如,电子邮件存档),而我更关心相对较小但根本无法压缩的文件(例如,JPG 图片)。我想查看按压缩大小排序的文件和文件夹,而不是按实际未压缩大小排序。
一个自然的解决方案是压缩所有文件,然后使用类似的工具对存档ncdu进行操作,告诉我文件夹如何占用存档中的空间。
有这样的实用工具吗?
我对 GUI 程序很满意(尽管我更喜欢基于文本的程序),并且我对仅适用于不同压缩算法的方法也很满意,因为我认为它们仍然会产生有用的结果(例如,复制文件系统中的层次结构)具有内置压缩/重复数据删除功能)。
可以ncdu自己用啊!
这显示了文件的未压缩大小。
如果您说您关心,即许多不可压缩的文件,它应该很好地反映您需要的内容:
为了使文件大小可供访问,ncdu它们需要位于文件系统中。所以我们需要将存档挂载为文件系统。
我们使用保险丝用户空间文件系统实现archivemount:
安装fuse文件系统:
sudo apt-get install archivemount
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
现在你可以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
Run Code Online (Sandbox Code Playgroud)
现在,您真正感兴趣的是文件的压缩大小,而不是未压缩的大小:您想查看哪些文件在实际存档中占用最多空间。
严格来说,这是不可能的,因为存档是整体压缩的。单个文件没有“压缩大小”。
因此单个文件的压缩大小只能是近似值。
一种近似值是单独压缩文件的大小。
另一个是假设所有文件都按相同比率压缩的压缩大小的一小部分。当然还有其他方法。
第一个好像还可以。为了实现它,没有办法实际解压和重新压缩各个文件,所以我认为没有理由不这样做,解压到文件系统,并对文件使用 ncdu。