Linux

一行備份、壓縮、scp數據庫文件

  • December 6, 2013

我支持一家擁有遠端託管網站的公司。他們使用 PostgreSQL 數據庫。

我不能在遠端伺服器上編寫腳本,也不想在遠端伺服器上儲存任何備份文件,但我可以執行 cron 作業,並且我可以訪問遠端伺服器的 SSH 公鑰。我設置了一個本地 linux 主機來接受遠端主機的私鑰進行身份驗證。

我需要製作一個單行腳本來同步備份、壓縮和 scp 備份文件到我的本地 linux 機器。

如果我的本地 linux 機器可以通過 SSH 在mylinuxbox.foo.com埠 122 上訪問,並且我的數據庫名稱是mydatabase,那麼這個單行 cron 作業命令會是什麼樣子?

假設您對數據庫使用 ident 身份驗證(或 .pgpass),我可能會執行以下操作:

pg_dump -Udbuser -h127.0.0.1 mydatabase |gzip -c > mydatabase.backup.gz; scp -P 122 mydatabase.backup.gz user@mylinuxbox.foo.com:; rm -f mydatabase.backup.gz

編輯以添加另一個選項…

如果沒有備份文件的中間儲存真的很重要,您可以修改上面的內容,使其看起來更像這樣:

pg_dump -Udbuser -h127.0.0.1 mydatabase |gzip -c | ssh -p 122 user@mylinuxbox.foo.com "cat >mydatabase.backup.gz"

引用自:https://serverfault.com/questions/559675