HS-DGL! + ハックキット 2.0:バックアップ(2)


HS-DGL! のバックアップを HS-DGL! 自身の HDD に取っても HDD がクラッシュしてしまうとバックアップの意味がない。
昨日のスクリプトで /mnt/Backup/gawa に取った バックアップを rsync を使って HGLAN と 赤い HD-120LANとにコピーする

HS-DGL! 側の設定

rsync サーバとなる HS-DGL! は、 /mnt/Backup が rsync://gawa/Backup となるよう設定する。

/etc/rsyncd.conf

まずは、/etc/rsyncd.conf
[root@gawa etc]# cat /etc/rsyncd.conf
[Backup]
        path = /mnt/Backup
        hosts allow = 192.168.1.32 192.168.1.36
[root@gawa etc]#

inetd.conf

続いて、rsync が daemon として起動するよう inetd.conf に追記する。
[root@gawa etc]# cd /etc
[root@gawa etc]# mv inetd.conf inetd.conf.orig
[root@gawa etc]# cp inetd.conf.orig inetd.conf
[root@gawa etc]# vi inetd.conf
	:
[root@gawa etc]# diff -c inetd.conf.orig inetd.conf
*** inetd.conf.orig     2004-02-22 23:55:34.000000000 +0900
--- inetd.conf  2005-12-23 13:39:43.000000000 +0900
***************
*** 89,91 ****
--- 89,92 ----
  #auth stream  tcp     wait    root    /usr/sbin/in.identd in.identd -e -o
  #
  # End of inetd.conf
+ rsync stream  tcp     nowait  root    /usr/sbin/tcpd /usr/bin/rsync --daemon
[root@gawa etc]#

inetd.conf の reload

最後に、inetd に inetd.conf を再読込みさせる。
[root@gawa etc]# kill -HUP `cat /var/run/inetd.pid`
これで、HS-DGL! の /mnt/Backup/gawa は rsync://gawa/Backup/gawa に 見えるようになる。

HGLAN 側の設定

rsync クライアントとなる HGLAN では、rsync://gawa/Backup/gawa を /mnt/Backup/gawa にコピーするスクリプトを書き、cron で起動する

コピースクリプト

スクリプトにするほどの行数ではないが、 コマンドをいちいち入力するのが面倒だし、間違えないようにするために スクリプトにする。
[root@giga sbin]# cat /usr/local/sbin/gawatogiga
#! /bin/sh

SRCHOST=gawa

cd /mnt/Backup
nice rsync -rtuvpogtlH --delete-excluded rsync://$SRCHOST/Backup/$SRCHOST .
[root@giga sbin]#
余談だが「シェル」とは /bin/bash などであって、 上のようにコマンドを書いたファイルは「シェルスクリプト」である。
「シェルを作る」と「コマンドインタプリタを作る」と ほぼ同義語と考えて良い。

手動で実行

cron に登録する前に手動で実行してみてエラーが出ていないか見るのは鉄則。
[root@giga sbin]# sh /usr/local/sbin/gawatogiga
receiving file list ... done
gawa/
gawa/gawa-bin.Fri.tar.gz
gawa/gawa-boot.Fri.tar.gz
gawa/gawa-chkconfig--list.Fri.gz
gawa/gawa-dev.Fri.tar.gz
gawa/gawa-etc.Fri.tar.gz
gawa/gawa-httpd.Fri.tar.gz
gawa/gawa-initrd.Fri.tar.gz
gawa/gawa-lib.Fri.tar.gz
gawa/gawa-opt.Fri.tar.gz
gawa/gawa-root.Fri.tar.gz
gawa/gawa-rpm-qa.Fri.gz
gawa/gawa-sbin.Fri.tar.gz
gawa/gawa-usr.Fri.tar.gz
gawa/gawa-var.Fri.tar.gz
gawa/gawa-www.Fri.tar.gz
gawa/gawa-yamasita.Fri.tar.gz
wrote 349 bytes  read 217912615 bytes  4686300.30 bytes/sec
total size is 217884807  speedup is 1.00
[root@giga sbin]#

cron への登録

毎時 25 分にコピースクリプトが起動するよう cron に登録する
[root@giga sbin]# crontab -e
	:
[root@giga sbin]# crontab -l
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.835 installed on Fri Dec 23 14:00:23 2005)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
	:
	:
25 * * * * nice /bin/sh /usr/local/sbin/gawatogiga 2>/dev/null 1> /dev/null
	:
	:
[root@giga sbin]#

赤い HD-120LAN側の設定

赤い HD-120LANでは、 家庭内の全 LinkStation を rsync でバックアップするスクリプトを 動作させている。このスクリプトに gawa を追加する。
[root@red /root]# cat /usr/local/sbin/Backup.to.red
#! /bin/sh

LOCKFILE=/tmp/`basename $0`
if [ -f $LOCKFILE ]
then
        echo $0 already running
        exit
fi
touch $LOCKFILE
#-------------------------------------

cd /mnt/home/Backup

#- link --------------------------------

SRCHOST=link
nice rsync -rtuvpogtlH rsync://$SRCHOST/Backup/$SRCHOST .

#- gawa --------------------------------

SRCHOST=gawa
nice rsync -rtuvpogtlH rsync://$SRCHOST/Backup/$SRCHOST .

#- giga ------------------------------

cd /mnt/home
SRCHOST=giga
nice rsync -rtuvpogDtlH rsync://$SRCHOST/home .

#-------------------------------------
rm -f $LOCKFILE
[root@red /root]#
本当は、trap を仕掛けて異常終了した場合もロックファイルを 消さないといけないのだが、、、手抜き。

赤い HD-120LANは、 不定期に手動でしか起動しないので、 このスクリプトは cron には登録していない。


いろいろな設定情報を公開すると、危険な場合があります
このページも 「赤い HD-120LANに侵入すれば、 rsync でファイルが取り出せます」 と書いているのと同じです。
セキュリティと公開する情報の範囲とにはくれぐれも注意しましょう。


HS-DGL! + ハックキット 2.0:バックアップ
ハックの記録
LinkStation/玄箱 をハックしよう

HS-DGL! + ハックキット 2.0:ファンコントロール

Copyright (C) 2005 Yasunari Yamashita. All Rights Reserved.
yasunari @ yamasita.jp 山下康成@京都府向日市