Linux:如何计算/查找文件的松弛空间?

Linux:如何计算/查找文件的松弛空间?

例如,我将如何找到文件的松弛空间。

fls -o 63 /images/diskimg.dd 
istat -o 63 /images/diskimg.dd 31
icat -o 63 /images/diskimg.dd | xxd | less

我将使用以下哪个命令来查找 slackspace?或者还有别的吗?我还如何寻找可以存储在 slackspace 中的信息?

我发现使用 -s 选项将允许我使用icat命令查看文件的slackspace,但仍然不确定是否要计算slackspace大小,不喜欢用icat将其相加。

答案1

您所指的“松弛空间”通常称为文件内的稀疏空间。您可以使用ls&du命令来检测给定文件消耗了多少稀疏空间。

摘自维基百科的稀疏文件

检测

-s该命令的选项显示ls了以块为单位的占用空间,以及-k以块为单位的表观大小:

  $ ls -lks sparse-file

-h可以用于以人类可读的格式打印两者。

或者,du 命令打印占用的空间,同时ls打印表观大小。该选项--block-size=1以字节而不是块为单位打印占用的空间,以便可以将其与输出进行比较ls

  $ du --block-size=1 sparse-file
  $ ls -l sparse-file

例子

首先创建一个稀疏文件:

$ truncate -s 5M sparsy

现在检查一下:

$ ls -lks sparsy 
0 -rw-rw-r--. 1 saml saml 5242880 Apr  4 09:18 sparsy

$ ls -l sparsy 
-rw-rw-r--. 1 saml saml 5242880 Apr  4 09:18 sparsy

笔记:输出中的第一列ls -lks sparsy显示一个0.这意味着该文件sparsy是 100% 稀疏的,它不包含实际的数据块,仅包含稀疏数据。

du命令显示相同的内容:

$ du --block-size=1 sparsy 
0   sparsy

对于不稀疏的文件,我们会看到以下内容:

$ seq 1000 > non-sparsy

现在,当我们使用以下命令检查它时ls

$ ls -lks non-sparsy 
4 -rw-rw-r--. 1 saml saml 3893 Apr  4 09:27 non-sparsy

我们看到这消耗了 4 个空间块。使用du显示了同样的事情:

$ du --block-size=1 non-sparsy 
4096    non-sparsy

相关内容