
空のファイルを作成する方法を知っています。
touch /var/tmp/nullbytes
しかし、bashを使用してコマンドラインからnullバイトのみを含む1MBファイルを作成するにはどうすればよいですか?
答え1
GNUの使用truncate
:
truncate -s 1M nullbytes
(nullbytes
あらかじめ存在しないと仮定)1MBのスパースファイルが生成されます。ファイルはゼロでいっぱいに見えますが、ディスク領域を占有しません。
そうでない場合は、truncate
次のものを使用できますdd
。
dd bs=1048576 seek=1 of=nullbytes count=0
(一部のdd
実装では1048576をに変更できます1M
)
ディスク容量が必要な場合割り当てられた、Linux、および一部のファイルシステムでは、次のことができます。
fallocate -l 1M nullbytes
これは実際にデータをディスクに書き込むことなくスペースを割り当てます(スペースは予約されていますが初期化されていないとマークされています)。
dd < /dev/zero bs=1048576 count=1 > nullbytes
0は実際にディスクに書き込まれます。これは最も効率が低いですが、ファイルへのアクセス中にドライブを回転させる必要がある場合はこれが必要です。
dd
または、NULバイト生成をだます@mikeservの方法:
dd bs=1048576 count=1 conv=sync,noerror 0> /dev/null > nullbytes
GNUの代替では、head
ブロックサイズを指定する必要はありません(1Mは問題ありませんが、10Gはそうではありません):
head -c 1M < /dev/zero > nullbytes
または、進行状況バーを取得します。
pv -Ss 1M < /dev/zero > nullbytes
答え2
dd if=/dev/zero of=/var/tmp/nullbytes count=1 bs=1M