ssh遠端命令-fu

ssh遠端命令-fu

我正在嘗試從防火牆後面進行遠端備份。將其分解為在 crontab 中調用的自己的腳本確實沒有問題,但這沒有任何樂趣!我正在嘗試做什麼:

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

是備份 postgresql 資料庫(將所有內容轉儲到標準輸出)並將其重定向到遠端 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

請特別注意引號的位置 - 它們定義在遠端執行的內容以及在本地執行的內容。

相關內容