WASABI CLOUD NASを試す（３）

３回目はSync機能を使ってみます。[前回はここ](https://qiita.com/tsurun2/items/da1f12ee409ccb540ca7)。

# Snycとは？
WASABIの公式ドキュメントに立ち返って確認してみると、


https://docs.wasabi.com/docs/configuring-active-sync


まず正式名称は**Active Sync**です。
用途はというと、Chromeの翻訳機能を通すと、

**"Wasabi Cloud NAS Active Sync を使用すると、共通のバケットを介して、それぞれ別のコンピュータ上にある 2 つ以上のソースのコンテンツを同期できます。すべてのソースを同じバケットとペアにして、Active Sync ポリシーを構成する必要があります。Active Sync メカニズムは、ソースがバケット上のコンテンツの変更について他のソースに通知を送信する時間間隔と、ソースがバケット上の変更されたコンテンツ (新しく複製されたデータが利用可能、コンテンツが削除されたなど) について他のソースからの通知を確認する時間間隔という 2 つのパラメータを使用して動作します。"**

だそうです。

コンテンツ（ファイル）の同期だけなら簡単に使えそうですが、アクセス権に一貫性をもたせるならADがあったほうが良さそうですね、と思ったらちゃんと書かれています。

**"さらに、他のソースでファイルを取得するときにファイルのセキュリティ記述子を保持するようにWCNを設定できます。すべてのソースが同じ Active Directory ドメインにある場合にのみ、このオプションを有効にすることをお勧めします。"**　(同じくChromeの機械翻訳）

そりゃそうだ。

# Active Syncを試す
## 基本的な動作
### 2台目インストール
この機能を試すために別のPCにもWasabi Cloud NASをインストールしてみます。
**Add source**をしたあとで下のような画面で一方からアップロード（複製）済みのデータをどうするか聞かれるので、ひとまずデフォルトの**Import on demand**を選びました。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1839497/cfac5e81-f767-3d23-0213-18f6c311fb72.png)
（この選択肢は次の機会に深堀りしてみます。DRのリストアシナリオで、ファイル数、容量、ディレクトリ構造によっては復旧までの時間が大きく変わることになるのできっと重要です。試してないけど。）

同期されていますね。黒いウインドウは1台目、白いウインドウは2台目でアイコンに雲のロゴがついています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1839497/f2fe4dde-a1dc-b39d-da2f-023d27af1135.png)

2台目の方のファイルのプロパティを見てみると**ディスク上のサイズ**が0なのでスタブファイルであることが分かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1839497/4436ede0-0f80-0dae-aa1a-7991168324b4.png)
（この前は1MBだったのに今回は0バイトだ。なぜ異なるのか！？いったん無視）

### Sync設定
2台を同じSync設定をしてみました。
ついでにレプリケーションは1秒、リクレイムスペースは無効で設定を合わせてあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1839497/b5237422-5786-c177-4835-142bdf785b90.png)

Sync用のバケットが自動作成されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1839497/58f388e9-deb1-0fe5-35af-d5e6afba9b63.png)

1台目にファイルをコピーします。しばらくすると2台目に同じファイルのスタブファイルができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1839497/3459b1f6-bcaa-cacb-6d60-d17f1c7ce0f1.png)

次は2台目側にファイルを新規作成してみました。同様にしばらくすると1台目にスタブファイルができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1839497/5e6421b1-39d5-e9ab-3cf6-c11d89d26e12.png)
テキストを編集して上書き保存しても、しばらく（1分以内）すると他方にも反映されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1839497/6e258bff-ddfc-1a7e-05e4-119881a4e386.png)

## コンフリクト（競合）
次に同じファイルをそれぞれ異なる内容に編集してほぼ同時に上書きしてみるとどうなるでしょうか。手作業で行ったので**ccc**（1台目）を先に保存しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1839497/158e5aa3-4ab0-8d96-3784-fe9434c9f2d8.png)
逆に白いウインドウの2台目を先に上書き保存して間髪入れずにもう1台を上書き保存したらどうなるでしょうか。しかし1台目内容に上書きされました。
**このあたりのロジックはちょっと試した程度ではよく分かりませんでした！**

2台目だけを上書き保存したときはちゃんと1台目に同期されるので双方向に動作していることは間違いないようです。

## Versioning有効
バケットのVersioningを有効にしてみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1839497/ce07b443-c0bc-7fd9-4187-6421a8749f2b.png)

もう一方では**Refresh All**をクリックすると自動で有効になっています（設定も同期される）。
（スクショ省略）

この状態でどちらかで編集→上書き保存をして、ファイルのプロパティのVersionsを開いた時に複数のバージョンができ、かつ同期されていることが分かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1839497/5efdf75f-fc9d-3494-84fc-e524f075be66.png)

ここで再度それぞれ編集してほぼ同時に上書き保存するとどうなるか見てみます。
両方のバージョンが残ることを期待しましたが1台目の内容に上書きされてしまいました。残念、某類似製品のような動作を期待したけど違いました。（検証してから書いてないです。試しながらその場でこれを書いています。）
なぜか1台目が毎回勝ちます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1839497/bdf6ab77-5f74-1a52-42bb-3b140b64b45b.png)

一方の上書きが反映されてから他方を上書きする分にはちゃんと双方向で動作し、両方のバージョンが記録されていきます。

競合回避の仕組みがどうなっているのか気が向いたらいつか深堀りしてみます。

より適切な設定があればコメントで教えてください！！！

## ファイル削除
**Delete replica when source file is removed**を有効にして、一方でファイルを削除してみてもバケット上でも他方でもファイルは削除されませんでした。もう一台の方でも別のファイルを削除してみましたが同じ動作でした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1839497/ccfc932e-5dfb-c82e-ea69-2229131679c6.png)
Syncじゃないときにローカルのファイルを削除するとWASABIのファイルが削除されることは確認済みです。

**Sync構成だとファイルの削除はWASABIにも他方にも同期されない。**
コラボレーションする上でのフェイルセーフやフールプルーフの考え方なのかな？