ファイルを必要なサイズで埋めるにはどうすればよいですか?

ファイルを必要なサイズで埋めるにはどうすればよいですか?

16MiB(16777216バイト)に達するまで埋めたいファイルがあります。現在16515072バイトです。違いは262144バイトです。

どのようにパディングしますか?

これはうまくいかないようです:

cp smallfile.img largerfile.img
dd if=/dev/zero of=largerfile.img bs=1 count=262144

ベストアンサー1

seek物理パディングに答える代わりに、ファイルの新しい端に単一の文字を作成して、ファイルのパディングスペースの大部分を空にする(「穴」)ことができます。

dd if=/dev/zero of=largerfile.txt bs=1 count=1 seek=16777215

(利点は、特に使用時にパフォーマンスが向上し、bs=1追加のディスク容量を消費しないことです。)

文字を追加しなくても、if=/dev/nullこの方法は目的の最終ファイルサイズを使用して機能するようです。

dd if=/dev/null of=largerfile.txt bs=1 count=1 seek=16777216

より大きなブロックサイズを使用する物理パディングソリューションの高性能バリエーションは次のとおりです。

padding=262144 bs=32768 nblocks=$((padding/bs)) rest=$((padding%bs))
{
  dd if=/dev/zero bs=$bs count=$nblocks
  dd if=/dev/zero bs=$rest count=1
} 2>/dev/null >>largerfile.txt

おすすめ記事