Aqui está um monte de soluções possíveis. Escolha uma que atenda às suas necessidades.
via stdin
A resposta é bem simples - use um pipe:
xzcat dumpFile.xz | pg_restore ....
Dessa forma, você não precisa de mais espaço em disco para extrair o arquivo de despejo compactado.
Veja man pg_restore
:
-f filename, --file=filename
Specify output file for generated script, or for the listing when used with -l.
Default is the standard output.
via stdin e ssh
Se você tiver pouco espaço em disco para copiar o arquivo de despejo compactado para o servidor, use ssh
para invocação:
xzcat dumpFile.xz |ssh -T user@dbserver pg_restore ...
pg_restore via rede
Além disso, uma alternativa é reconfigurar seu banco de dados postgreSQL para permitir a conexão de sua estação de trabalho local.
Nesse caso, você pode usar pg_restore
em seu sistema local com a configuração PGHOST, PGPORT, PGUSER
nos valores corretos.
dividindo o despejo
- Faça o download do despejo para uma máquina com espaço em disco suficiente.
- Usando o comando
split
(ou qualquer ferramenta semelhante) para reduzi-lo a partes menores. - Remova o despejo do servidor de banco de dados.
-
No servidor de banco de dados, crie um trabalho como esperar por receber arquivos parciais de despejo, por exemplo,
while sleep 10 do if [ -r dumpPart ] then cat dumpPart echo "next part is loaded" >&2 rm -f dumpPart fi done | pg_restore ....
-
Etapa de upload para passo suas partes de despejo com o nome de destino dumpPart. Assegure-se de que a velocidade seja razoavelmente mais baixa que a declaração de sono acima.