Answers:
您可以使用目录列表看到一个粗略的进展。
首先,获取要还原的对象的目录列表:
pg_restore -l -f list.toc db.dump
然后,您可以逐行查看TOC列表,并比较详细输出或查询pg_stat_activity以查看TOC列表中pg_restore的位置。
不过,这只是一个粗略的估计。首先,因为TOC列表中的每个项目加载时间可能确实不同(例如,架构速度很快,但是加载大表和构建索引的数据却不然),如果使用-j,则将还原一个项目在上一个完成之前。另外,如果您不使用-L,我不确定100%pg_restore是否准确地遵循了TOC列表,但我认为确实如此。
适用于Unix / Linux环境:
可以使用Pipe Viewer(pv)实用程序跟踪备份进度。pv使用有关经过时间和已传输字节的详细信息为您的shell设置动画。
下面是使用pv和split实用程序进行转储的示例,以将较大的转储文件保留为小块。稍后将其转移到另一个位置可能很方便。
# 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"
缺点-如果使用pg_dump -Fd选项(转储到文件夹),则此方法无效。