Rsync de backup

FreeBSD 6.xな外向けのメールサーバのアーカイブを別のサーバにバックアップしよう、というメモ。rsyncで簡単に実現出来ないだろうかと。 WebDAVでもよいけれど、バックアップ用途ならばrsyncのほうが性能を出せるかも。WebDAVにはhttp(80/tcp)を開けるだけという手軽さがあるけど、rsyncもsshを開けるだけで、手軽さという意味では変わらないと思う。

rsyncのちょっといいオプションを知った夏の一日

http://blog.livedoor.jp/tuzzy92/archives/52541703.html

その名は --inplace

# man rsync | grep inplace

意味は ファイルの中身の一部分を変更する場合に、目的のファイルに直接書き込んでしまうことを指示。このオプションが無い場合、一時ファイルを作って完成してから置き換える。ギガ単位の巨大なファイルをバックアップする場合は必須。

http://omake.accense.com/wiki/LinuxBackupScript より引用

FreeBSDの準備

は、実はあまりない。
FreeBSDは5.xの頃から、デフォルトではsshdすら起動しない設定だが、これを修正する。

vi /etc/rc.conf

sshd_enable="YES"

とだけ書いておけばいい。デフォルトではパスワード認証を許可しない(公開鍵認証のみ)という、少し厳しめの設定がされていて、通常運用では修正が必要だが、今回はそのままでもいい鴨。 portsから

rsyncをインストール

する必要があるので、

# portinstall net/rsync

しておく。rsyncdを起動する必要もないので、インストール後の設定も不要。至ってシンプルだ。

rsync_option.gif

リモートのファイル転送では、プッシュ(被バックアップ側が処理を実行)かプル(バックアップサーバ側が処理を実行)かという実装の選択肢があるが、今回はプッシュで行くことにする。

公開鍵の登録、バックアップ先ディレクトリの設定等を行い、被バックアップ側の各ホストに、バックアップの実行ユーザー(例えば 'backupman')を作成しておいてもよいだろう。 そして、その実行ユーザーのホームディレクトリに、シンボリックリンクを集めたディレクトリを作る。

> mkdir ~/Backups_rsync
> cd ~/backup
> ln -s /etc etc
> ln -s /usr/local/etc local.etc
> ln -s /usr/local/www/data htdocs
> ln -s /usr/local/mailman mailman

といった具合に。 お察しの通り、これらはバックアップ対象ディレクトリへのシンボリックリンク。お好みに合わせて、好きなだけリンクを作るといい。

以上の準備が終われば、あとは以下のコマンド

/usr/local/bin/rsync -vzrptgoL --delete /root/Backups/ piano.smb.net:/usr/Backups/Hotshot/

を用意する。なお、コマンドオプションで、-avz としたいところであろうが、-a は、-rlptgoD オプションと同義であり、l を含むため、コピー元のシンボリックリンクまで反映してしまい、か・な・り・ファンキーなことになってしまうので要注意!!
テストすると、

    :      :
mailman/tests/msgs/
mailman/tests/msgs/bad_01.txt

sent 430859674 bytes  received 217148 bytes  6029046.46 bytes/sec
total size is 560331906  speedup is 1.30

と動作確認できる。このままcrontabに書き込むのはちょっと長いので vi /root/bin/backup_to_piano.sh として

#!/bin/sh
/usr/local/bin/rsync -vzrptgoL --delete /root/Backups/ piano.smb.net:/usr/Backups/Hotshot/

というコマンドをつくり

crontabに書き込む

だけだ。 vi /etc/crontab

# Backup to Piano
30	2	*	*	*	root	/root/bin/backup_to_piano.sh

鍵交換認証

http://phys8.s.chiba-u.ac.jp/nakayamal/machines.html#ssh02

アクセスする側で、

ssh-keygen -b 1024 -t dsa

してid_dsa.pubを作り、アクセス先の~foo/.ssh/へhotshot_id_dsa.pub などとリネームの上コピーし、

 % cp hotshot_id_dsa.pub authorized_keys

する。既にauthorized_keys が存在している様なら、

% cat ~/.ssh/hotshot_id_dsa.pub >> ~/.ssh/authorized_keys 
% chmod 600 ~/.ssh/authorized_keys

で、追加書き込みになります。

To Do

世代バックアップへの対応、ウィルスチェック等が今後の課題か。 マシンAにマシンBでのユーザー情報を追加する作業

http://blog.b-shock.co.jp/pooza/2006/01/freebsd_60.html

http://locs.bw.nitech.ac.jp/~kobayashi/computer.html#fedora03


Counter: 3759, today: 1, yesterday: 1

2018-10-08 (月) 11:34:40



トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS