Existe uma boa ferramenta chamada pv
# On Ubuntu/Debian system
$ sudo apt-get install pv
# On Redhat/CentOS
$ sudo yum install pv
depois você pode usá-lo assim
$ zcat dbpackfile.sql.gz | pv -cN zcat | mysql -uuser -ppass dbname
Please check UPDATE 2 for my latest version
ps: consulte este link
UPDATE: parece que o link acima está quebrado, mas encontrei o mesmo artigo aqui link
UPDATE 2: solução ainda melhor com a barra de progresso FULL. Para fazer isso, você precisa usar 2 build in pv
options. Uma é --progress
para indicar a barra de progresso e a segunda é --size
para informar a pv
quão grande é o arquivo geral.
pv --progress --size UNPACKED-FILE-SIZE-IN-BYTES
.. o problema é com .gz
tamanho original do arquivo. Você precisa de alguma forma obter informações sobre o tamanho do arquivo original descompactado sem descompactá-lo, caso contrário, você perderá um tempo precioso para descompactar este arquivo duas vezes (primeira vez para pv
e segunda vez para zcat
). Mas, felizmente, você tem a opção gzip -l
que contém informações descompactadas sobre nosso arquivo gziped. Infelizmente você o tem em formato de tabela, então você precisa extrair antes de poder usá-lo. Todos juntos podem ser vistos abaixo:
gzip -l /path/to/our/database.sql.gz | sed -n 2p | awk '{print $2}'
Uff .. então a última coisa que você precisa fazer é apenas combinar todos juntos.
zcat /path/to/our/database.sql.gz | pv --progress --size 'gzip -l %s | sed -n 2p | awk '{print $2}'' | mysql -uuser -ppass dbname
Para torná-lo ainda melhor, você pode adicionar NOME de progres como este
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
Resultado final:
Importing.. : [===========================================>] 100%
UPDATE 3: Para uso rápido, crie uma função personalizada.
mysql_import() {
zcat $2 | pv --progress --size 'gzip -l %s | sed -n 2p | awk '{print $2}'' --name ' Importing.. ' | mysql -uuser -ppass $1
}
uso:
mysql_import dbname /path/to/our/database.sql.gz
Se você não sabe onde colocá-lo, leia esta resposta: link
Você pode adicionar funções entre aliases. Então você pode usar por exemplo ~/.bash_aliases
file.