Respuestas:
Puede ver un progreso aproximado utilizando la lista TOC.
Primero, obtenga la lista TOC de objetos para restaurar:
pg_restore -l -f list.toc db.dump
Luego, puede ver la lista de TOC línea por línea y comparar el resultado de pg_stat_activity detallado o de consulta para ver en qué parte de la lista de TOC se encuentra pg_restore.
Sin embargo, es solo una estimación aproximada. Primero, porque cada elemento de la lista TOC puede tardar un tiempo realmente diferente en cargarse (por ejemplo, los esquemas son rápidos, pero la carga de datos de tablas grandes y la creación de índices no lo son), y si usa -j, se restaurará un elemento antes de que uno anterior haya terminado. Además, no estoy 100% seguro si pg_restore sigue la lista TOC precisamente si no usa -L, pero creo que sí.
Válido para entornos Unix / Linux:
La utilidad Pipe Viewer (pv) se puede utilizar para rastrear el progreso de la copia de seguridad. El pv anima su shell con detalles sobre el tiempo transcurrido y los bytes transferidos.
A continuación se muestra el ejemplo de volcado utilizando las utilidades pv y split para mantener los archivos de volcado grandes en pequeños fragmentos. Puede ser útil transferirlo más tarde a otra ubicación.
# 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"
El inconveniente: este enfoque no funciona si se usa la opción pg_dump -Fd (volcar a carpeta).