|
参考にさせてもらったページ
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を使用しているが意味は以下
- -a アーカイブモード(要root権限)
- -x ファイルシステムを跨がない
- -z 圧縮
- --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