TeraStationとrsyncとWindows

Windows

はじめに

以前に購入したTeraStationにWindowsのデータを定期的に自動でバックアップしたいとの要望があったのでrsyncでバックアップするように設定しました。
TeraStationは、「バックアップ」という項目を有効にすると「rsyncd」が起動するので利用します。
また、「バックアップ公開パスワード」を設定しないと誰でもアクセスできるので、パスワードを設定します。

普段、自分のバックアップにはFastCopyを使っていますが、NASの「rsyncd」を有効利用したいのでWindowsで「rsync」をタスクで動かすことにしました。
「cwRsync」には、SSH関連のコマンドも含まれていますので大変便利です。

また、正常に動作していることを確認したかったので、wshを使ってrsyncの結果をメールで通知させています。
その他にTeraStationでrootを有効にしています。

【追記 2013.02.05】
処理が遅くなるけれどチェックサムによる比較を行う「-c」オプションを付けて運用するようにした。

環境

  • Buffalo TeraStation TS-XL/R5シリーズ Firmware ver.1.59
  • Buffalo TeraStation TS-XL/R5シリーズ Firmware ver.1.55
  • Buffalo TeraStation TS-XL/R5シリーズ Firmware ver.1.30
  • WindowsXP Pro SP3
  • cwRsync ver.4.0.4(rsync ver.3.0.7)
  • Windows Script Host ver.5.7

TeraStationの設定

今回は、「共有フォルダー」→「共有フォルダー」タブを辿り、「公開先」を「Win/Mac(SMB)」、「バックアップ」だけにしました。
「隠し共有」、「バックアップ公開パスワード」はお好みで。

スクリプトの準備

「C:\Program Files\cwRsync\cwrsync.cmd」を適当なディレクトリにコピーします。
以下ではコマンドラインで行っていますが、通常はマウスで行います。

mkdir D:\cwrsync
copy "C:\Program Files\cwRsync\cwrsync.cmd" D:\cwrsync

「cwrsync.cmd」について

上記でコピーした「D:\cwrsync\cwrsync.cmd」を編集します。
「xxx.xx.xx.xx」はIPアドレス。
「array1_hoge」の「array1」の部分は、TeraStationで表示される「ディスク領域」が「RAIDアレイ1」だったため。
「array1_hoge」の「hoge」の部分は、TeraStationで設定した「共有フォルダー名」。
「rsync」のオプションは、「-a」だけでも良いのですが、メールで内容を通知したいので「-v」も付けておきます。
ディレクトリの指定方法は「cwrsync.cmd」に例が記載されています。
例えば「C:\WORK\」は「/cygdrive/c/work/」とします。(cwrsync.cmdから引用)

「rsync」の「–chmod」オプションでディレクトリを全て「実行可」、ファイルを全て「読み書き可」にしました。
バックアップ先の既存のファイルのパーミッションを変更したくない場合は「–perms」オプションと併用します。

TeraStationの「バックアップ公開パスワード」を設定した場合は「TARGET_HOST」の書式が少し変わります。
「バックアップ公開パスワード」を設定しない場合は、2通りの書き方が出来るようです。
一応、「UTF-8」で保存しておきます。

cwrsync.cmd(バックアップ公開パスワードなし)

REM SET RSYNC_OPT=%RSYNC_OPT% --parms
REM SET RSYNC_OPT=%RSYNC_OPT% --checksum

# Add checksum
SET RSYNC_OPT=%RSYNC_OPT% -avc

REM SET RSYNC_OPT=%RSYNC_OPT% -av

SET RSYNC_OPT=%RSYNC_OPT% --delete
SET RSYNC_OPT=%RSYNC_OPT% --chmod=Da+rwx,Fa+rw

SET RSYNC_SRCDIR=/cygdrive/d/home/

SET TARGET_HOST=rsync://xxx.xx.xx.xx/array1_hoge
REM SET TARGET_HOST=rsync://array1_hoge@xxx.xx.xx.xx/array1_hoge

REM @ECHO ON
rsync %RSYNC_OPT% %RSYNC_SRCDIR% %TARGET_HOST% > log.txt

cscript mail.vbs

cwrsync.cmd(バックアップ公開パスワードあり)

REM SET RSYNC_OPT=%RSYNC_OPT% --parms
REM SET RSYNC_OPT=%RSYNC_OPT% --checksum

# Add checksum
SET RSYNC_OPT=%RSYNC_OPT% -avc

REM SET RSYNC_OPT=%RSYNC_OPT% -av

SET RSYNC_OPT=%RSYNC_OPT% --delete
SET RSYNC_OPT=%RSYNC_OPT% --chmod=Da+rwx,Fa+rw
SET RSYNC_OPT=%RSYNC_OPT% --password-file=/cygdrive/d/cwrsync/passwd-nas.txt

SET RSYNC_SRCDIR=/cygdrive/d/home/

SET TARGET_HOST=rsync://array1_hoge@xxx.xx.xx.xx/array1_hoge

REM @ECHO ON
rsync %RSYNC_OPT% %RSYNC_SRCDIR% %TARGET_HOST% > log.txt

cscript mail.vbs

パスワードファイル(バックアップ公開パスワードあり)

テキストエディタでパスワードファイルを作成します。
例えば、TeraStationで「バックアップ公開パスワード」を「hogehoge」にした場合、ファイルにも「hogehoge」を書きます。
また、UNIX系ではパスワードファイルのパーミッションを「600」にしないと「rsync」から警告が出て動作しませんが、Windowsでは確認していません。
私はセキュリティ上、「Everyone」は外しています。

hogehoge

mail.vbs

Windowsのwshを使ってメールを送信します。
「cwrsync.cmd」と同じディレクトリ「D:\cwrsync」に置きます。
一応、「UTF-8」で保存しておきます。

Set msg      = CreateObject("CDO.Message")
msg.Subject  = "[NAS backup]"
msg.Sender   = "xxx@xx.xx.xx"
msg.From     = "xxx@xx.xx.xx"
msg.To       = "xxx@xx.xx.xx"
msg.TextBody = "Backup" & vbCRLF & Now

msg.AddAttachment "D:\\cwrsync\\log.txt"

msg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

' Remote SMTP Server
msg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
"smtp.xxx.xx.xx"

' Server port (typically 25)
msg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25

' Connection Timeout in seconds
msg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60

msg.Configuration.Fields.Update

msg.Send

Windowsのタスクスケジューラの設定

修正した「cwrsync.cmd」を指定して、1日1回動作するように設定します。

wshを使ったメール送信

http://slashdot.jp/~rxk14007/journal/224550
http://www.atmarkit.co.jp/fwin2k/win2ktips/428wshmail/wshmail.html
http://www.atmarkit.co.jp/fwin2k/win2ktips/452rejectlogon/rejectlogon.html

Use your Terastation as Rsync Backup Target

TeraStationとrsyncの基本的な使用法。
「バックアップ公開パスワードなし」の場合のみ掲載されています。
http://www.arnebrodowski.de/blog/use-your-terastation-as-rsync-backup-target.html

cwRsync

http: //rsync.net/resources/howto/windows_rsync.html

rsyncの使用方法

rsyncを使った熟練者レベルのバックアップ
rsyncを使いこなせば、あなたが想定するバックアップのニーズのほとんどに対応できるようになる。ここでは、あなたをrsyncマスターにするためのポイントを解説する。

rsync

http://rsync.samba.org/
http://www.infoscience.co.jp/technical/rsync/

rsync wikipedia

rsync - Wikipedia
バッファロー TeraStation TS3020DNシリーズ 2ベイデスクトップNAS 8TB TS3220DN0802

Comments