Saya tahu cara membuat file kosong:
touch /var/tmp/nullbytes
tetapi bagaimana saya bisa membuat file 1MB yang hanya berisi nullbytes pada commandline dengan bash?
Saya tahu cara membuat file kosong:
touch /var/tmp/nullbytes
tetapi bagaimana saya bisa membuat file 1MB yang hanya berisi nullbytes pada commandline dengan bash?
Jawaban:
Dengan GNU truncate:
truncate -s 1M nullbytes
(dengan asumsi nullbytestidak ada sebelumnya) akan membuat file jarang 1 mebibyte. Itu adalah file yang muncul diisi dengan nol tetapi itu tidak memakan ruang pada disk.
Tanpa truncate, Anda bisa menggunakan dd:
dd bs=1048576 seek=1 of=nullbytes count=0
(dengan beberapa ddimplementasi, Anda dapat mengganti 1048576 dengan 1M)
Jika Anda lebih suka ruang disk dialokasikan , di Linux dan beberapa sistem file, Anda bisa melakukan:
fallocate -l 1M nullbytes
Itu mengalokasikan ruang tanpa benar-benar menulis data ke disk (ruang dicadangkan tetapi ditandai sebagai tidak diinisialisasi).
dd < /dev/zero bs=1048576 count=1 > nullbytes
Akan benar-benar menulis nol ke disk. Itu yang paling efisien, tetapi jika Anda perlu drive Anda untuk berputar ketika mengakses file itu, itu yang Anda ingin pergi untuk.
Atau cara @ mikeserv untuk mengelabui ddmenghasilkan byte NUL:
dd bs=1048576 count=1 conv=sync,noerror 0> /dev/null > nullbytes
Alternatif dengan GNU headyang tidak melibatkan harus menentukan ukuran blok (1M OK, tapi 10G misalnya tidak mau):
head -c 1M < /dev/zero > nullbytes
Atau untuk mendapatkan bilah kemajuan:
pv -Ss 1M < /dev/zero > nullbytes
truncateuntuk membuat file kosong untuk digunakan sebagai volume swap ... ini tidak akan berhasil! Gunakan dddalam hal ini sebagai gantinya.
dddapat membuat file jarang seperti yang saya tunjukkan juga.
bs=1kx1k. Atau <&1 dd bs=1kx1k conv=sync,noerror count="$rpt" | cat >fileuntuk literal menulis ke disk. Tidak 100% pada seberapa banyak efisiensi yang mungkin hilang dalam memaksa kesalahan baca.