Câu trả lời:
Bạn có thể thấy một tiến trình sơ bộ bằng cách sử dụng danh sách TOC.
Đầu tiên, lấy danh sách TOC của các đối tượng được khôi phục:
pg_restore -l -f list.toc db.dump
Sau đó, bạn có thể xem từng dòng danh sách TOC và so sánh đầu ra của verbose hoặc truy vấn pg_stat_activity để xem vị trí nào trong danh sách TOC là pg_restore.
Nó chỉ là một ước tính sơ bộ mặc dù. Đầu tiên bởi vì mỗi mục từ danh sách TOC có thể mất thời gian tải khác nhau (ví dụ: lược đồ nhanh, nhưng tải dữ liệu của các bảng lớn và chỉ mục tòa nhà thì không) và nếu bạn sử dụng -j, bạn sẽ có một mục được khôi phục trước khi một cái trước đã kết thúc. Ngoài ra, tôi không chắc chắn 100% nếu pg_restore theo dõi danh sách TOC chính xác nếu bạn không sử dụng -L, nhưng tôi nghĩ là có.
Hợp lệ cho môi trường Unix / Linux:
Tiện ích Tube Viewer (pv) có thể được sử dụng theo dõi tiến trình sao lưu. Các pv hoạt hình shell của bạn với các chi tiết về thời gian trôi qua và các byte được chuyển.
Dưới đây là ví dụ về việc bán phá giá bằng cách sử dụng các tiện ích pv và split để giữ các tệp kết xuất lớn trong các phần nhỏ. Nó có thể thuận tiện để chuyển nó sau này đến một vị trí khác.
# dump the PREDATA in clear text into a .PREDATA.SQL text file
pg_dump -s -o --section=pre-data -n $schemaname $DatabaseConnString | pv | split -d -b $chunksize - $backuppath/$backupfilename".PREDATA.sql"
# dump the POSTDATA in clear text into a .PREDATA.SQL text file
pg_dump -s -o --section=post-data -n $schemaname $DatabaseConnString | pv | split -d -b $chunksize - $backuppath/$backupfilename".POSTDATA.sql"
# dump the DATA into the .DATA.dump compressed (binary) file
pg_dump -Fc --section=data -n $schemaname $DatabaseConnString | pv | split -d -b $chunksize - $backuppath/$backupfilename".DATA.dump"
Hạn chế - phương pháp này không hoạt động, nếu tùy chọn pg_dump -Fd (kết xuất vào thư mục) được sử dụng.