通过 SSH 从 Docker 转储 PostgreSQL 数据库

Dump PostgreSQL Database from Docker through SSH

我正在租用远程服务器。在该服务器上,我在 Docker 实例中 运行 设置了一个 PostgreSQL 数据库。我想直接将数据库备份到我的本地主机,而不必在远程服务器上制作副本。

我知道我可以使用以下方法将数据库从 Docker 实例转储到远程服务器的本地文件 (sqlbkp.bak):

docker exec <container_name> pg_dump <schema_name> > /tmp/sqlbkp.bak

然后我可以使用 Rync 从我的本地主机将该远程备份传输到我的本地主机,例如:

rsync -a user@remoteserver:/tmp/sqlbkp.bak /home/sqlbkp.bak 

但是,使用这两个步骤,我需要在远程服务器上使用额外的磁盘 space 进行备份(至少与数据库一样大)。然后,在传输备份后,我可以立即释放遥控器 space。我觉得这很不方便,而且似乎没有必要。有没有办法将这些步骤合并为一个,这样我就可以 运行 pg_dump 通过 SSH(针对 Docker 实例中的数据库)?

您可以使用 ssh 在远程执行任何命令,然后该命令的标准输出通过 ssh 通道传回成为 ssh 的标准输出,并且可以重定向到本地计算机上的文件。

ssh user@dockerhost 'docker exec <container_name> pg_dump <schema_name>' > /home/sqlbkp.bak