Untuk tujuan pengujian, saya harus membuat file dengan ukuran tertentu (untuk menguji batas unggahan).
Apa perintah untuk membuat file dengan ukuran tertentu di Linux?
linux
command-line
Grundlefleck
sumber
sumber
Jawaban:
Di mana
file_size
ukuran file uji Anda dalam bytesumber
dd
memiliki batas 2 ^ 32 untuk nilai-nilai, sehingga untuk membuat file lebih besar dari 4 GB, ada trik:dd if=/dev/zero of=test bs=1M count=<size in megabytes>
.Tolong, modern lebih mudah, dan lebih cepat. Di Linux, (pilih satu)
Ini perlu untuk dinyatakan bahwa
truncate
pada sistem file mendukung file jarang akan membuat file jarang danfallocate
tidak akan. Sebuah file jarang adalah salah satu di mana unit alokasi yang membentuk file tidak benar-benar dialokasikan sampai digunakan. Namun, meta-data untuk file tersebut akan memakan ruang yang cukup besar tetapi kemungkinan tidak ada di dekat ukuran sebenarnya file tersebut. Anda harus berkonsultasi dengan sumber daya tentang file jarang untuk informasi lebih lanjut karena ada kelebihan dan kekurangan untuk jenis file ini. File non-sparse memiliki blok (unit alokasi) yang dialokasikan sebelumnya yang berarti ruang disediakan sejauh sistem file melihatnya. Jugafallocate
tidaktruncate
akan mengatur konten file ke nilai yang ditentukan sepertidd
, alih-alih isi file yang dialokasikan denganfallocate
atautruncate
mungkin nilai sampah apa pun yang ada di unit yang dialokasikan selama pembuatan dan perilaku ini mungkin atau mungkin tidak diinginkan. Inidd
adalah yang paling lambat karena itu benar-benar menulis nilai atau potongan data ke seluruh aliran file seperti yang ditentukan dengan opsi baris perintah itu.Perilaku ini berpotensi berbeda - tergantung pada sistem file yang digunakan dan kesesuaian sistem file tersebut dengan standar atau spesifikasi apa pun. Oleh karena itu disarankan agar penelitian yang tepat dilakukan untuk memastikan bahwa metode yang tepat digunakan.
sumber
truncate
. Ini menghasilkan file berukuran nol menggunakan sintaks di atas. 'Halaman manual' untukfallocate
mengatakan bahwa file yang dibuatnya penuh dengan kosongspace
daripada data. Tampaknya itu tidak akan berguna untuk beberapa kasus yang diharapkan seperti "berapa lama waktu yang dibutuhkan untuk menyalin file 1G".brew install coreutils
. Ini akan menambah g di depan perintah, sehingga Anda harus menjalankannya seperti ini:gtruncate -s 10G foo
. Semoga ini membantu!NTFS
partisi.Hanya untuk menindaklanjuti posting Tom , Anda dapat menggunakan dd untuk membuat file jarang juga:
Ini akan membuat file dengan "lubang" di dalamnya pada sebagian besar unix - data tidak akan benar-benar ditulis ke disk, atau mengambil ruang apa pun sampai sesuatu selain nol ditulis ke dalamnya.
sumber
count=0
,bs * seek
menjadi ukuran filePada OSX (dan Solaris, tampaknya),
mkfile
perintah juga tersedia:Ini membuat file 10 GB bernama "big_file". Menemukan pendekatan ini di sini.
sumber
truncate
danfallocate
tidak tersedia.dd
juga berfungsi seperti dijelaskan di atas meskipunm
untuk megabyte, tidakM
.Gunakan perintah ini:
Untuk membuat file besar (kosong), atur
$INPUT-FILE=/dev/zero
.Ukuran total file akan menjadi
$BLOCK-SIZE * $NUM-BLOCKS
.File baru akan dibuat
$OUTPUT-FILE
.sumber
Anda dapat melakukannya secara terprogram:
Pendekatan ini sangat berguna untuk kemudian mmap file ke dalam memori.
gunakan perintah berikut untuk memeriksa apakah file memiliki ukuran yang benar:
Hati-hati:
mungkin akan mencetak 0 karena dialokasikan sebagai file Jarang jika didukung oleh sistem file Anda.
lihat juga: man 2 open dan man 2 truncate
sumber
Anda bisa melakukan:
Di mana Anda mengganti 100 dengan jumlah byte yang ingin Anda tulis.
sumber
Beberapa jawaban ini telah Anda gunakan
/dev/zero
untuk sumber data Anda. Jika kecepatan pengujian jaringan pengujian Anda, ini mungkin bukan ide terbaik jika aplikasi Anda melakukan kompresi apa pun, file yang penuh dengan nol kompres dengan sangat baik. Menggunakan perintah ini untuk menghasilkan fileSaya dapat memampatkan
upload_test
hingga sekitar 200 byte. Jadi Anda bisa menempatkan diri Anda dalam situasi di mana Anda pikir Anda mengunggah file 10KB tetapi sebenarnya akan jauh lebih sedikit.Apa yang saya sarankan adalah menggunakan
/dev/urandom
bukan/dev/zero
. Saya tidak bisa memampatkan output/dev/urandom
sangat banyak sekali.sumber
/dev/zero
, jadi/dev/urandom
bagus.sumber
Ada banyak jawaban, tetapi tidak ada yang menjelaskan dengan baik apa lagi yang bisa dilakukan. Melihat ke halaman manual untuk dd , dimungkinkan untuk lebih menentukan ukuran file.
Ini akan membuat /tmp/zero_big_data_file.bin diisi dengan nol, yang memiliki ukuran 20 megabyte:
Ini akan membuat /tmp/zero_1000bytes_data_file.bin diisi dengan nol, yang memiliki ukuran 1000 byte:
atau
sumber
Sebagai perintah shell:
sumber
Ini akan menghasilkan file teks 4 MB dengan karakter acak di direktori saat ini dan namanya "4mb.txt" Anda dapat mengubah parameter untuk menghasilkan berbagai ukuran dan nama.
sumber
Gunakan
fallocate
jika Anda tidak ingin menunggu disk.Contoh:
Pemakaian:
sumber