Postgres - 将整个数据库的副本从远程服务器拉到本地开发机器

时间:2016-06-07 02:43:32

标签: bash postgresql

一直试图找到答案,但答案似乎集中在“推动”心态而不是“拉”。像这样:

Copying PostgreSQL database to another server

我有一台本地VM开发机器。 Redhat REHEL。我也有一个远程环境,让我们把它命名为“集成”。我有SSH访问此环境的权限,并且位于远程服务器上的Sudoers组中。

我想要的是在我的本地VM上有一种方法在集成时下载数据库的完整副本,并将其推送到等待(空)数据库中。我们称这个数据库为“int_backup”。

这不一定是一个命令。很高兴bash脚本多个命令。但关键是集成不知道我的本地虚拟机,无法访问它。因此,任务必须从虚拟机方面完成。

欢迎所有建议。但是,在集成上安装软件并不是一个可行的解决方案。

1 个答案:

答案 0 :(得分:1)

也许这样(将您的公钥安装在远程~postgres/.ssh/authorized_keys文件中):

ssh postgres@yourremotehost 'pg_dump yourdbname | xz -0' |\
  xzcat | psql yourdbname

或者,在您的远程/etc/sudoers文件中添加一个条目,以使您的用户能够无密码执行sudo -u postgres pg_dump yourdbname,以便您可以运行:

ssh youruser@yourremotehost 'sudo -u postgres pg_dump yourdbname | xz -0' |\
  xzcat | psql yourdbname

在这两种情况下,转储和还原都会同时发生,并且不会创建转储文件。