ssh 远程命令-fu

ssh 远程命令-fu

我正在尝试从防火墙后面进行远程备份。将其分解为在 crontab 中调用的自己的脚本确实没有问题,但这并不好玩!我尝试使用:

pg_dump -U my_user my_database | ssh me@myserver "> backup.sql"

是备份一个 postgresql 数据库(将所有内容转储到 stdout)并将其重定向到远程 ssh 命令,该命令只需将其放在 backup.sql 中。

不幸的是,我在远程机器上得到的只是一个空的“backup.sql”。重定向不是我的强项,所以任何提示都值得感激。谢谢。

答案1

尝试

pg_dump -U my_user my_database | ssh me@myserver "cat > backup.sql"

答案2

更好的是:在 SSH 之前压缩它:

pg_dump -U my_user my_database | gzip -c | ssh me@myserver "cat > backup.sql.gz"

这通过 SQL 转储节省了大量带宽。

我实际上是反过来做的。我让备份服务器登录到要备份的服务器。这意味着如果任何一台服务器(除了备份服务器,它的安全性非常严苛)在根级别受到威胁,备份服务器 - 以及所有其他服务器! - 默认情况下不会受到威胁。

因此,我远程执行 SQL 转储的命令略有不同:

ssh <server> "pg_dump -U <user> <database> | gzip -c" > /backups/sqlbackup.sql.gz

特别注意引号的位置 - 它们定义了在远程端执行的内容以及在本地执行的内容。

相关内容