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 pv
Optionen verwenden. Eine davon ist --progress
auf Fortschrittsbalken zu zeigen und zweite ist --size
zu sagen , pv
wie groß die Gesamtdatei ist.
pv --progress --size UNPACKED-FILE-SIZE-IN-BYTES
..das Problem ist mit der .gz
ursprü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 pv
und zum zweiten Mal zcat
). Aber zum Glück haben Sie eine gzip -l
Option, 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_aliases
Datei verwenden.
pv
,cpipe
) in diesem Szenario?