
私はリモートでホストされている Web サイトを持つ会社をサポートしています。彼らは PostgreSQL データベースを使用しています。
リモート サーバーでスクリプトを書くことはできませんし、リモート サーバーにバックアップ ファイルを保存したくもありませんが、cron ジョブを実行することはできますし、リモート サーバーの SSH 公開キーにアクセスできます。認証用にリモート ホストの秘密キーを受け入れるようにローカル Linux ホストを設定しました。
バックアップ ファイルをローカル Linux ボックスに同期的にバックアップ、圧縮、および scp する 1 行のスクリプトを作成する必要があります。
ローカル Linux ボックスがmylinuxbox.foo.com
ポート 122 で SSH 経由でアクセス可能で、データベースの名前が の場合mydatabase
、このワンライナーの cron ジョブ コマンドはどのようになるでしょうか?
答え1
データベースに ident 認証 (または .pgpass) を使用していると仮定すると、おそらく次のような操作を行うことになります。
pg_dump -Udbuser -h127.0.0.1 mydatabase |gzip -c > mydatabase.backup.gz; scp -P 122 mydatabase.backup.gz [email protected]:; rm -f mydatabase.backup.gz
別のオプションを追加するために編集しています...
バックアップ ファイルの中間保存を行わないことが本当に重要な場合は、上記を次のように変更できます。
pg_dump -Udbuser -h127.0.0.1 mydatabase |gzip -c | ssh -p 122 [email protected] "cat >mydatabase.backup.gz"