一行备份、压缩、scp数据库文件

Jer*_*acs 2 postgresql linux backup ssh cron

我支持一家拥有远程托管网站的公司。他们使用 PostgreSQL 数据库。

我无法在远程服务器上编写脚本,并且不想在远程服务器上存储任何备份文件,但我可以运行 cron 作业,并且可以访问远程服务器的 SSH 公钥。我设置了本地 Linux 主机来接受远程主机的私钥进行身份验证。

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

如果我的本地 Linux 机器可以通过 SSH 在端口 122 上访问mylinuxbox.foo.com,并且我的数据库名称是mydatabase,那么这个单行 cron 作业命令会是什么样子?

Sam*_*her 5

假设您对数据库使用 ident 身份验证(或 .pgpass),我可能会执行如下操作:

pg_dump -Udbuser -h127.0.0.1 mydatabase |gzip -c > mydatabase.backup.gz; scp -P 122 mydatabase.backup.gz user@mylinuxbox.foo.com:; rm -f mydatabase.backup.gz
Run Code Online (Sandbox Code Playgroud)

编辑以添加另一个选项...

如果没有备份文件的中间存储确实很重要,您可以修改上面的内容,使其看起来更像这样:

pg_dump -Udbuser -h127.0.0.1 mydatabase |gzip -c | ssh -p 122 user@mylinuxbox.foo.com "cat >mydatabase.backup.gz"
Run Code Online (Sandbox Code Playgroud)