如何使用命令行修剪文件?

如何使用命令行修剪文件?

以下 Python 代码的控制台等效项是什么:

target = file("disk", "w")    # create a file
target.seek(2*1024*1024*1024) # skip to 2 GB
target.write("\0")
target.close()

也许有一些 dd 咒语?这个想法是制作一个表观大小为 2 GB 的文件,以供虚拟化等用途。

kvm disk -cd whatever.iso #Only allocate space as necessary

答案1

您可以使用以下命令创建一个稀疏文件dd

dd of=file bs=1 seek=2G count=0
$ du file
0       disk
$ du --apparent-size file
2097152 disk

答案2

一般来说,只需使用dd;但当您提到 KVM 虚拟化的使用时,您可能会考虑使用qemu-img

qemu-img create -f raw disk 2G

dd它的作用与Chris Down 的答案中的命令相同,有效。

无论您使用什么命令,为了在虚拟化中使用,我强烈建议使用fallocate预分配块以防止碎片并提高性能。

fallocate -l 2G disk

但它并非在所有平台和文件系统上都可用。这不会写入零,而只是将块分配给文件,而不是在每次必须扩展文件时按需执行此操作。

答案3

另请参阅 GNUtruncate命令:

truncate -s 2G some-file

相关内容