Ubuntuで20分でバックアップを設定します。
プロジェクトで作業するには、svnを使用します。svnは、ubuntu 8.04を実行しているリモート仮想専用ホスト上にあります。 時間が経つにつれて、このデータの重要性と同様に、データ量が増加しました。 何かの喪失は悪夢を夢見ていた。 リポジトリを時々ローカルコンピューターにコピーしました。 私は最近これにうんざりしています。 そして、私はこのビジネスを自動化する機会を探し始めました。 検索とオプションについては話しません。結果については話します。
そのため、かなり重要なデータの配列を持つ、ubuntuを実行するリモートホストがあります。 クラウン、rsynsなどでtarを使用して、リモートホストで直接バックアップを構成することは非常に論理的です。 しかし、なぜなら 仮想専用ホスティング上の場所は非常に高価であり、ケースで使用することをお勧めします。データが十分なスペースのあるローカルマシンに自動的にコピーされると理想的です。 私の場合、これは同じUbuntuを実行しているオフィスのファイルサービスです。
準備する
SSHを使用してデータをいっぱいにします。まず、ローカルサーバーとリモートサーバーの公開キーと秘密キーを構成しましょう。 これは、データを転送するプログラムがパスワードなしでSSH経由で入力できるようにするためです。
$ ssh-keygen -t dsa
デフォルトのフォルダーをそのままにして、パスワードを空白にします。
このコマンドは、〜/ .sshフォルダーに2つのファイル(デフォルト)を作成する必要があります-秘密鍵と公開鍵。 privateはローカルマシン用で、pubはリモートに送信されます。
rootユーザーがこの方法で使用できるように、秘密キーを/root/.sshフォルダーにコピーします
$ cd ~/.ssh
$ sudo mkdir /root/.ssh
$ sudo cp id_dsa /root/.ssh
次に、データをコピーするリモートマシンに公開キーをコピーする必要があります。 最初に、リモートマシンでバックアップユーザーを作成します(adduserコマンド)。 コピーするディレクトリへの読み取り権限をこのユーザーに付与することを忘れないでください。
$ cat ~/.ssh/id_dsa.pub | ssh backup@remotehost.ru "cat >> ~/.ssh/authorized_keys2"
これで、sshを介してリモートマシンにアクセスできます。
$ ssh backup@remotehost.ru
すべてが正しく行われていれば、パスワードなしで私たちを入れてくれます。
リモートマシンで、公開キーを読み取るための通常のアクセス許可を設定します。
remotehostru$ chmod 700 .ssh
remotehostru$ chmod 400 .ssh/authorized_keys2
remotehostru$ exit
Rsnapshotセットアップ
rsnapshotは、rsyncベースのファイルシステムの状態のコピーを作成するためのユーティリティです。 sshを使用して、ローカルマシンとリモートマシンから定期的なコピーを簡単に作成できます。 可能であればハードリンクを使用します。これにより、必要なディスク容量が大幅に削減されます。 ( ここから引用)
設置
rsnapshotをインストールします。
$ sudo apt-get install rsnapshot
debianに似ていないディストリビューションを使用している場合、rsnapshotはおそらくディストリビューションのリポジトリにも表示されます。 RPMForgeが有効になっているCentOSの場合、これはたとえば次のように行われます。
# yum install rsnapshot
次に、「スナップショット」を保存するディレクトリを作成する必要があります。
$ sudo mkdir /var/snapshots
カスタマイズ
これで、実際にrsnapshotの構成に進むことができます。
$ sudo nano /etc/rsnapshot.conf
nanoの代わりに、viなどの他のエディター、またはGNOMEで作業する場合はgeditを使用できます。
以下のパラメーターを構成する必要があります。
snapshot_root - , "".
interval xxx yy - - ( hourly, daily), yy - . :
interval hourly 6
interval daily 7
6時間ごとのコピーと7か月ごとのコピーを保持することを意味します。 指定された数のコピーがすでに使用可能な場合、rsnapshotは古いものを新しいものに置き換えます。
cmd_cpのコメントを解除します。 cmd_sshのコメントを外し、次のように変更します
cmd_ssh /usr/bin/ssh
バックアップ構成は、backup <where> <where>コマンドによって実行されます。
# /etc/ localhost/
backup /etc/ local/
# /var/svn remotehost/
backup backup@remotehost.ru:/var/svn/ remotehost/
構成ファイルではスペースを使用できないことに注意してください-タブのみを使用してください。
試運転
rsnapshotを実行します。
$ rsnapshot hourly
2番目のパラメーターは、構成ファイルで設定した間隔を意味します。
コマンドには時間がかかる場合があります。 実行後、彼女が作成したものを見てください:
$ ls -l /var/snapshots
これまでのところ、ディレクトリにはディレクトリhourly.0が1つ必要です。 次回rsnapshotを起動すると、構成ファイルで指定された最大値に達するまで、hourly.1、hourly.2などのディレクトリが作成されます。
cronのセットアップ
Ubuntuは、次の内容の/etc/cron.d/rsnapshotファイルを自動的に作成します。
0 */4 * * * root /usr/bin/rsnapshot hourly
30 3 * * * root /usr/bin/rsnapshot daily
0 3 * * 1 root /usr/bin/rsnapshot weekly
30 2 1 * * root /usr/bin/rsnapshot monthly
以上です。 これで、リモートサーバーから1日6回データのスナップショットを自動的に作成する必要があります。 データは安全であり、地理的に分散されています。
ちなみに、1日に6回ということは、1日に1回だけコピーする場合よりもサイズが6倍大きくなるということではありません。 コピー間でファイルに変更がない場合、コピーの合計サイズはほとんど変わりません。
追加情報
backup_scriptパラメーターを使用して、MySQLデータベースのバックアップ、および実際には他のものを構成することもできます。 私はこのプロセスを説明しませんでした、なぜなら 私はそれを使用せず、具体的なことは何も言えません。
Googleで詳細を読むことができます。 rsnapshotのリクエストにより、関連リンクが大量にクロールされますが、英語です。
特にscらないようにお願いします、私は管理の第一人者(およびLinux)には見えませんが、長い間バックアップを自動化するのがどれほど簡単かを探していました-方法を見つけたので、共有することにしました。
しかし、もちろん、建設的な批判や提案を喜んでいます。
UPD: 私のブログの同じ記事。