Có một công cụ hay pv
# On Ubuntu/Debian system
$ sudo apt-get install pv
# On Redhat/CentOS
$ sudo yum install pv
sau đó, ví dụ bạn có thể sử dụng nó như thế này
$ zcat dbpackfile.sql.gz | pv -cN zcat | mysql -uuser -ppass dbname
Vui lòng kiểm tra CẬP NHẬT 2 cho phiên bản mới nhất của tôi
ps: kiểm tra blog này http://blog.larsstrand.org/2011/12/tip-pipe-viewer.html
CẬP NHẬT: có vẻ như liên kết ở trên bị hỏng nhưng tôi tìm thấy cùng một bài viết ở đây http://blog.larsstrand.no/2011/12/tip-pipe-viewer.html
CẬP NHẬT 2: Giải pháp thậm chí tốt hơn với thanh tiến trình FULL. Để làm điều đó bạn cần sử dụng 2 pv
tùy chọn xây dựng . Một là --progress
chỉ ra thanh tiến trình và thứ hai là --size
cho biết pv
tệp tổng thể lớn đến mức nào.
pv --progress --size UNPACKED-FILE-SIZE-IN-BYTES
.. vấn đề là với .gz
kích thước tập tin gốc. Bạn cần bằng cách nào đó lấy thông tin kích thước tệp gốc được giải nén mà không tự giải nén nó, nếu không bạn sẽ mất thời gian quý báu để giải nén tệp này hai lần (lần đầu tiên pv
và lần thứ hai zcat
). Nhưng may mắn thay, bạn có gzip -l
tùy chọn chứa thông tin không nén về tệp được nén của chúng tôi. Thật không may bạn có nó ở định dạng bảng vì vậy bạn cần giải nén trước khi có thể sử dụng nó. Tất cả cùng nhau có thể được nhìn thấy dưới đây:
gzip -l /path/to/our/database.sql.gz | sed -n 2p | awk '{print $2}'
Uff .. vì vậy điều cuối cùng bạn cần làm chỉ là kết hợp tất cả lại với nhau.
zcat /path/to/our/database.sql.gz | pv --progress --size `gzip -l %s | sed -n 2p | awk '{print $2}'` | mysql -uuser -ppass dbname
Để làm cho nó thậm chí còn đẹp hơn, bạn có thể thêm progres NAME như thế này
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
Kết quả cuối cùng:
Importing.. : [===========================================>] 100%
CẬP NHẬT 3: Để sử dụng nhanh chóng tạo chức năng tùy chỉnh.
mysql_import() {
zcat $2 | pv --progress --size `gzip -l %s | sed -n 2p | awk '{print $2}'` --name ' Importing.. ' | mysql -uuser -ppass $1
}
sử dụng:
mysql_import dbname /path/to/our/database.sql.gz
Nếu bạn không biết đặt nó ở đâu, hãy đọc câu trả lời này:
/unix//a/106606/20056
Bạn có thể thêm các chức năng giữa các bí danh. Vì vậy, bạn có thể sử dụng ~/.bash_aliases
tập tin ví dụ .
pv
,cpipe
) làm việc trong kịch bản này?