截断命令不创建孔

截断命令不创建孔

我正在尝试使用 truncate 命令创建一个有孔的文件。我阅读了一些帖子和其中的答案之一邮政说使用截断命令。使用的文件系统是 btrfs。这是命令

$: truncate -s 16K holes

$: du holes
$: 16      holes
$:  stat holes
File: holes
  Size: 16384           Blocks: 32         IO Block: 4096   regular file

可以看出,它分配了 16 个块...我的理解是,它将分配 0 个块,正如答案中提到的那样。我在理解截断的作用时犯了错误吗?

答案1

我无法重现你的发现:

$ ls -la
total 24
drwxrwxr-x   2 tink tink  4096 2023-10-06 05:45 .
drwxr-x--- 180 tink tink 20480 2023-10-06 05:30 ..
$ truncate -s 16K holes
$ du holes
0   holes
$ stat holes
  File: holes
  Size: 16384       Blocks: 0          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 46402746    Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/  tink)   Gid: ( 1000/  tink)
Access: 2023-10-06 05:46:36.012153267 +1300
Modify: 2023-10-06 05:46:36.012153267 +1300
Change: 2023-10-06 05:46:36.012153267 +1300
 Birth: -
$ 

您确定您正在使用btrfs(据说支持稀疏性,我无法确认,因为我正在使用ext4)而不是类似的东西vfat

相关内容