Є приємний інструмент під назвою pv
# On Ubuntu/Debian system
$ sudo apt-get install pv
# On Redhat/CentOS
$ sudo yum install pv
тоді, наприклад, ви можете використовувати його так
$ zcat dbpackfile.sql.gz | pv -cN zcat | mysql -uuser -ppass dbname
Перевірте ОНОВЛЕННЯ 2 для моєї останньої версії
ps: перевірте цей блог http://blog.larsstrand.org/2011/12/tip-pipe-viewer.html
ОНОВЛЕННЯ: здається, що вище посилання порушено, але я знайшов ту саму статтю тут http://blog.larsstrand.no/2011/12/tip-pipe-viewer.html
ОНОВЛЕННЯ 2: Ще краще рішення з ПОВНОЮ панеллю прогресу. Для цього вам потрібно скористатися двома pv
параметрами збірки . Одне - --progress
вказати смугу прогресу, а друге - --size
сказати, pv
наскільки великий загальний файл.
pv --progress --size UNPACKED-FILE-SIZE-IN-BYTES
.. проблема в .gz
оригінальному розмірі файлу. Вам потрібно якось отримати розпаковану оригінальну інформацію про розмір файлу, не розпаковуючи її самостійно, інакше ви втратите дорогоцінний час, щоб розпакувати цей файл вдвічі (перший раз за pv
другий раз zcat
). Але на щастя, у вас є gzip -l
варіант, який містить нестиснуту інформацію про наш gziped файл. На жаль, у вас він є у форматі таблиці, тому його потрібно витягнути, перш ніж він зможе його використовувати. Все разом можна побачити нижче:
gzip -l /path/to/our/database.sql.gz | sed -n 2p | awk '{print $2}'
Uff .. тому останнє, що вам потрібно зробити, це просто поєднати все разом.
zcat /path/to/our/database.sql.gz | pv --progress --size `gzip -l %s | sed -n 2p | awk '{print $2}'` | mysql -uuser -ppass dbname
Щоб зробити це ще приємніше, ви можете додати прогреси NAME, як це
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
Кінцевий результат:
Importing.. : [===========================================>] 100%
ОНОВЛЕННЯ 3: Для швидкого використання створіть власну функцію.
mysql_import() {
zcat $2 | pv --progress --size `gzip -l %s | sed -n 2p | awk '{print $2}'` --name ' Importing.. ' | mysql -uuser -ppass $1
}
використання:
mysql_import dbname /path/to/our/database.sql.gz
Якщо ви не знаєте, куди його покласти, прочитайте цю відповідь:
/unix//a/106606/20056
Ви можете додавати функції серед псевдонімів. Таким чином, ви можете використовувати, наприклад, ~/.bash_aliases
файл.
pv
,cpipe
) у цьому сценарії?