Linux
一行備份、壓縮、scp數據庫文件
我支持一家擁有遠端託管網站的公司。他們使用 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"