Ayu*_*ush 17
有第三方工具可以做到这一点.
https://github.com/kilobyte/compsize
用法:
ayush@devbox:/code/compsize$ sudo compsize /opt
Processed 54036 files, 42027 regular extents (42028 refs), 27150 inline.
Type Perc Disk Usage Uncompressed Referenced
Data 82% 5.3G 6.4G 6.4G
none 100% 4.3G 4.3G 4.3G
zlib 37% 427M 1.1G 1.1G
lzo 56% 588M 1.0G 1.0G
Run Code Online (Sandbox Code Playgroud)
我无法逐个文件地回答,@ catlover2给出了文件系统的答案.但是你应该区分磁盘上的块大小和(虚拟)文件系统中的大小,ls并且du不能超出文件系统,因此它们不提供有关使用了多少磁盘块的信息,而@jiliagre --apparent-size在这里没用.
为了更好地说明这个问题,我用一个23G文件btrfs文件系统进行了测试; 首先是未压缩的,然后是lzo压缩的.示例文件是虚拟机映像,压缩级别仅为0.5.它只显示df,并且 btrfs filesystem df可以显示压缩.
$ lvcreate vg0 test_btrfs -L 30G
Logical volume "test_btrfs" created
$ mkfs.btrfs /dev/vg0/test_btrfs
...
fs created label (null) on /dev/vg0/test_btrfs
nodesize 16384 leafsize 16384 sectorsize 4096 size 30.00GiB
$ mount /dev/vg0/test_btrfs /tmp/test_btrfs
$ btrfs filesystem df /tmp/test_btrfs
Data, single: total=8.00MiB, used=256.00KiB
System, DUP: total=8.00MiB, used=16.00KiB
System, single: total=4.00MiB, used=0.00
Metadata, DUP: total=1.00GiB, used=112.00KiB
Metadata, single: total=8.00MiB, used=0.00
$ cp bigfile /tmp/test_btrfs
$ btrfs filesystem df /tmp/test_btrfs
Data, single: total=24.01GiB, used=22.70GiB
System, DUP: total=8.00MiB, used=16.00KiB
System, single: total=4.00MiB, used=0.00
Metadata, DUP: total=1.00GiB, used=23.64MiB
Metadata, single: total=8.00MiB, used=0.00
$ btrfs filesystem df /tmp/test_btrfs
... unchanged!
$ cd /tmp/test_btrfs/
$ ls -l bigfile
-rw------- 1 root root 24367940096 May 4 15:03 bigfile
$ du -B1 --apparent-size bigfile
24367940096 bigfile
$ du -B1 bigfile
24367943680 bigfile
$ btrfs filesystem defragment -c bigfile
$ ls -l bigfile
-rw------- 1 root root 24367940096 May 4 15:03 bigfile
$ du -B1 --apparent-size bigfile
24367940096 bigfile
$ du -B1 bigfile
24367943680 bigfile
$ btrfs filesystem df /tmp/test_btrfs
Data, single: total=24.01GiB, used=12.90GiB
System, DUP: total=8.00MiB, used=16.00KiB
System, single: total=4.00MiB, used=0.00
Metadata, DUP: total=1.00GiB, used=39.19MiB
Metadata, single: total=8.00MiB, used=0.00
$ df -BG /tmp/test_btrfs
Filesystem 1G-blocks Used Available Use% Mounted on
/dev/mapper/vg0-test_btrfs 30G 13G 16G 47% /tmp/test_btrfs
Run Code Online (Sandbox Code Playgroud)
@ gandalf3的问题仍然没有答案,可能我们需要等待btrfs的开发(或帮助开发它!)以获得一个特殊文件的正确底层磁盘块 du.这将是非常有用的,当我用压缩(没有强制)安装btrfs fs时我发现非常令人沮丧,不知道我的文件是否被压缩以及在哪个级别.
在 Ubuntu-18 中
apt install btrfs-compsize
compsize /mnt/btrfs-partition
Run Code Online (Sandbox Code Playgroud)