Bagaimana saya bisa membuat file (mis. Menggunakan touch
perintah atau cara serupa lainnya), tetapi dengan ukuran tertentu (mis. 14 MB)?
Kasus penggunaan adalah untuk menguji FTP dengan berbagai ukuran file. Jika kita dapat membuat file dengan ukuran tertentu, akan berguna untuk memverifikasi transfer FTP, dll.
linux
command-line
fasil
sumber
sumber
Jawaban:
Gunakan
truncate
:Dari
man truncate
:Catatan:
truncate
mungkin tidak tersedia di sistem Anda, misalnya pada Mac OS X itu tidak diinstal secara default (tetapi Anda dapat dengan mudah menginstalnya, menggunakan macports misalnya). Dalam kasus ini, Anda mungkin perlu menggunakandd
atauhead
sebagai gantinya.sumber
touch
tidak diperlukan meskipun, Anda hanya dapat menjalankantruncate -s 14M filename
itu akan menciptakanfilename
langsung.EDIT: Cara termudah adalah mungkin
truncate
dari Ashutosh Vishwa Bandhu ini jawaban , tapi seperti yang ditunjukkan oleh @ offby1 yang menciptakan file jarang yang mungkin tidak apa yang Anda inginkan. Solusi di bawah ini membuat file normal dan penuh.Perintah berikut membuat file 14MB bernama
foo
:fallocate
(terima kasih kepada @Breakthrough yang menyarankannya dalam komentar dan memberikan suara untuk jawaban Ahmed Masud di bawah ini yang juga menyebutkannya.)Perintah ini sangat mengesankan karena secepat
truncate
(sesaat) terlepas dari ukuran file yang diinginkan (tidak seperti solusi lain yang akan lambat untuk file besar) dan membuat file normal, bukan yang jarang:Buat file yang diisi dengan data acak
atau
Buat file yang diisi dengan
\0
s:atau
Buat file yang diisi dengan 14MB data pertama dari file lain:
Buat file yang diisi dengan 14MB data terakhir dari file lain:
Dalam semua contoh di atas, file tersebut akan menjadi
14*1000*1000
jika Anda inginkan14*1024*1024
, gantiMB
denganM
. Sebagai contoh:fallocate
hanya berurusan dengan byte, jadi Anda harus melakukan (14 * 1024 * 1024 = 14680064)sumber
dd
jika ada pendekatan yang lebih sederhana, kurang berpotensi merusak.dd
solusi memiliki alternatif non-dd.dd
perintah pada halaman wiki benar-benar berbeda dan tidak menggunakan/dev/zero
. Adapun apakahM
atauMB
lebih logis, lakukan dengan pengembang. Halaman manual head , tail dan dd semuanya dengan jelas menyatakan bahwa "MB = 1000 * 1000, M = 1024 * 1024". Ini mungkin berbeda pada * nixes lain.PERINGATAN
dd
akan secara diam-diam menimpa apa pun yang Anda punya hak untuk menulis, jika Anda menentukannya secara sukarela atau tidak sengaja. Pastikan Anda mengertidd
, misalnya. dengan membacadd --help
, dan Anda tidak mengacaukan baris perintah dd Anda atau Anda dapat dengan mudah membuat kehilangan data yang ireversibel - bahkan total .Untuk memulai,
if=
adalah file input danof=
adalah file output . Selalu periksa kembali apakah Anda sudah benar, sebelum menjalankan perintah. :)sumber
Gunakan sihir
dd
;) halaman manualmenyebabkan 14MB * 1024 = 14336KB, atau:
Dan Anda akan mendapatkan file output.dat 14mb, diisi dengan nol: D
sumber
Ini harus menjadi cara tercepat untuk melakukannya:
Kalau tidak, cukup tuliskan program C atau perl cepat dan kotor yang melakukan pencarian ke posisi yang tepat dan menulis satu byte. Ini BANYAK lebih cepat daripada benar-benar membuang data ke blok.
Jika Anda ingin menghindari file jarang kemudian di Linux (dan sistem mungkin lainnya) Anda dapat menggunakan
fallocate -l <length>
dariutil-linux
.Jika itu tidak tersedia, dan Anda memiliki sistem yang sesuai dengan POSIX maka Anda dapat menulis program yang cepat dan kotor menggunakan panggilan pustaka posix_fallocate (). posix_fallocate menjamin alokasi rentang yang ditentukan sehingga Anda tidak akan mendapatkan disk-penuh tentang penggunaan selanjutnya dari rentang jika berhasil kembali
sumber
Meskipun
dd
cara portabel untuk melakukannya, perintahmkfile
danxfs_mkfile
ditulis khusus untuk tujuan ini dan lebih cepat:Tangkapannya adalah bahwa tidak ada perintah yang tersedia secara universal, sehingga tidak baik untuk menulis skrip portabel. Namun, jika saya melakukannya secara interaktif melalui baris perintah, itu adalah perintah yang saya gunakan.
Secara default mereka membuat file tanpa isi dan file jarang (atau "berlubang") . Mereka berdua mengambil
-n
opsi untuk membuat file yang jarang.sumber
Ada opsi lain dengan Perl:
perl -e 'print "a" x 1024' > file.txt
Ini akan membuat file 1KB. Ganti 1024 dengan nomor yang Anda suka.
sumber