ssh 远程命令-fu

the*_*osx 2 backup ssh

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

pg_dump -U my_user my_database | ssh me@myserver "> backup.sql"
Run Code Online (Sandbox Code Playgroud)

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

不幸的是,我得到的只是远程设备上的一个空的“backup.sql”。重定向不是我的强项,所以任何提示将不胜感激。谢谢。

Ern*_*nie 12

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

pg_dump -U my_user my_database | gzip -c | ssh me@myserver "cat > backup.sql.gz"
Run Code Online (Sandbox Code Playgroud)

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

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

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

ssh <server> "pg_dump -U <user> <database> | gzip -c" > /backups/sqlbackup.sql.gz
Run Code Online (Sandbox Code Playgroud)

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

  • 然后您必须压缩磁盘上的 SQL 转储。:) (2认同)

pQd*_*pQd 8

尝试

pg_dump -U my_user my_database | ssh me@myserver "cat > backup.sql"
Run Code Online (Sandbox Code Playgroud)