一直试图找到答案,但答案似乎集中在“推动”心态而不是“拉”。像这样:
Copying PostgreSQL database to another server
我有一台本地VM开发机器。 Redhat REHEL。我也有一个远程环境,让我们把它命名为“集成”。我有SSH访问此环境的权限,并且位于远程服务器上的Sudoers组中。
我想要的是在我的本地VM上有一种方法在集成时下载数据库的完整副本,并将其推送到等待(空)数据库中。我们称这个数据库为“int_backup”。
这不一定是一个命令。很高兴bash脚本多个命令。但关键是集成不知道我的本地虚拟机,无法访问它。因此,任务必须从虚拟机方面完成。
欢迎所有建议。但是,在集成上安装软件并不是一个可行的解决方案。
答案 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
在这两种情况下,转储和还原都会同时发生,并且不会创建转储文件。