rsyncを使用して4つの異なるVPSをバックアップ保存に使用される5番目のVPSにバックアップ

rsyncを使用して4つの異なるVPSをバックアップ保存に使用される5番目のVPSにバックアップ

VPSが4つあるとしましょう。それぞれで、次のcronコマンドはローカルバックアップのために週に1回実行されます。

0 0 * * 6 zip -r /root/backups/dirs/html-$(date +\%F-\%T-).zip /var/www/html
1 0 * * 6 find /root/backups/dirs/* -mtime +30 -exec rm {} \;

0 0 * * 6 mysqldump -u root -pPASSWORD --all-databases > /root/backups/db/db-$(date +\%F-\%T-).sql
1 8 * * 6 find /root/backups/db/* -mtime +30 -exec rm {} \;

(4つのVPSのそれぞれで)各ローカルバックアップのコピーを次に送信したいと思います。5番目のVPS、中央バックアップ環境として使用します。転送はできるだけ安全でなければなりません(合理的な範囲内)。

rsyncを使用してこのタスクを自動的に(スケジュールに従って)どのように実行できますか?

(それともSCPですか?)

ベストアンサー1

各バックアップがファイルであると仮定すると(上記の2つのファイルをアーカイブして)、SCPと比較される同期これは、ファイルの転送に加えて、全体的に作業量が少ないためです。

自動化が行われる限り、次のように設定する必要があります。

  1. 5番目のVPSはバックアップを読むことができるユーザーで、パスワードなしで他の4つのVPSに接続できます(管理は少し簡単ですが、コーディングするのは難しいです)。
  2. 他の4つのVPSはパスワードなしで5番目のVPSに接続できます。それぞれに別々のアカウントを使用することをお勧めします(管理は少し難しいですが、コーディングは簡単です)。

どちらも好む方法は通常暗号化されていないSSHキーです。完了したら、クローンジョブ(1の場合は5番目のVPS、2の場合は4つのVPS)を設定して、最新のバックアップを希望の場所に転送できます。

以下は、ディレクトリ内の最新のファイルをリモートシステムにコピーする2番目のオプションのための迅速で汚れたシェルスクリプトです。

#!/bin/bash
file=`ls -t "${1}" | head -n 1`
scp -pCB "${1}"/"${file}" ${2}

バックアップが格納されているディレクトリパスを最初のパラメータとして指定し、5user@host:/path番目のVPSの場所を指す文字列を2番目のパラメータとしてこのコマンドを実行すると、ローカルシステムの最新のバックアップが5番目のVPSにコピーされます。

-pSCPオプションはmtimeを保存し(同じコマンドを使用して以前のバックアップをfind縮小することができます)、-C圧縮を有効にし(パフォーマンスが向上または改善されない可能性があります)、-Bメッセージが表示されないようにします。

おすすめ記事