21487


`1GB`の`dummy.iso`というファイルを作成したいです。

MacOS, Linux 環境で標準でインストールされているコマンドで巨大なダミーファイルを作成することは可能でしょうか？


CC BY-SA 3.0
2016-01-29T09:12:38.620
21468
2019-04-30T09:33:34.420
2016-01-29T09:19:21.047
5505
5505
question
linux macos shellscript
1GBのダミーファイルを作成するコマンドは？


ddコマンドを利用します。

[code]

    dd if=/dev/zero of=dummy.iso bs=100000 count=10000
    
[/code]


CC BY-SA 3.0
2016-01-29T09:14:55.297
21469
2016-01-29T10:04:52.003
2016-01-29T10:04:52.003
5505
76
21468
answer


[truncate](https://linuxjm.osdn.jp/html/GNU_coreutils/man1/truncate.1.html)
コマンドで

`truncate --size=1G dummy.iso`


CC BY-SA 3.0
2016-01-29T09:35:48.360
21471
2016-01-29T09:35:48.360
5044
21468
answer


yasuさんの回答でもありますが

[code]

    dd if=/dev/zero of=dummy.iso bs=1G count=1
    dd if=/dev/zero of=dummy.iso bs=1M count=1K
    
[/code]

等とすることで全バイトが zero で埋め尽くされたファイルが作成できます。前者は実行に1GBのメモリーを必要とするため手元のマシンではエラーになりました
orz  
`/dev/zero`の他に`/dev/random`を使用して乱数で埋め尽くしたりもします。

BLUEPIXYさんの回答は少し異なります。

[code]

    truncate --size=1G dummy.iso
    
[/code]

こちらはファイルのサイズを見かけ上1GBに変更するものです。[Sparse
file](https://en.wikipedia.org/wiki/Sparse_file)と呼ばれるもので実際にはディスク消費しません。ディスク使用量を表示する`du
dummy.iso`を実行するとわかります。  
`dd`コマンドでも

[code]

    dd if=/dev/zero of=dummy.iso bs=1G skip=1 count=0
    
[/code]

で同じ結果を得られます。

サイズ指定について、`dd`、`truncate`共に1K=1024、1KB=1000となります。


CC BY-SA 3.0
2016-01-29T13:16:30.253
21481
2016-01-29T13:49:05.787
2016-01-29T13:49:05.787
4236
4236
21468
answer


Linux 限定ですが、比較的新し目の Linux カーネルと対応ファイルシステム(ext4,xfsなど)と util-linux
パッケージがあるなら、`fallocate`(1) で一瞬で作成することができます。sparse file にはなりません。

以下の例では 1GB (1000000000バイト) のファイルを作ります:

[code]

    $ fallocate -l 1gb dummy.iso
    
[/code]

以下の例では 1GiB (1073741824バイト) のファイルを作ります:

[code]

    $ fallocate -l 1gib dummy.iso
    
[/code]

または:

[code]

    $ fallocate -l 1g dummy.iso
    
[/code]

なおシステムコール `fallocate`(2) に対応していない NFS ※などのファイルシステムでは失敗します:

[code]

    $ fallocate -l 1g dummy.iso
    fallocate: dummy.iso: fallocate が失敗: サポートされていない操作です
    
[/code]

※ NFS 4.2 はサポートしているしているらしい。ただしオプション。


CC BY-SA 4.0
2016-01-29T16:13:53.527
21487
2019-04-30T09:33:34.420
2019-04-30T09:33:34.420
3061
3061
21468
answer