FullSync ( windows mac linux)
freeFileSync
unison (linux)
SyncToy(Microsoft)
xcopy
robocopy
DFSレプリケーション
rsync (GB単位では遅い)
BitTorrent Sync
Resilio Sync
コントロールパネル 全てのコントロールパネル項目 同期センター
OpenCloud (Drop box 風)
NextCloud(Drop box 風)
差分検知は遅い
dsync: Efficient Block-wise Synchronization of Multi-Gigabyte Binary Data – https://www.usenix.org/conference/lisa13/technical-sessions/presentation/knauth – Thomas Knauth and Christof Fetzer, Technische Universität Dresden – In Proceedings of the 27th Large Installation System Administration Conference (LISA ’13)
GB単位のデータだと、rsyncがとにかく遅い。 rsync はブロック分割されたデータのハッシュ値の比較により差分検知して、ネットワーク転送するデータ量をとにかく減らそうとしている。 その反面、同期させたいデータサイズに対してハッシュ値計算のCPU時間は線形に増加する。 さらに、ハッシュ値計算のために全データブロックを読み出す必要があり、I/Oコストも高い。 バックアップ時に、差分を事後計算しようとすると、どうしてもこうなる。 そこで発想を変えて、カーネルのブロックデバイスレベルで、更新のあったブロックを常に記録(トラッキング)しておき、バックアップ時にフラグのあったブロックだけを転送することにする。
発想自体はシンプルだけど、既存の device mapper の Snapshot 機能だけでは実現できなくて、パッチをあてる必要があったのがやや難点。 カーネルのメインラインに取り込まれてほしい。
実装はこちら。 https://bitbucket.org/tknauth/devicemapper/ Linuxカーネル 3.2 の device mapper モジュールにパッチを当てるような感じになってそう。
ブロック単位レプリケーション
さすがはZFSもうある。
zfs snapshot
zfs send
zfs recive
Linux DRDB
ネットワーク越しにRAID1
ネットワーク構成が複雑になりやすい。
障害発生時のメタデータの消失の可能性。
データ多重化に伴う必要容量の増加。
実際の使用
FullSync
ファイル作成、名前の変更、同期でファイルが増えないかどうか。ファイル名の変更への追随。
ファイル名のフィルタリングで正規表現が使えるのは利点だが、ディレクトリ名は正規表現を使えない。
1秒ごとに同期できるが、ネットワークなどに接続されているかどうかを確認して同期させることができない。
FreeFileSync
GUIでやりたいことが出来る。
一括ジョブで一気に出来る。
いくつかのファイルは複数の基準フォルダの一部として同期されます。競合回避のために、更新された各ファイルがひとつの基本フォルダのみに含まれるように除外設定をします。 \\192.168.1.10\dirA \\192.168.1.10\dirA\dirA-a
色々なディレクトリを一気に進められるわけではない。
SMB1.5 NASとローカルファイルで同期させたとき、だらだらファイル比較が始まる。
googledriveとのファイル比較は早い。
バージョン管理された古いファイルはコピー元とコピー先フォルダ以外のフォルダに指定。元ファイルに並べるのは不可。
フォルダ指定で %USERPROFILE% は使えるが shell:sendto は u:\shell:sendto と解釈されて使えない。頭にドライブが指定されていないとなんでもカレントドライブをつける傾向に。
以下に例を示す。
条件
Symリンクを含める ×
同期 両方向
バージョン管理 タイムスタンプ[ファイル]
Target folder | Backup folder | Version 管理directory |
Target folder | Backup folder | Version 管理directory |
Target folder | Backup folder | Version 管理directory |
Target folder | Backup folder | Version 管理directory |
3か所での同期テストもしたい。
2in1のTX300CAのE:ドライブは接触不良でついたり消えたりする。それに合わせてがっちり同期出来たら素晴らしかな。
TX300CA
E:_FreeFileSync | +OtherLocal (上げられなかったとき) | + SakuraInternet | +Sync (さくらインターネットと同期させる)
SakuraInternet rental server
/home/******** | +bin +cookies.txt +cshrc2021-06-08 +db +FreeFileSync | +sync (同期フォルダ) | +backup (バージョン管理ファイルもバックアップもサーバーに) | +TX300CA | +T3500 | +T451 +htpasswd +include +*********.org +lib +local +log +MailBox +perl5 +ports +sakura_pocket +sblo_files +share ;+mp +www