プラスα空間

ブログ in お市 のーと

LANDISK Home HDL4-Gをrsyncサーバにする[追記あり]

I-O DATAのNAS、LANDISK Home HDL4-Gのtelnetを有効化しています。

ログインして、中を色々除いていたら、興味深い物を見つけました。

# /usr/bin/rsync --daemon --help
rsync  version 2.6.4  protocol version 29
Copyright (C) 1996-2005 by Andrew Tridgell and others
<http://rsync.samba.org/>
Capabilities: 64-bit files, socketpairs, hard links, symlinks, batchfiles,
inplace, IPv6, 64-bit system inums, 64-bit internal inums

rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
are welcome to redistribute it under certain conditions.  See the GNU
General Public Licence for details.

Usage: rsync --daemon [OPTION]...
--address=ADDRESS       bind to the specified address
--bwlimit=KBPS          limit I/O bandwidth; KBytes per second
--config=FILE           specify alternate rsyncd.conf file
--no-detach             do not detach from the parent
--port=PORT             listen on alternate port number
-v, --verbose               increase verbosity
-4, --ipv4                  prefer IPv4
-6, --ipv6                  prefer IPv6
-h, --help                  show this help screen

If you were not trying to invoke rsync as a daemon, avoid using any of the
daemon-specific rsync options.  See also the rsyncd.conf(5) man page.

rsyncがインストールされており、daemonモードも使える様です。

また、”/etc/init.d/rsync”も用意されており、ちょっとした設定ファイルを書くだけで、使えそうな感じです。

設定ファイルを書いてみて試した所、うまく動きました。

LANDISK Home HDL4-Gをrsyncサーバにする方法をまとめてみます。

LANDISK Home HDL4-GのIPアドレスが、”192.168.1.200″になっている物として説明します。適宜、お使いの環境に合わせて、設定し直して下さい。

1.用意するもの

これ以外に、必要な物はありません。暗号化が不要ならば、sshの導入も不要です。

2./etc/default/rsyncの準備

このファイルで、rsyncを使用するかどうかとrsyncのオプションを設定します。

[shell]
RSYNC_ENABLE=true
RSYNC_OPTS=’–port=10873′
[/shell]

rsyncが使う、デフォルトのポート番号は”873″番です。この設定をする事で、”10873″番を使う様にできます。ささやかな、セキュリティ確保です。

# mount -o remount,rw,noatime /
# cat > /etc/default/rsync <<EOF
RSYNC_ENABLE=true
RSYNC_OPTS='--port=10873'
EOF
# mount -o remount,ro /

ただ、クライアント側でもポート番号を変更する必要があります。利便性を取るなら、次の様に設定して下さい。

[shell]
RSYNC_ENABLE=true
RSYNC_OPTS=”
[/shell]

3./etc/rsyncd.confの準備

このファイルに、rsyncのdaemonモードの設定を書きます。

# mount -o remount,rw,noatime /
# vi /etc/rsyncd.conf
# mount -o remount,ro /

/etc/rsyncd.confに書く内容は、次の通りです。

#
# Global options
#
uid           = root
gid           = wheel
use chroot    = yes
log file      = /var/log/rsync.log
pid file      = /var/run/rsync.pid
hosts allow   = 192.168.1.0/24
hosts deny    = *
dont compress = *.gz *.tgz *.zip *.pdf *.sit *.sitx *.lzh *.bz2 *.jpg *.gif *.png
exclude       = .svn .DS_Store

#
# Module options
#
[rsync]
comment       = rsync server
path          = /mnt/sataraid1/share/rsync
read only     = no

“hosts allow”と”hosts deny”で、サブネット”192.168.1.*”以外からのアクセスを排除しています。

“.svn”ディレクトリと、OS Xが作る”.DS_Store”を除外指定しています。

“[rsync]”が、サーバとして見えるパスになります。実体は、”path”に書いた部分です。この部分を、次の「共有フォルダ”rsync”」で準備します。

4.共有フォルダ”rsync”

# mkdir /mnt/sataraid1/share/rsync

WebのGUIから、共有フォルダを作った方が管理上は良いのかもしれません。ただ、不用意に公開してしまう事になるので、直接ディレクトリを作ってしまいました。

5.rsyncデーモン起動

とりあえず、設定が正しいかどうか、確認してみます。

# /etc/init.d/rsync start
Starting rsync daemon: rsync
# ps auxww | grep rsync
root     24490  0.0  1.0  2068  648 ?        Ss   23:22   0:00 /usr/bin/rsync --no-detach --daemon --config /etc/rsyncd.conf --port=10873
root     24494  0.0  1.1  4080  708 pts/0    D+   23:23   0:00 grep rsync

起動した様です。

6.接続テスト

クライアント側から、次のコマンドでrsyncを実行します。カレントディレクトリに、”source”と言うディレクトリがあり、中に、”a.txt”と”b.txt”がある物とします。

% rsync -av --port=10873 source rsync://192.168.1.200/rsync
building file list ... done
source/
source/a.txt
source/b.txt

sent 192 bytes  received 66 bytes  516.00 bytes/sec
total size is 0  speedup is 0.00

正常終了しました。

クライアントは、OS X 10.7.5 Lionです。

日本語のファイル名(UTF-8)も大丈夫でした。

ファイルを追加すれば、追加できます。

また、ファイルを削除したい時は、”–delete”オプションを指定して下さい。

% rsync -av --port=10873 --delete source rsync://192.168.1.200/rsync
building file list ... done
deleting source/b.txt
source/
skipping server-excluded file "source/.DS_Store"

sent 193 bytes  received 22 bytes  430.00 bytes/sec
total size is 6148  speedup is 28.60

7.自動起動設定

このままでは、再起動しても、rsyncはdaemonモードで動いてくれません。

次の設定で、自動起動する様になります。

# mount -o remount,rw,noatime /
# update-rc.d rsync defaults 50
 Adding system startup for /etc/init.d/rsync ...
   /etc/rc0.d/K50rsync -> ../init.d/rsync
   /etc/rc1.d/K50rsync -> ../init.d/rsync
   /etc/rc6.d/K50rsync -> ../init.d/rsync
   /etc/rc2.d/S50rsync -> ../init.d/rsync
   /etc/rc3.d/S50rsync -> ../init.d/rsync
   /etc/rc4.d/S50rsync -> ../init.d/rsync
   /etc/rc5.d/S50rsync -> ../init.d/rsync
# mount -o remount,ro /

この後再起動して、正しく動作しているかご確認ください。

参考ページ

次のウェブサイトを参考にさせていただきました。ありがとうございます。

rsync でディレクトリの同期(バックアップ) – maruko2 Note.
rsync全般について。大変良くまとめられております。
Debianでの起動処理(init)とランレベル(rc.d)の制御
run levelの設定について、詳しくまとめられております。
exclude = .svn
オプションの設定を参考にさせていただきました。

(追記 2013-09-14 07:37)

rsyncサーバとして動作させられますが、rsyncのバージョンが古くてがっかりと言う話です。

LANDISK Home HDL4-Gについては、次のページにまとめてあります。

コメントを残す