プログラマーのメモ書き

伊勢在住のプログラマーが気になることを気ままにメモったブログです

QNAP NetBak Replicator によるバックアップ

先日、第24回伊勢IT交流会にて、こちらの記事で書いた、 cron + rsnapshot による Windows のバックアップの話をしたら、 QNAP の NAS なら同期アプリかバックアップツールがあったはずだよ、と教えてもらいました。

一度、調べてみる価値ありそうだと思い、早速みてみると、2つほどバックアップに使えそうなツールがありました。

NetBak Replicator は Windows にインストールして使うツールで、ローカルドライブのデータをバックアップするツールになります。以前あきらめた Windows のファイル履歴に代わるようなツールのイメージです。

Qsync は NAS 上のデータ領域をクライアント側で同期するというのが本来の目的のようです。プライベートな dropbox を作るイメージですかね。クライアントが1つなら、データのバックアップツールと同じように使うことができます。

前に設定した cron + rsnapshot によるバックアップでは、バックアップ実行中での PC シャットダウンが運用上のネックになっていたので、 NetBak Replicator を使ったバックアップに切り替えることで、それを回避できないか試してみましたので、それについてメモっておきます。

なお、 QNAP でのバックアップ全般については、 QNAP の記事 なども参考にしてください。

NetBak Replicator のインストール

NetBak Replicator は QNAP NAS 上で動作するのではなく、Windows などにインストールして使うツールになります(QNAP が NAS を有効利用するため配布しているツールなんでしょうね)。

なので、インストールは、QNAP のサイトより NetBak Replicator をダウンロードして、 Windows にインストールする形になります。

基本的には、画面の説明通りに進めればOKです。 NetBak Replicator のマニュアル(PDF)もありましたので、ご参考にどうぞ。

インストールを進めると、最後のほうで、下記のように

f:id:junichim:20220117225854p:plain

起動オプションを決めるように求められるのですが、今回はデフォルトのままとしました。

初回起動

インストールが問題なく終わり、最初に NetBak Replicator を起動すると、下記のような画面が表示されます。

f:id:junichim:20220117225932p:plain

ここでは、地域情報としてグローバルを選択します。

でも、これってどういうことだろうと思って、画面のリンクをたどると、

QNAP モバイルアプリおよびユーティリティが現在の位置を確認する必要があるのはなぜですか? | QNAP

中国への対応とのことです。なんだかなー。

このあと、下記のような設定ウィザードが出るのですが、ここはキャンセルします。

f:id:junichim:20220118102300p:plain

最後に、シンプルモードの開始画面が表示されて、 NetBak Replicator が起動した状態になります。

f:id:junichim:20220118102347p:plain

画面下部の『拡張モード』を選択して、拡張モードで設定を進めます。

設定

無事にインストールが完了して、 NetBak Replicator が起動したら、バックアップを設定します。 が、その前に、どのバックアップ種類を使うか決定します。

どのバックアップを使うか

NetBak Replicator は3種類のバックアップがあります。

  • オートバックアップ
  • スケジュールバックアップ
  • インスタントバックアップ

オートバックアップは、指定したフォルダに変更があった際に自動的にバックアップを取るものです。 スケジュールバックアップは文字通り、設定したスケジュールでバックアップを取る機能です。 インスタントバックアップは、ボタンを押して手作業でバックアップを取る機能です。

スケジュールバックアップが望ましいかなと思ったのですが、

  • 日次・週次・月次のような形の世代管理の形ではバックアップデータを管理できない(バックアップごとに別フォルダにデータを貯めていくことはできる)
  • 古いデータの自動削除は行ってくれないので、どこかで手作業で削除作業を行う必要がある

ということのようなので、断念しました

Windows 上の作業データのバックアップが主な目的なので、

  • Windows での作業中はオートバックアップでデータを保護するようにして、
  • 作業完了後、夜中に NAS 側でスナップショットをとる( cron + rsnapshot でやったのと同様に、バックアップ先は NAS の iSCSI ターゲットをマウントしたドライブにする予定)

という形で、過去データをカバーするようにしてみました。こういった世代管理や重複データをハードリンクを使って使用量を減らすという点では、 rsnapshot のほうがいいですね。

オートバックアップの設定

オートバックアップを使うことに決めたので、 NetBak Replicator を起動して、拡張モードに切り替えて、『オートバックアップ』タブを選択します。

f:id:junichim:20220118102645p:plain

左側のツリーからバックアップ対象(画面上は『自動バックアップソース』となっています)を選択します。

右側のドロップダウンリストでバックアップ先(画面上は『宛先を選択してください』となっています)を指定します。今回はローカルドライブを指定していますが、任意のフォルダやネットワークドライブ等も指定できるようです。

あと、画面下部の『オプション』から、

f:id:junichim:20220118105839p:plain

のように、ログとして表示するものを『警告とエラーログのみを表示』に切り替えておきます。

参考:バックアップ先指定時のエラー

なお、『宛先を選択してください』のドロップダウンリストより、

f:id:junichim:20220118092346p:plain

『その他の場所』を選択すると、

f:id:junichim:20220118092131p:plain

のようなダイアログが表示されます。ここの説明の例で、ドライブ内のフォルダを指定することができる、ように書いているので、その通りに入力すると、

f:id:junichim:20220118092054p:plain

というエラーが表示されて、設定できないことがありました。指定したドライブが iSCSI ターゲットをマウントしたドライブだったためかもしれませんが、再度試したときはうまく指定できたので根本的な理由はよくわかりません。ま、ご参考までに。

