我为一家拥有远程托管网站的公司提供支持。他们使用 PostgreSQL 数据库。
我无法在远程服务器上编写脚本,也不想在远程服务器上存储任何备份文件,但我可以运行 cron 作业,并且可以访问远程服务器的 SSH 公钥。我设置了一个本地 linux 主机来接受远程主机的私钥进行身份验证。
我需要编写一行脚本来备份、压缩并将备份文件同步到我的本地 Linux 机器。
如果我的本地 Linux 机器可通过 SSH 在mylinuxbox.foo.com
端口 122 上访问,并且我的数据库名称是mydatabase
,那么这个单行 cron job 命令会是什么样子?
答案1
假设您正在对数据库使用身份认证(或 .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"