Il y a un bel outil appelé pv
# On Ubuntu/Debian system
$ sudo apt-get install pv
# On Redhat/CentOS
$ sudo yum install pv
alors par exemple vous pouvez l'utiliser comme ceci
$ zcat dbpackfile.sql.gz | pv -cN zcat | mysql -uuser -ppass dbname
Veuillez vérifier UPDATE 2 pour ma dernière version
ps: consultez ce blog http://blog.larsstrand.org/2011/12/tip-pipe-viewer.html
MISE À JOUR: il semble que le lien ci-dessus soit rompu mais j'ai trouvé le même article ici http://blog.larsstrand.no/2011/12/tip-pipe-viewer.html
MISE À JOUR 2: encore meilleure solution avec la barre de progression FULL. Pour ce faire, vous devez utiliser 2 pv
options de build . La première consiste --progress
à indiquer la barre de progression et la seconde --size
à indiquer pv
la taille du fichier global.
pv --progress --size UNPACKED-FILE-SIZE-IN-BYTES
..le problème vient de .gz
la taille du fichier d'origine. Vous devez en quelque sorte obtenir des informations sur la taille du fichier d'origine sans le décompresser, sinon vous perdrez un temps précieux pour décompresser ce fichier deux fois (la première fois pv
et la deuxième fois pour zcat
). Mais heureusement, vous avez une gzip -l
option qui contient des informations non compressées sur notre fichier gziped. Malheureusement, vous l'avez sous forme de tableau, vous devez donc l'extraire avant de pouvoir l'utiliser. Tous ensemble peuvent être vus ci-dessous:
gzip -l /path/to/our/database.sql.gz | sed -n 2p | awk '{print $2}'
Uff .. donc la dernière chose que vous devez faire est simplement de combiner tous ensemble.
zcat /path/to/our/database.sql.gz | pv --progress --size `gzip -l %s | sed -n 2p | awk '{print $2}'` | mysql -uuser -ppass dbname
Pour le rendre encore plus agréable, vous pouvez ajouter des programmes NAME comme celui-ci
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
Résultat final:
Importing.. : [===========================================>] 100%
MISE À JOUR 3: Pour une utilisation rapide, créez une fonction personnalisée.
mysql_import() {
zcat $2 | pv --progress --size `gzip -l %s | sed -n 2p | awk '{print $2}'` --name ' Importing.. ' | mysql -uuser -ppass $1
}
usage:
mysql_import dbname /path/to/our/database.sql.gz
Si vous ne savez pas où le mettre, lisez cette réponse:
/unix//a/106606/20056
Vous pouvez ajouter des fonctions parmi les alias. Vous pouvez donc utiliser par exemple un ~/.bash_aliases
fichier.
pv
,cpipe
) fonctionnent-ils dans ce scénario?