O pg_dump oferece quatro formatos de backup: Custom, Tar, Plain e Directory. Cada um organiza o arquivo de saída de um jeito diferente — e essa diferença importa muito se você quer compactar o backup depois pra versionar no Git ou no GitHub.
| Formato | Flag | Comprimido internamente? | Restaura com |
|---|---|---|---|
| Custom | -F c |
Sim (zlib) | pg_restore |
| Tar | -F t |
Não | pg_restore |
| Plain | -F p |
Não (texto puro) | psql -f |
| Directory | -F d |
Sim (por arquivo) | pg_restore -j N |
Arquivo de texto com comandos SQL (CREATE TABLE, INSERT, COPY). Se abrir no editor, dá pra ler.
psql -f arquivo.sqlFormato binário do pgAdmin (default). Arquivo começa com o cabeçalho PGDMP e já é comprimido internamente com zlib.
pg_restoreCompressão funciona procurando repetição. Quando um arquivo já foi comprimido, a repetição já foi consumida — não sobra o que explorar.
O Custom já passa pelo zlib quando é gerado. Pro 7zip que vier depois, o conteúdo parece ruído aleatório.
Exemplo real do teste:
É o mesmo motivo que zipar MP3, JPG, MP4 ou PDF não reduz nada. Todos já têm compressão interna.
Formato tar tradicional do Unix. Agrupa vários arquivos num só, sem comprimir. Por dentro tem um toc.dat (índice) + um arquivo por tabela.
pg_restoreExemplo real do teste:
Gera uma pasta, não um arquivo. Cada tabela vira um arquivo próprio comprimido, mais um toc.dat de índice.
-j N usa várias CPUs). Ideal pra banco grande.pg_restore -j N| Caminho | Cru | Depois do 7zip | Redução |
|---|---|---|---|
| Custom + 7zip | 45.8 MB | 45.5 MB | 1% |
| Tar + 7zip | 250 MB | 29 MB | 88% |
Surpreendente: o caminho mais eficiente pra ter um arquivo pequeno pra versionar é gerar em Tar ou Plain e comprimir depois — não o Custom, mesmo sendo o default do pgAdmin.
-j N)..gitignore.Limites do GitHub: arquivo acima de 50 MB gera warning; acima de 100 MB o push é bloqueado.
Compressão não funciona duas vezes. Se um formato já tem compressão interna, tentar zipar de novo é perda de tempo.
Vale pra MP3, MP4, JPG, PDF moderno, ZIP, DOCX, XLSX (todos ZIP por dentro) e dumps Custom do PostgreSQL.
Antes de compactar qualquer coisa, pergunte: "esse formato já é comprimido por dentro?" Se sim, não adianta.