WD My Book Live から 玄人志向 キワモノシリーズ NAS 4TB KURO-N4B2ND4 へrsyncする方法

■rsync clientの設定

WD My Book Live 2.0TBにSSHクライアントからログインします(アカウントはroot)。

WD My Book Live 2.0TBでは当然rsyncコマンド(client)を使ってデータ転送を行います。
玄人志向 キワモノシリーズ NAS 4TB KURO-N4B2ND4のWake-on-LAN機能を有効にして電源オフの状態から自動で電源を入れてバックアップします。
以下はとりあえず作ってみたシェルスクリプトです。
結構無駄なこともやっているので、使うなら適宜編集してください。

#!/bin/sh

User="admin"
Host="IPアドレス"
Taskname="タスク名"
Broadcast="ブロードキャストアドレス"
Macaddr="00:E0:91:81:AB:CD"
Source="/shares/Public/"
Target="rsync://${User}@${Host}/${Taskname}"
Op1="-rlptDvh"
Op2="--password-file=/etc/rsync.passwd"
Op3="--delete"
Op4="--stats"
Op5="--exclude-from=/etc/nas/NSPT/exclude.txt"
Op6="--delete-excluded"
Op7="--dry-run"
Log="/var/log/rsync2kuro.log"
cmd1="ping -c 5 -q ${Host}"
cmd2="wakelan -b ${Broadcast} -m ${Macaddr}"
cmd3="rsync ${Op1} ${Op2} ${Op3} ${Op5} ${Op6} ${Op7} ${Source} ${Target}"
cmd4="rsync ${Op1} ${Op2} ${Op3} ${Op4} ${Op5} ${Op6} ${Source} ${Target}"

echo -n "RsyncServer(${Host}) Active Check..." && ${cmd1} >/dev/null 2>&1
if [ $? -eq 0 ]; then
  echo "OK"
else
  echo -e "No Responce\nexec \"${cmd2}\" " && ${cmd2}
  echo -n "RsyncServer(${Host}) Bootup Waiting"
  for i in `seq 1 30`
  do
    echo -n "." && ${cmd1} >/dev/null 2>&1
    status=$?
    if [ ${status} -eq 0 ]; then
      echo -n "!"
      sleep 20
      for j in `seq 1 10`
      do
        echo -n "." && ${cmd3} >/dev/null 2>&1
        if [ $? -eq 0 ]; then
          echo "OK"
          break
        else
          status=$?
        fi
      done
      break
    fi
  done
  if [ ${status} -ne 0 ]; then
    echo -e "Faild\nrsync abort!!"
    exit 1
  fi
fi

echo -n "exec \"${cmd4}\" " && ${cmd4} >${Log} 2>&1
if [ $? -eq 0 ]; then
  echo "Success!!"
  exit 0
else
  echo "faild..."
  exit 1
fi

= シェルスクリプトの解説 =

3: User="admin"
rsync server(KURO-N4B2ND4)で設定したユーザID

4: Host="IPアドレス"
rsync server(KURO-N4B2ND4)のIPアドレスを指定します。(例 192.168.0.100)

5: Taskname="タスク名"
rsync server(KURO-N4B2ND4)で設定したTask Nameを指定します。

6: Broadcast="ブロードキャストアドレス"
rsync server(KURO-N4B2ND4)のブロードキャストアドレスを指定します。(例 192.168.0.255)

7: Macaddr="00:E0:91:81:AB:CD"
rsync server(KURO-N4B2ND4)のMACアドレスを指定します。

8: Source="/shares/Public/"
バックアップ元となるディレクトリを設定します。
末尾の"/"が有りと無しでは動作が変わるので要注意。

9: Target="rsync://${User}@${Host}/${Taskname}"
rsyncサーバを指定します。

10から16:
rsyncのオプションです。
11:の"--password-file=/etc/rsync.passwd"は${User}@${Host}のパスワードを/etc/rsync.passwdに平文で記述してあるということ。
これが無いと接続時に${User}@${Host}のパスワードの入力を求められます。

# echo > "${User}@${Host}のパスワード" > /etc/rsync.passwd
# chmod 600 /etc/rsync.passwd

17: Log="/var/log/rsync2kuro.log"
rsyncコマンドの実行結果を保存するファイル名を指定します。
何も保存したくなければ Log="/dev/null" とします。

18から21:
実行するコマンドを変数に代入しています。

参考までに200GBを転送完了するまで2時間まで掛かりませんでした。
ネットワークの状況や1ファイルあたりのサイズによって時間は前後します。
スループットは20MByte/sec程度は出ていましたが、ボトルネックはWD My Book Live 2.0TBにあるかもしれません。