Saya akan mengkompres direktori besar dan saya ingin tahu seberapa besar, tepatnya, file yang dihasilkan.
Saya sudah mencoba menggunakan du
:
$ tar -cv dir | du -h -
du: cannot access '-': No such file or directory
Kemudian saya mencoba menggunakan versi file '-':
$ tar -cv dir | du -h /dev/stdin
1.0K
Saya yakin nomor ini tidak akurat. Bagaimana saya bisa mendapatkan ukuran stdin?
wc
berlebihan-
maka Anda tidak perlucut
perintah berikutnya juga.Dengan GNU
tar
Anda bisa melakukannya:... yang akan menghasilkan output seperti ...
... di stderr. Demikian pula, dengan tar apa pun (atau streaming) yang dapat Anda gunakan
dd
untuk mengirimkan laporan tentang jumlah byte. Ini mungkin atau mungkin tidak disukaiwc
, tetapidd
standar untuk ukuran blok 512 byte - yang identik dengantar
ukuran blok. Jika PIPE_BUF sistem Anda cukup besar, Anda bahkan dapat memperluasdd
ukuran blok agar sesuaitar
dengan ukuran catatan - yaitu 20 blok, atau 10240 byte. Seperti ini:Ini mungkin atau mungkin tidak menawarkan solusi yang lebih baik daripada
wc
.Baik dalam kasus penggunaan
dd
maupuntar
kasus, Anda sebenarnya tidak perlu membuang arus. Saya mengarahkan ulang ke/dev/null
atas - tetapi saya bisa dengan mudah diarahkan ke beberapa file dan masih menerima laporan tentang ukurannya pada saat itu ditulis.sumber
dd
(dibandingkan denganwc
).dd
keluaran itu diteruskan - ke kompresor, katakanlah - dan untuk alasan apa pun Anda merasa perlu mengetahui ukuran mentah dari arsip dan yang dikompresi. Juga berguna adalah untuk mendapatkan laporan instan tentang jumlah catatan -tar
bukan hanya arsip, tetapi format aliran. Ini dapat digunakan dengan cara selain hanya menyimpan ke sekelompok file ke beberapa file lainnya. Ini sering berguna untuk memblokir aliran sebelum memodifikasinya. Pada masing-masing batas catatan itu adalah seluruh blok NUL.Saya sarankan:
Sederhana
c
(tidak perlu memimpin-
) digunakan untuk membuattar
arsip,f
menentukan file output dan-
menunjukkan bahwa itu adalah stdout . (Perhatikan bahwa jika Anda ingin hanya ukuran dan ada banyak file di bawah dir Anda mungkin agak omittar
'sv
karena alasan kinerja.)sumber
tar
s di masa lalu di mana menentukan file tar (dengan demikianf
dan-
) diperlukan. - Hanya mencarinya; tanpaf
-
yangtar
diasumsikan/etc/mt0
sebagai default./etc/mt0
sebenarnya berarti - "pita magnetik" ;-) Saya akan tertarik dengan bagaimana Solaristar
berperilaku (karena Solaris adalah salah satu OS kontemporer yang diketahui masih memiliki barang yang benar-benar tua/bin
).-f
benderatar
?Kata-kata dari pertanyaan Anda cocok dengan
tar ... | wc -c
jawaban di atas. Saya awalnya membaca pertanyaan Anda dengan asumsi diam-diam bahwa Anda ingin ukurannya dilaporkan saat sedang membuat file tar (mungkin keluaran tar kemudian disalurkan melalui tautan jaringan?).Dalam hal ini, saya sarankan
pv
- penampil pipa. Saya telah melihat referensi untuk itu tetapi belum memiliki kesempatan untuk bermain dengannya.Referensi
sumber