0

嗨,我想自动化创建 Postgres 转储并下载它的工作流程。我想从我的本地机器上做这件事,现在我已经用两个单独的命令弄清楚了:

sshpass  -p "FuckinHardPass" ssh  andi@1.2.3.4 "pg_dump -U andi andi_some_db -f /home/andi/PSQL_DUMPS/andi_some_db.sql"

sshpass -p "FuckinHardPass" scp -r andi@1.2.3.4:/home/andi/PSQL_DUMPS/andi_some_db.sql .

如何使用管道等将它加入一个命令?

感谢 James Hightower 的提示,使用您的答案,我在一个命令中完成了它:

sshpass  -p "FuckinHardPass" ssh  andi@1.2.3.4 "pg_dump -U andi andi_some_db" > andi_some_db.sql
4

1 回答 1

3

由于 pg_dump 默认为 stdout 作为输出文件,并且 ssh 在它自己的 stdout 上显示命令的 stdout,您可以执行以下操作:

ssh andi@1.2.3.4 'pg_dump -U andi andi_some_db' > andi_some_db.sql

这会将命令的输出保存在本地磁盘上为 andi_some_db.sql

根据转储的大小和连接速度,您可能会从预压缩输出中受益:

ssh andi@1.2.3.4 'pg_dump -U andi andi_some_db | gzip' > andi_some_db.sql.gz

等等。

于 2014-11-04T01:06:01.853 回答