Es heißt schönes Werkzeug pv
# On Ubuntu/Debian system
$ sudo apt-get install pv
# On Redhat/CentOS
$ sudo yum install pv
dann kannst du es zB so benutzen
$ zcat dbpackfile.sql.gz | pv -cN zcat | mysql -uuser -ppass dbname
Bitte überprüfen Sie UPDATE 2 für meine neueste Version
ps: check this blog http://blog.larsstrand.org/2011/12/tip-pipe-viewer.html
UPDATE: Der obige Link scheint nicht zu funktionieren, aber ich habe den gleichen Artikel hier gefunden: http://blog.larsstrand.no/2011/12/tip-pipe-viewer.html
UPDATE 2: Noch bessere Lösung mit FULL Fortschrittsbalken. Dazu müssen Sie 2 eingebaute pvOptionen verwenden. Eine davon ist --progressauf Fortschrittsbalken zu zeigen und zweite ist --sizezu sagen , pvwie groß die Gesamtdatei ist.
pv --progress --size UNPACKED-FILE-SIZE-IN-BYTES
..das Problem ist mit der .gzursprünglichen Dateigröße. Sie müssen die ursprünglichen Dateigrößeninformationen irgendwie entpacken, ohne sie selbst zu entpacken. Andernfalls verlieren Sie wertvolle Zeit, um diese Datei zweimal zu entpacken (zum ersten Mal pvund zum zweiten Mal zcat). Aber zum Glück haben Sie eine gzip -lOption, die unkomprimierte Informationen über unsere gziped-Datei enthält. Leider haben Sie es im Tabellenformat, so dass Sie es extrahieren müssen, bevor Sie es verwenden können. Alles zusammen ist unten zu sehen:
gzip -l /path/to/our/database.sql.gz | sed -n 2p | awk '{print $2}'
Uff .. also das letzte, was Sie tun müssen, ist einfach alles zusammen zu kombinieren.
zcat /path/to/our/database.sql.gz | pv --progress --size `gzip -l %s | sed -n 2p | awk '{print $2}'` | mysql -uuser -ppass dbname
Um es noch schöner zu machen, können Sie Progres NAME so hinzufügen
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
Endergebnis:
Importing.. : [===========================================>] 100%
UPDATE 3: Zur schnellen Verwendung können Sie benutzerdefinierte Funktionen erstellen.
mysql_import() {
zcat $2 | pv --progress --size `gzip -l %s | sed -n 2p | awk '{print $2}'` --name ' Importing.. ' | mysql -uuser -ppass $1
}
Verwendung:
mysql_import dbname /path/to/our/database.sql.gz
Wenn Sie nicht wissen, wo Sie es ablegen sollen, lesen Sie diese Antwort:
/unix//a/106606/20056
Sie können Funktionen unter Aliase hinzufügen. So können Sie zB ~/.bash_aliasesDatei verwenden.
pv,cpipe) in diesem Szenario?