C'è un bel strumento chiamato pv
# On Ubuntu/Debian system
$ sudo apt-get install pv
# On Redhat/CentOS
$ sudo yum install pv
allora ad es. puoi usarlo in questo modo
$ zcat dbpackfile.sql.gz | pv -cN zcat | mysql -uuser -ppass dbname
Controlla UPDATE 2 per la mia ultima versione
ps: controlla questo blog http://blog.larsstrand.org/2011/12/tip-pipe-viewer.html
AGGIORNAMENTO: sembra che il link sopra sia rotto ma ho trovato lo stesso articolo qui http://blog.larsstrand.no/2011/12/tip-pipe-viewer.html
AGGIORNAMENTO 2: soluzione ancora migliore con barra di avanzamento COMPLETA. Per farlo è necessario utilizzare 2 pvopzioni integrate. Uno è --progressquello di indicare la barra di avanzamento e il secondo è --sizedi dire pvquanto è grande il file complessivo.
pv --progress --size UNPACKED-FILE-SIZE-IN-BYTES
..il problema è con la .gzdimensione del file originale. In qualche modo è necessario ottenere le informazioni sulla dimensione del file originale decompresso senza decomprimerlo autonomamente, altrimenti si perderà tempo prezioso per decomprimere questo file due volte (prima volta per pve seconda volta per zcat). Ma per fortuna hai gzip -lun'opzione che contiene informazioni non compresse sul nostro file gziped. Purtroppo lo hai in formato tabella, quindi devi estrarlo prima che possa essere usato. Tutti insieme possono essere visti sotto:
gzip -l /path/to/our/database.sql.gz | sed -n 2p | awk '{print $2}'
Uff ... quindi l'ultima cosa che devi fare è combinare tutti insieme.
zcat /path/to/our/database.sql.gz | pv --progress --size `gzip -l %s | sed -n 2p | awk '{print $2}'` | mysql -uuser -ppass dbname
Per renderlo ancora più bello puoi aggiungere progressi NAME in questo modo
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
Risultato finale:
Importing.. : [===========================================>] 100%
AGGIORNAMENTO 3: per un utilizzo rapido, creare una funzione personalizzata.
mysql_import() {
zcat $2 | pv --progress --size `gzip -l %s | sed -n 2p | awk '{print $2}'` --name ' Importing.. ' | mysql -uuser -ppass $1
}
utilizzo:
mysql_import dbname /path/to/our/database.sql.gz
Se non sai dove metterlo, leggi questa risposta:
/unix//a/106606/20056
È possibile aggiungere funzioni tra gli alias. Quindi puoi usare ad esempio il ~/.bash_aliasesfile.
pv,cpipe) funzionano in questo scenario?