좋은 도구가 있습니다 pv
# On Ubuntu/Debian system
$ sudo apt-get install pv
# On Redhat/CentOS
$ sudo yum install pv
다음과 같이 사용할 수 있습니다.
$ zcat dbpackfile.sql.gz | pv -cN zcat | mysql -uuser -ppass dbname
최신 버전은 UPDATE 2를 확인하십시오.
추신 :이 블로그를 확인 http://blog.larsstrand.org/2011/12/tip-pipe-viewer.html
업데이트 : 위의 링크가 끊어진 것처럼 보이지만 http://blog.larsstrand.no/2011/12/tip-pipe-viewer.html 에서 동일한 기사를 찾았습니다.
업데이트 2 : FULL 진행률 표시 줄이 더 나은 솔루션입니다. 그러기 위해서는 2 가지 빌드 pv
옵션 을 사용해야 합니다. 하나는 --progress
진행률 표시 줄을 표시하고 두 번째 --size
말 pv
전체 파일이 얼마나 큰.
pv --progress --size UNPACKED-FILE-SIZE-IN-BYTES
.. 문제는 .gz
원본 파일 크기에 있습니다. 압축을 풀지 않고 압축을 푼 원본 파일 크기 정보를 가져와야합니다. 그렇지 않으면이 파일의 압축을 풀 때 소중한 시간이 두 번 (첫 번째 pv
및 두 번째 zcat
) 손실됩니다 . 그러나 다행히 gzip -l
gzip 파일에 대한 압축되지 않은 정보가 포함 된 옵션이 있습니다. 불행히도 테이블 형식으로되어 있으므로 사용하기 전에 추출해야합니다. 아래는 모두 함께 볼 수 있습니다.
gzip -l /path/to/our/database.sql.gz | sed -n 2p | awk '{print $2}'
Uff .. 마지막으로해야 할 일은 모두 함께 결합하는 것입니다.
zcat /path/to/our/database.sql.gz | pv --progress --size `gzip -l %s | sed -n 2p | awk '{print $2}'` | mysql -uuser -ppass dbname
더 좋게 만들려면 다음과 같이 progres NAME을 추가하십시오.
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
최종 결과:
Importing.. : [===========================================>] 100%
업데이트 3 : 빠른 사용법을 위해 사용자 정의 기능을 만드십시오.
mysql_import() {
zcat $2 | pv --progress --size `gzip -l %s | sed -n 2p | awk '{print $2}'` --name ' Importing.. ' | mysql -uuser -ppass $1
}
용법:
mysql_import dbname /path/to/our/database.sql.gz
어디에 두어야할지 모른다면 /unix//a/106606/20056을 읽어보십시오.
별칭 사이에 기능을 추가 할 수 있습니다. 예를 들어 ~/.bash_aliases
파일을 사용할 수 있습니다 .
pv
,cpipe
)가 작동합니까?