web-dev-qa-db-ja.com

コマンドラインを使用してファイルをトリミングするにはどうすればよいですか?

次の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
18
badp

一般的には、ddを使用します。ただし、KVM仮想化の使用について言及しているように、qemu-imgの使用を検討することもできます。

qemu-img create -f raw disk 2G

効果的には、Chris Downの回答のddコマンドと同じです。

使用するコマンドに関係なく、仮想化で使用する場合は、断片化を防ぎ、パフォーマンスを向上させるために、fallocateを使用してブロックを事前に割り当てることを強くお勧めします。

fallocate -l 2G disk

ただし、すべてのプラットフォームとファイルシステムで利用できるわけではありません。これはゼロを書き込まず、後でファイルを拡張する必要があるたびにオンデマンドで行うのではなく、ファイルにブロックを割り当てるだけです。

8
gertvdijk

ddを使用して、次のようなスパースファイルを作成できます。

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

GNU truncateコマンドも参照してください。

truncate -s 2G some-file
6