変化しやすい設定ファイルなどを他の鯖にバックアップする方法。
作業はrootで行って、バックアップ元のコマンドはlocal#、バックアップ先のコマンドはremote#と表記。

とりあえず必要な物をインストールする。
この作業はバックアップ元とバックアップ先で必要なので、両方でやっておく。

local# apt-get install ssh rsync
remote# apt-get install ssh rsync

次にsshの設定ファイルを変更する。
セキュリティの為に、rootからのアクセスに関しては認められたコマンド以外は受け付けないようにします。
バックアップ元とバックアップ先の/etc/ssh/sshd_configを編集する。
設定を反映させる為に、編集後にsshdを再起動しておく。

PermitRootLogin forced-commands-only

認証鍵と公開鍵を作ります。
ちゃんと、他のユーザには見えないように設定しておきましょう。
cronでの自動バックアップも考えているので、パスフレーズは指定しません。

local# mkdir -m 700 /root/.ssh
local# ssh-keygen -t rsa -N "" -f /root/.ssh/rsync

公開鍵をバックアップする先に転送します。
rootのログインは制限してしまったので、一般ユーザに公開鍵を一度送ってからバックアップ先で作業します。

local# scp /root/.ssh/rsync.pub バックアップ先一般ユーザ名@バックアップ先ホスト名:~/

公開鍵をrootに送ります。
リダイレクション(>>)を使っている理由は使う公開鍵は一つのファイルに入れる必要があるので、mvとかcpではなく既存ファイルに行を追加という形を取っています。
初めて公開鍵の設定をするならmvとかcpを使って、chownでroot所持に変えてもいいかも。

remote# mkdir -m 700 /root/.ssh
remote# cat /home/公開鍵を転送したユーザ名/rsync.pub >> /root/.ssh/authorized_keys
remote# rm /home/公開鍵を転送したユーザ名/rsync.pub
remote# chmod 700 /root/.ssh/authorized_keys

バックアップ先にある/root/.ssh/authorized_keysを編集して、実行するコマンドを表記します。

command="rsync --server -logDtprze.iL --delete . バックアップ保存先の場所" ssh-rsa 鍵の文字列

準備は完了したので、実際にデータを転送してみる。

local# rsync -vv -az --delete -e "ssh -i /root/.ssh/rsync" 転送するファイル名 root@バックアップ先ホスト名:バックアップ保存先の場所

実行すると転送されるファイルが表示されて終了する。
転送先を確認してファイルが存在すれば成功。
後はcronを使って定期的にコマンドを実行すれば安心です。
-vvオプションは結果報告なので、これは外しといた方がいいかも。

カテゴリ/タグ:私の記憶領域 /  ,    
コメント (0)
  トップ