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 pv
opzioni integrate. Uno è --progress
quello di indicare la barra di avanzamento e il secondo è --size
di dire pv
quanto è grande il file complessivo.
pv --progress --size UNPACKED-FILE-SIZE-IN-BYTES
..il problema è con la .gz
dimensione 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 pv
e seconda volta per zcat
). Ma per fortuna hai gzip -l
un'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_aliases
file.
pv
,cpipe
) funzionano in questo scenario?