我正在尝试使用 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
?