单行备份,压缩,scp数据库文件

我支持一家拥有远程托pipe网站的公司。 他们使用PostgreSQL dbs。

我不能在远程服务器上编写脚本,也不想在远程服务器上存储任何备份文件,但是我可以运行cron作业,并且可以访问远程服务器的SSH公钥。 我设置了一个本地linux主机来接受远程主机的私钥进行authentication。

我需要制作一个单行脚本来同步备份,压缩和备份文件到我的本地Linux机器。

如果我的本地Linux机器可通过端口122上的mylinuxbox.foo.com上的SSH访问,并且我的数据库的名称是mydatabase ,那么这个mylinuxbox.foo.com cron作业命令的外观如何?

假设你正在使用身份validation(或.pgpass)的数据库,我可能会做类似下面的事情:

 pg_dump -Udbuser -h127.0.0.1 mydatabase |gzip -c > mydatabase.backup.gz; scp -P 122 mydatabase.backup.gz [email protected]:; rm -f mydatabase.backup.gz 

编辑添加另一个选项…

如果没有备份文件的中间存储是非常重要的,你可以修改上面的内容,看起来更像这样:

 pg_dump -Udbuser -h127.0.0.1 mydatabase |gzip -c | ssh -p 122 [email protected] "cat >mydatabase.backup.gz"