以前購入したSynologyのNASにrsyncでバックアップしたいと思います。rsyncでバックアップ出来たら超楽ですよね。更新されたファイルだけコピーできるからね。楽です。マジで。というわけでやり方。

rsyncとは


高速にファイル同期できるコマンドです。バックアップって更新されたファイルだけ手動で転送とかめんどくさいでしょ。rsyncだとオプションで更新されたファイルのみ同期とかできるのでバックアップには最適です。

環境


  • DSM 6.1.3-15152
  • バックアップ元のOS: Windows10

DSMってアレね。SynologyのNAS向けのOSね。バックアップもとのOSはぶっちゃけ関係ないですけど、記事的にWindows関連の内容を含んでるので書いてます。

ssh有効化


まず、sshできないといけないので、sshを有効にします。ブラウザでNASにアクセスして「コントロールパネル -> 端末とSNMP」を選択します。「SSHサービスを有効化する」にチェックを入れます。私は自宅の同一ネットワークからしかアクセスしないのでデフォルトの22ポートにしてますが、そうでない場合はポートは変えた方がいいでしょう。

rsync有効化


続いてrsyncを有効化します。「コントロールパネル -> ファイルサービス -> rsync」から「rsyncサービスを有効にする」にチェックを入れます。次に「rsyncアカウントを有効にする」にチェックをいれて「rsyncアカウントを編集」を押します。

rsyncを行う際のユーザを追加します。この時にAdministratorグループに属するユーザでないとファイルの「グループ・所有者」の情報が維持できないようなので、Administratorグループに属するユーザを追加します。

スクリプト書く


rsyncのスクリプト書きます。今回はスクリプトをDドライブ直下に置いて、Dドライブをまるまるバックアップするという前提で、下記のような感じで書きました。(以下、Dドライブにスクリプトを保存して実行するという前提で記事を書いてます。)

1
2
3
4
5
6
7
8
9
#!bin/sh

rsync -av \
--exclude '/RECYCLED/' \
--exclude '/$Recycle.Bin/' \
--exclude '/$RECYCLE.BIN/' \
--exclude '/System Volume Information/' \
--exclude 'pagefile.sys' \
./ rsyncを行う際のユーザ@NASのIPアドレス::バックアップ先のディレクトリ

一応ちょろっとだけ解説を書いておくと…

  • 最後の行でバックアップ元とバックアップ先を指定
    • バックアップ元がDドライブ全体で、Dドライブ直下で実行するのを前提としているのでバックアップ元は./と指定
  • コマンドが長いのでバックスラッシュ\で改行
  • --excludeオプションで除外ファイル指定
  • vオプションで結果の詳細出力
  • aオプションは書いたら長くなるので調べて…

上記のスクリプトは--deleteオプションを指定していないので、バックアップもとでファイルを削除してもNAS側では削除されません。この辺は「rsync オプション」とかでググっていい感じに、お好みに仕上げてください。また、ポート変えてる場合はポートも指定するようにしてください。

実行してみる


こいつをDドライブの直下に置いてBash on Windowsで実行してみましょうか…。ファイル名をrsync.shとかで保存してBash on Windowsを起動してsh rsync.shですね。

ああ~Linuxのコマンドが使えるBash on Windowsサイコーですね!!サイコー!! 

サイ..コー…サイ…。

動きませんでした…。

そうなんですよ!!我が家のPCはなぜかBash on Windowsが起動すらしてくれないんですよ!!

Bash on Windowsでrsync出来た人。おめでとうございます。スクリプト実行時にユーザのパスワードを聞かれますので、パスワード入力してrsyncが動き出したら終わりです。Bash on Windowsが動かなかったレアな方は引き続き記事をご覧ください。

MSYS2をインストールする


仕方ないのでMSYS2をインストールします。

  1. インストーラーをダウンロードして、ダイアログに従ってインストールします。
  2. MSYS2を起動します
  3. MSYS2のコンソールでpacman -S rsyncでrsyncをインストールします

これでMSYS2を利用してrsyncできるようになります。

実行してみる


MSYS2を起動してcd d:と入力します。これでDドライブに切り替わります。後はsh rsync.shで先ほど作成したスクリプトを実行します。パスワード聞かれますので入力したらrsyncがはじまります。やったね!!

毎回パスワード聞かれるのがめんどくさいのですが、パスワード聞かれないようにするにはパスフレーズなしの鍵を作成して、そいつを使うことになると思います。私はたまにバックアップ出来たらいいのでそこまでやってません。初回は全ファイルのコピーに時間が掛かりますが、2回目以降は変更されたファイルだけコピーされるのでかなり楽です。