社内ネットワーク内のNASからWindowsサーバーの定期バックアップをする


初投稿

ずっとQiitaはROM専だったがギョームの幅がRにとどまらなくなり、備忘録が欲しくなったのでQiita記事で記録することにした。


やりたいこと

最近Synlogy社のNASを立てた。こいつがなかなか優秀で、linuxベースで動いてくれるので、実質サーバー立てたみたいな状況になってる。そんな最中大ボスから


これまで手動でバックアップしてたWindowsサーバーの共有フォルダ、NASにバックアップしてくれない?


と依頼される。

やりかたは知らないけど、ま~できそうだな~と引き受けたものの、少々苦戦した。苦戦の結果、やったことは以下。


  • WindowsサーバーのIPアドレスを調べる

  • LinuxからWindowsサーバーをマウントする

  • ファイル同期シェルスクリプトを作成し、スケジューリングする


やりかた


IPアドレスを調べる

Windowsだと「ネットワーク」から共有フォルダをぽちぽちすると簡単にアクセスできてしまうが、こいつのIPアドレスを調べるのに一手間必要だった。

ホームネットワークに接続されているWindowsマシンのコマンドプロンプトから

C:\Users\user>nbstat -a <ホスト名>

することでIPアドレスを調べることができた。

え?管理者に聞けって?こんなことでいちいち情報システム部門に問い合わせて変な目で見られたくないし、なによりレスポンス遅いもん。


SMB接続をためす

Linuxからsamba-clientなるものを使う。入って無ければ事前にyumでもaptでも使ってinstalすべし。まずsynology NASのLinuxはyumどころかaptすら入っていないので自社のLinuxサーバー(計算用)を使って入ってみる。

smbclient '\\<IPアドレス>\..\<共有フォルダディレクトリ>' -U <host>\\<username>%<password>

とやると

Domain=[*****] OS=[SpinStream2] Server=[Windows 2000 Lan Manager]

smb: \>

無事に入れた!

こんにちは。Windows 2000 Lan Managerさん。君の名はWindows 2000 Lan Managerだったんだね。

その後synology NASの方から入ってみよう!としたが、なぜかread-onlyになってしまって全くSMBできなかった。synologyのサポートを読むと、一回マウントしてからrsyncするのが正攻法みたいなのでsmbでログインするのはやめた。


DSMのUIからマウント設定する

さっきのsynologyのサポートページを見るとDSMからマウント設定できることが分かった。のでやってみたらすんなりマウントできてしまった。File Station→ツール→リモートフォルダをマウント→CIFS 共有フォルダにて、ユーザーアカウント等入力。ユーザーアカウントでは<domain>\<username>でドメイン指定可能。


rsyncする

Puttyを使ってsynology NASのLinuxにssh接続する。

ssh <username>@10.x.x.x:/volume1

その後rsync

rsync -av //volume1/<マウントしたリモートディレクトリ>/<syncしたいフォルダ>/ //volume1/<sync先>/

これでコピーが始まってくれた!わーい。


rsyncをスケジューリングする

DSMのコントロコールパネル→タスクスケジューラーではユーザー指定のコマンドをスケジューリングすることができる。毎日レベルで同期して欲しいと言われたので、差分ファイルだけ変更するような形でrsyncすることにした。rsyncの細かい使い方は@nagaisさんの記事がウルトラ参考になった。

#!/bin/sh

rsync --checksum -av //volume1/<マウントしたリモートディレクトリ>/<syncしたいフォルダ>/ //volume1/<sync先>/

上の内容を書き込んだシェルスクリプトを適当な場所に放り込み、DSM側でタスクスケジュール設定。これで完成!


感想

Linux初心者な上に接続プロトコルとかさっぱりで半日かかってしまった。とはいえ、SMB接続とかの接続プロトコルが結構勉強になった。でも頻繁にやるようなことでもなさそうだし、すぐ忘れると思う。