rsyncに関する覚書

参考にさせてもらったページ


rsyncを使う目的と手順の骨子

rsyncの目的としては、遠隔地にあるFreeBSDマシンの任意のファイル やフォルダのバックアップを行うことで最終的にはcrontabを編集して 定時バックアップまでを目指します

基本的な手順としては
  (1) sshのrootログイン環境を整える
  (2) ports collectionの環境を整える
  (3) rsyncをインストールする
  (4) crontabを編集して定時実行を設定する
の4ステップとします


(1) sshのrootログイン環境を整える

詳しくはmakoさんの所を参考にしてください
rsyncの実行に必要な目安としては、rsyncを実行する側の端末で

slogin root@hogehoge.co.jp

としたときにdsa鍵を利用してログインできる状態で、掻い摘んで箇条書きにすると、/etc/ssh/sshd_configで

Protocol 2
PermitRootLogin without-password
PubkeyAuthentication yes
UsePAM no

などが必要となる(個人的な主観からPAMはnoを推奨)
rsyncを実行する端末側のrootのdsa認証公開鍵を相手側のroot用のauthorized_keysに登録する
双方の端末で~/.ssh/configにIdentityFile2 ~/.ssh/nopass.dsa_key等と記載する

echo "IdentityFile2 ~/.ssh/nopass.dsa_key">~/.ssh/config

ココまでの設定でscpによる暗号転送が出来る
(差分コピーが不要であればバックアップはscpでまかなえる<=seeおまけ)


(2) ports collectionの環境を整える

cvsupをインストール・設定してports treeを最新にする

(ports treeが全くない場合は/stand/sysinstallとか/usr/sbin/sysinstall等から入れる。 Configure => Distributions にある)

cd /usr/ports/net/cvsup-without-gui/
make install clean

確かsupfileのサンプルが要るかどうか聞いてくるはずなのでyesで続行して入れる。 インストール後

sync;rehash
mkdir /usr/sup
cp /usr/share/examples/cvsup/ports-supfile /usr/sup/
chmod 644 /usr/sup/ports-supfile
vi /usr/sup/ports-supfile

として

*default host=CHANGE_THIS.FreeBSD.org

*default host=cvsup.jp.FreeBSD.org

などと変えて、更に

*default date=2006.12.21.00.00.00

などと日付フラグを追加すると良い(後戻り用足跡)

設定完了後に

cd /usr/sup/
( cvsup -g -L 2 ports-supfile >& cvsup-ports.log ) &

tail cvsup-ports.log

としてcvsupを実行しports treeの更新をする
(上記最下段のtailで進行状況を確認できる<=/usr/ports/下のアルファベット目安)


(3) rsyncをインストールする

rsyncを実行する側と相手側両方にインストールする必要があります
portsなのでインストールは簡単です

cd /usr/ports/net/rsync/
make install clean

途中でダイアログが出ますがデフォルトのままでOK
終わったら

sync;rehash
rsync

で確認すればusageが出る
インストール時の設定を再度行いたいときは

make config
make reinstall

などとすれば可能


(4) crontabを編集して定時実行を設定する

まずrsyncを実行すると下記の例では
コピー元はローカルマシンの/home/omote/workfilesフォルダ以下
コピー先はraj-corp.comの/extdrvフォルダ下にworkfilesが作成される

rsync -axz --delete-after -e ssh /home/omote/workfiles root@raj-corp.com:/extdrv/

rsyncのオプションパラメータとしては-axzと--delete-afterを使用しているが意味は以下

(詳しくはman参照)
圧縮は回線とマシンパワーのかねあいを見て外してもOK
プロセスがみたいなら-vで冗長モード

cronに設定する場合はコマンドラインを全てフルパスで記述する事に注意する

記述例

crontabの記述についてはmanのcrontab (5)が詳しい
crontabのmanエントリは1と5にあるので普通にman crontabすると(1)の方が参照されるので

man 5 crontab


(おまけ) scpの実行例

パーミッションと再帰形検索オプションの-prはまず使う(詳しくはman scpする)
遠隔端末のrootフォルダにあるhogehoge.txtを自分の端末の/root/tmp下にコピーする

scp -pr root@raj-corp.com:./ /root/tmp

cronを使用して月曜日から土曜日までの毎朝5:48分にscpを実行し、 ローカル端末の/home/data/以下の全てのファイルを再帰検索して遠隔地端末 のログインルート下tmpフォルダにコピーする

48 5 * * 1-6 /usr/bin/scp -pr /home/data root@raj-corp.com:./tmp > /dev/null



RAJ商会