Ada alat bagus yang disebut pv
# On Ubuntu/Debian system
$ sudo apt-get install pv
# On Redhat/CentOS
$ sudo yum install pv
lalu mis. Anda bisa menggunakannya seperti ini
$ zcat dbpackfile.sql.gz | pv -cN zcat | mysql -uuser -ppass dbname
Silakan periksa UPDATE 2 untuk versi terbaru saya
ps: periksa blog ini http://blog.larsstrand.org/2011/12/tip-pipe-viewer.html
UPDATE: sepertinya tautan di atas rusak tetapi saya menemukan artikel yang sama di sini http://blog.larsstrand.no/2011/12/tip-pipe-viewer.html
UPDATE 2: Solusi yang lebih baik lagi dengan progress bar FULL. Untuk melakukannya, Anda perlu menggunakan 2 pv
opsi bawaan. Salah satunya adalah --progress
untuk menunjukkan progress bar dan kedua adalah --size
untuk mengetahui pv
seberapa besar keseluruhan file.
pv --progress --size UNPACKED-FILE-SIZE-IN-BYTES
Masalahnya adalah dengan .gz
ukuran file asli. Anda perlu entah bagaimana mendapatkan informasi ukuran file asli tanpa membongkar sendiri, jika tidak, Anda akan kehilangan waktu berharga untuk membongkar file ini dua kali (pertama kali untuk pv
kedua kalinya zcat
). Tapi untungnya Anda memiliki gzip -l
opsi yang berisi informasi yang tidak terkompresi tentang file gziped kami. Sayangnya Anda memilikinya dalam format tabel sehingga Anda perlu mengekstraksi sebelum dapat menggunakannya. Semuanya bisa dilihat di bawah ini:
gzip -l /path/to/our/database.sql.gz | sed -n 2p | awk '{print $2}'
Uff .. jadi hal terakhir yang perlu Anda lakukan hanyalah menggabungkan semuanya.
zcat /path/to/our/database.sql.gz | pv --progress --size `gzip -l %s | sed -n 2p | awk '{print $2}'` | mysql -uuser -ppass dbname
Untuk membuatnya lebih bagus, Anda dapat menambahkan progres NAME seperti ini
zcat /path/to/our/database.sql.gz | pv --progress --size `gzip -l %s | sed -n 2p | awk '{print $2}'` --name ' Importing.. ' | mysql -uuser -ppass dbname
Hasil akhir:
Importing.. : [===========================================>] 100%
UPDATE 3: Untuk penggunaan cepat buat fungsi kustom.
mysql_import() {
zcat $2 | pv --progress --size `gzip -l %s | sed -n 2p | awk '{print $2}'` --name ' Importing.. ' | mysql -uuser -ppass $1
}
pemakaian:
mysql_import dbname /path/to/our/database.sql.gz
Jika Anda tidak tahu di mana harus meletakkannya, baca jawaban ini:
/unix//a/106606/20056
Anda dapat menambahkan fungsi di antara alias. Jadi Anda bisa menggunakan ~/.bash_aliases
file mis .
pv
,cpipe
) berfungsi dalam skenario ini?