Apakah di Linux ada program yang dapat menghitung berapa banyak data yang dihasilkan suatu program?
Sebagai contoh, jika saya ingin mengambil cadangan dari database MySQL saya biasanya akan saya lakukan
mysqldump > dumpfile.sql
Alih-alih, saya ingin mengarahkan ulang /dev/null
tetapi menghitung berapa banyak ruang disk yang akan digunakan, seperti
mysqldump | fancy_space_calc_program
Keluaran:
123456789 Bytes would have been used
Catatan, cadangan MySQL hanyalah sebuah contoh. Saya sangat menyadari bagaimana saya bisa memperkirakan ukuran sebelumnya, jadi tolong tidak ada komentar tentang itu.
linux
disk-space
fancyPants
sumber
sumber
Jawaban:
Diambil dari /programming/13418688/use-pipe-with-du-to-compute-size-of-stdin
Tentu saja, ini hanya byte mentah, dan tidak ada hubungannya dengan ukuran sektor dll, jadi bawa dengan sebutir garam ...
sumber
wc
akan membuang data yang tidak lagi dibutuhkan secepat praktis.wc
di komputer saya dengan mudah menangani data stdin 40 GB, dengan hanya memori 8 GB.wc -c
tidak menghitung karakter - ia menghitung byte.wc -m
menghitung karakter. Perbedaan yang paling jelas adalah karakter multi-byte seperti pada UTF-16 atau Windows\r\n
(dua byte dalam ASCII, tetapi satu karakter). Itu tidak selalu membutuhkan banyak buffering sebagian besar waktu, tetapi Unicode dapat memiliki jumlah byte yang sewenang-wenang untuk mewakili karakter tunggal; bukan sesuatu yang akan Anda lihat dalam data tepercaya, tetapi kemungkinan buffer overflow vector.Perintah pv sempurna untuk ini.
Saya pikir hal di atas akan memberi Anda perintah yang tepat yang Anda inginkan, mungkin perlu beberapa penyesuaian seperti
pv -b | > /dev/null
saya tidak bisa menguji sekarang-b
memberi Anda nilai dalam byte.sumber
pv
sebelumnya .. Anda belajar sesuatu yang baru setiap hari :)Anda dapat menggunakannya
dd
untuk itu, seperti inicat /dev/zero | dd status=progress of=/dev/null bs=4M
.Ini memberi Anda beberapa data selama dan setelah eksekusi tentang jumlah data yang diteruskan ke sana, seperti:
sumber