バックアップ実行

設定ができれば、画面右下の『自動バックアップを開始』ボタンを押します。すると、下記のようなダイアログが表示され、

f:id:junichim:20220118102946p:plain

その場でバックアップが始まります。

なお、バックアップ先は、下記の記事などでも書かれているように、

指定したバックアップ先に

NetBakData\ユーザー名@マシン名

というフォルダが作成され、その内部に『Disk C』などのドライブ名のフォルダが作成され、その内部にドライブ名以下のパス付でデータが保存されていきます。

参考:ユーザーフォルダを指定した場合

バックアップ対象を指定する際に、下図のようにユーザー名のフォルダ以下を指定した場合、

f:id:junichim:20220118110849p:plain

バックアップ先は、 VistaProfileData というフォルダが作られて、その中に、指定したフォルダ以下のデータが保存されました。

f:id:junichim:20220118093708p:plain

一方、バックアップ対象として、直接、C:\Users\ユーザー名\指定フォルダ名 を指定した場合は、

f:id:junichim:20220118093856p:plain

のように『Disk C』フォルダが作られ、その内部に Users 以下のパスを保持して保存されました。

Windows のバージョンでユーザーフォルダの位置がいろいろと変わるので、それへの対応なんでしょうね、きっと。いずれにせよ、バックアップ対象の指定の仕方で保存先フォルダ名が変わるようですので、ご注意ください。

参考:長いファイル名について

バックアップの際に、長いファイル名についてはバックアップできないようです。スクリーンショットは取れなかったのですが、260文字以上のパス名がある場合は、エラーとして表示されていました。

オートバックアップのテスト

最初に指定したバックアップ元のデータをすべて保存できたら、

f:id:junichim:20220118094310p:plain

こんな感じの画面になり、『ステータス』が『開始』になります。

これで、自動バックアップが動作しているはずです。確認のために NetBak Replicator の画面をいったん閉じます。

テストしてみます。バックアップ元フォルダで、ファイルを追加します。

f:id:junichim:20220118094505p:plain

その後、バックアップ先フォルダを開くと、

f:id:junichim:20220118094537p:plain

おお、ちゃんとコピーされてますね。

PCを再起動してから、もう一度同じテストを行ってみましたが、あれ?なぜかうまくいきません。バックアップ対象フォルダにファイルを追加しても、バックアップが取られません。なんでだろうか?

PC 再起動時の動作確認

実は、PC 再起動時、上記で示したものと同じエラー画面が表示されていました。この時は、バックアップ先として NAS の iSCSI ターゲットをローカルドライブとしてマウントしたドライブを指定していました。

また、この時、タスクトレイのアイコンを見ると、 NetBak Replicator 自体は自動起動していますが、 NetBak Replicator を起動して確認すると、ステータスが『停止』に変更されていました。

このため、iSCSI 絡みで問題が起きているのかもと思い、バックアップ先を D ドライブ( PC の SSD 上のドライブ)内のフォルダに切り替えて、同じテストをすると、この時は問題なくバックアップが取られます。

ということで、改めてエラーメッセージの内容を考えると、PC再起動により NetBak Replicator が起動された時点で iSCSI ドライブのマウントが完了していないため、バックアップ保存先が利用できなくて、自動バックアップそのものも正常に動作しなかった、のではないかと推測されます。

起動タイミングの調整

もし、この推測の通りだとすると、 NetBak Replicator が iSCSI マウント完了後に起動すれば、正しく動作しそうです。 NetBak Replicator はどこで起動されているのかと調べてみると、タスクスケジューラにありました。

f:id:junichim:20220118104820p:plain

起動タイミングは、ログオン時になっています。

f:id:junichim:20220118105018p:plain

iSCSI はログオンするとわりとすぐに再接続されている(ドライブが有効になった旨の通知が表示されている)ので、ログオン時に若干待ってから、 NetBak Replicator の起動タスクを実行すればいいんじゃないかと思います。

そこで、タスクスケジューラのこのタスク上で右クリックして、『プロパティ』を選択し、『トリガー』タブを選択して、起動トリガーを選択して『編集』を押します。

f:id:junichim:20220118105343p:plain

『詳細設定』で『遅延時間を指定する』にチェックを入れて、遅延時間として『30秒間』を選択します。

設定を変更したら、一度PCを再起動して、 NetBack Replicator が正しく起動されるか確認すると、先ほど出ていたエラーがでません。 さらに、 NetBak Replicator を表示してステータスを確認すると『開始』になっていました。 また、実際にファイルを追加すると、即座にバックアップ先にも保存されており、問題ありませんでした。

にらんだ通り、iSCSIドライブのマウントのタイミングが原因だったようです。

まとめ

このツールとオートバックアップ機能を使うと、 PC のシャットダウン時のバックアップ停止などを考えなくてよさそうなので、気軽に使えそうです。

前回試した cron + rsnapshot は無駄だったかな?と思ったのですが、よくよく考えると wsl 側のホームディレクトリは NetBak Replicator では扱えません。

ということで、最終的には、

  • Windows 側のデータ: NetBak Replicator
  • wsl 側のホームディレクトリ:cron + rsnapshot

として、両者を組み合わせてバックアップを取るようにしました。

wsl のホームディレクトリ部分だけなら、大して処理に時間がかからないので、運用上大きな問題にならないと見込んだためです。

これで、しばらくバックアップに悩まされなくて済むかな?