PostgreSQL pg_dump 和 gzip 空文件

问题描述 投票:0回答:1

我正在使用

pg_admin
备份我的 postgres 数据库
docker-compose

sudo docker-compose exec -T postgres sh -c 'pg_dump -cU postgres postgres' | gzip > ../backups/db_backup-$(date +%Y-%m-%d_%H-%M-%S).sql.gz

但是它创建了一个

zero-bytes
gz 文件,当尝试解压缩它时,它是一个空文件。

该文件夹具有所有必要的权限,因为如果不压缩,数据库将转储为 .sql 文件。

我该如何解决? 谢谢

postgresql pg-dump
1个回答
0
投票

您可以尝试一些方法来解决这个问题:

  1. 检查
    pg_dump
    命令是否生成任何输出。您可以通过在容器中运行
    pg_dump -cU postgres postgres
    命令并查看它是否产生任何输出来执行此操作。如果它没有产生任何输出,那么问题出在
    pg_dump
    命令本身。
  2. 尝试使用
    pg_dumpall
    命令代替
    pg_dump
    pg_dumpall
    命令转储 PostgreSQL 集群中的所有数据库,而
    pg_dump
    只转储一个数据库。您可以使用以下命令备份所有数据库:
sudo docker-compose exec -T postgres sh -c 'pg_dumpall -cU postgres' | gzip > ../backups/db_backup-$(date +%Y-%m-%d_%H-%M-%S).sql.gz
  1. 尝试将
    pg_dump
    的输出重定向到一个文件,而不是将其通过管道传输到
    gzip
    。这将帮助您确定问题是出在
    pg_dump
    还是
    gzip
sudo docker-compose exec -T postgres sh -c 'pg_dump -cU postgres postgres' > ../backups/db_backup-$(date +%Y-%m-%d_%H-%M-%S).sql

如果这生成了一个非空文件,那么问题出在

gzip
。 4.尝试在没有
gzip
选项的情况下运行
-T
-T
docker-compose exec
选项设置TTY模式,这可能会干扰
gzip
.

sudo docker-compose exec postgres sh -c 'pg_dump -cU postgres postgres' | gzip > ../backups/db_backup-$(date +%Y-%m-%d_%H-%M-%S).sql.gz

如果这生成了一个非空文件,那么问题出在

-T
选项上。

© www.soinside.com 2019 - 2024. All rights reserved.