ssh远程命令-fu

我正在尝试从防火墙后面进行远程备份。 将它分解成自己的脚本,在crontab中调用是没有问题的,但这并不是什么好玩的事情! 我在做什么:

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

是备份postgresql数据库(将所有内容转储到标准输出),并将其redirect到一个远程的ssh命令,该命令只需将其放在backup.sql中。

不幸的是,我所得到的只是一个空的“backup.sql”在我的远程盒子上。 redirect不是我的强项,所以任何提示将不胜感激。 谢谢。

尝试

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

甚至更好:在SSH之前压缩它:

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

这可以节省SQL dump的带宽。

实际上我是这样做的。 我有备份服务器login到服务器进行备份。 这意味着,如果任何一台服务器(除了具有严重法西斯安全性的备份服务器)在根级别,备份服务器以及所有其他服务器上受到威胁! – 默认情况下不会受到威胁。

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

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

要特别注意引号的位置 – 它们定义在远程执行什么以及在本地执行什么。