同期が遅いOwncloud 、なんとかならんか・・・
以前からDropboxに変わる環境としてOwncloudを自宅サーバに構築し、デスクトップPCとノートPCの「ドキュメント」フォルダを同期させたりなどなど、主に複数端末のフォルダの同期を目的に使ってきました。
やはり、Dropboxのような人様のサーバに大事なファイルを置くことに不安・抵抗があり、Owncloudであれば、それに対しては多少なりとも安心感があります。
ところが、Owncloudは同期が遅い。大変に遅いです。
ファイルやりとりに「webdav」を利用しており、ファイル一個を同期するたびにセッションを起こしているらしく。
1分間に5個くらいしか進みません。同期にかかる時間は、ファイルの容量ではなくファイル数で効いてきます。
例えば先日、訳あって、マイドキュメントのフォルダを再同期する必要があり、Owncloud上のデータを削除し、ローカルPCから再度同期をかけました。なんと、これに要した時間、丸三日以上です。
- ファイル数 : 18331
- フォルダ数 : 3586
- 容量 : 18.5GB
- Owncloudサーバとの同期時間 : 丸三日以上
もう一つ、私は「紙copi」というHPの取り込みソフトを使っています。これはHPをローカルのHDに綺麗に取り込んでくれるソフトですが、保存先のフォルダをOwncloudで共有しています。(→参考記事:紙copiが復活。紙copi 3。Evernoteから紙copiへの移行にトライしてみた。)
ところがHPによっては、1枚で細かい部品含め100個近くのファイルで構成されることもあり、その場合owncloud同期に10分くらいかかってしまうことがあります。
これだけ遅いと、複数同時に更新をかけた場合のコンフリクトも起こりやすくなりますし、ちょっと、実用上厳しいな~と思っていました。
これ、もちろん、LAN(Gigabit Ether) 接続の話です。
BitTorrent Sync というソフトがあった! ファイル同期が超高速
そんな折、ネットサーフィンをしていると、BitTorrent Syncなるソフトを発見しました。
サーバ不要で、インターネットに接続さえしていれば、ピアツーピア(P2P)で特定フォルダのファイル同期が簡単にできてしまうというソフトです。
複数の端末で共有することも可能です。
フリーで公開されていましたので、早速試したところ、
- 導入超簡単!
- マルチプラットフォーム対応 (Windows、Mac、iPhone、Android、WindowsPhone、Linux)
- 同期、転送が超高速 (Owncloud比)
前出のドキュメントフォルダをLAN内で同期したところ、数十分で同期が完了しました。
これは、「たまらん」くらい魅力的な速さです。
開発者も転送速度含めて同期の速度にはこだわって開発しているようです。
Owncloudは、デバイス間のファイル同期の機能もありますが、webアクセス(ブラウザ)のインターフェースもあり、全く同じ機能というわけではありませんが、私の利用目的がデバイス間のファイル同期であることを考えると、Owncloudからの「乗り換え」を考えるに十分です。
このソフト、昨年前半にはいろんなところで紹介されていたんですね。全く知りませんでした。
BitTorrent Syncとは
BitTorrent Syncとは、特定のユーザ間のみでファイル共有できるソフトなんですが、これをBitTorrentの技術を使って実現しています。
参考記事: GigaZine 「PC同士を直接同期し巨大ファイルも高速転送できるソフト「BitTorrent Sync」」
ポイントを簡単に。
- サーバが不要です。P2Pで共有・同期します。
- 同期対象のデバイスは2台に限らず、何台でもOK。
- アカウント管理も不要(というか、無い)。フォルダ毎に共通秘密鍵を設定し、それを各デバイスに設定するだけ。
- キーは、「読み取り専用キー」「読み書き可能キー」の2種類です。いずれも20文字。
- 読み取り専用は「片方向」、読み書き可能は「双方向」、の同期と理解できます。
- 同期時には、その端末同士が同時にネットに接続している必要があります。
- HTTPプロトコルを使用するので、ルータからは通常のwebアクセスに見えます。UPnPを使用するので、(UPnPが有効なら)FWの設定変更は不要です。
- マルチプラットフォーム対応 (Windows、Mac、iPhone、Android、WindowsPhone、Linux)
Owncloudでは、同期させたいフォルダをサーバ上に全て設置し、必要に応じてデバイス側から同期したいフォルダを選択し、サーバに接続して同期をしていました。
BitTorrentSyncでは、そもそもサーバの概念がなく、同期をしたいフォルダ・ファイルを持っているデバイスから、同期が必要なデバイスへ直接同期をかけることになります。
デバイス同士で直接、です。
デバイス間のファイル同期を目的としている私としては、Owncloudの置き換え可能なツールとなります。
Owncloudと置き換えは可能か?
Owncloudにあって、BitTorrent Syncに無いものを挙げます。
共有フォルダへのwebアクセス画面
OwncloudにはDropbox同様、webアクセスのUIが用意されています。
ファイルをサーバに置いたまま、必要なファイルを探して閲覧したり、サーバ上に置いたまま編集したりと、シンクライアント的な使い方ができます。
プラグインを追加すれば、pdfやMS-Officeのファイルを閲覧・編集したり、ブラウザベースで何でもできてしまう環境を指向できます。
住所録、カレンダー、ニュース等
他にも、以下のようなサービスもあります。
Googleの各種サービスの置き換えを意識しているようにも思います。
これらの機能は、Owncloudを使うユーザアカウントの存在がベースにあるので、共有・同期機能に特化したBitTorrent Syncにはありません。
結論:ファイル同期機能しか使っていないので、置き換え可能(私の場合)
Owncloudを置き換えた場合、上記の機能が使えなくなります。
私自身は、webアクセスのUIを使うことはほとんど無く、もっぱらファイル同期機能しか使っていませんので、十分置き換え可能です。
ただし、OwncloudのwebUIの可能性の検証は続けたいので、何らかの形で共存する方法も考えてみます。
常時同期をさせるには、常時ONの「サーバ」はあった方がよい
BitTorrent Syncはサーバ不要ですが、同期するデバイスが同時にネットにアクセスできないと同期ができないため、すれ違いでファイル同期ができない場合があります。常時ネットに接続しているデバイスがあれば、このすれ違いは回避できます。
ですので、置き換えにあたっては、サーバ的に振る舞う、常時接続・常時電源ONのデバイスを一個設けることにします。
Linux用のBitTorrent Syncアプリ(btsync)がありますので、これを自宅サーバ上で常時起動させればOKです。
WebUIを持っていますので、他のWindowsPCと同様の操作感で操作できます。WebUI用のTCPポート(デフォルト8888)はFWを空けておく必要があります。
btsyncの常時起動にあたっては、起動権限を一般ユーザにするなど、Linux的な一般的なセキュリティ条件は考慮が必要です。
導入
Owncloudのクライアントソフトを起動しないか、同期停止にする
いきなり、Owncloudで共有対象にしているフォルダの置き換えをトライしましたので、Owncloudのクライアントは停止させました。BitTorrent Syncとowncloudの2系統で同期をすれば、当然混乱すると思います。
各デバイスにBitTorrent Syncをインストール
私の場合、これまでowncloudで同期を取っていたデバイスは、デスクトップPC、ノートPC、スマートフォン、自宅サーバ上のitunes専用サーバ、eye-fi連動サーバの5台でしたので、各デバイスにBittorrent Syncアプリをインストールします。
また、前述のとおり、常時起動サーバ(Linux)にもインストールします。
各デバイスにおいて、自動起動するよう、適宜設定します。Linux版以外は、アプリの設定項目の中に「自動起動」のチェックがありますので、それでOK。
Linux版は、init.dに起動スクリプトを書くなど、多少手間が必要です。
共有対象のフォルダのキーを、適宜交換する
共有する対象のフォルダごとに、キーを発行し、共有先のデバイスに設定します。
最初のオリジナルのフォルダのあるデバイスを決め、そこで共有フォルダを設定し、そこで出てくるキーを、うまいこと各デバイスに送って貼り付けることになります。
スマホの場合は画面に出てくる2次元バーコードをBitTorrentSyncで写真に撮ると、キーを取り込んでくれます。詳しくは他の紹介記事に譲ります。
完了、同期開始
ということで、同期を開始したところ、数MB/sの速度で転送が始まりました。数時間後、同期が完了。
極めてあっさりと、owncloudで構築していたファイル同期環境を置き換えることができました。
1万個以上のファイルを持ったフォルダが2,3ありましたが、2,3時間後には全て同期が完了していました。
ファイル数をチェックしましたが、全て揃っていました。
各デバイスのBitTorrentSync管理画面を開いて目視した状態で、あるデバイスのフォルダにファイルを新規作成してみました。
作成直後、各デバイスの管理画面に送受信の印が現れ、あっという間に全デバイスに伝達されました。なんか、いかにもP2Pという風情です。
※注意点: 最初の同期設定時、同期先フォルダは空っぽがよいようです。
キーをコピーして共有設定する先のフォルダに、オリジナルと同名のファイルがある場合、最初の同期がいつまでも終わらない場合がありました。一部のファイルについて、アップロードとダウンロードを延々と繰り返してしまいます。
最初に共有設定する場合は、共有先のフォルダはまずは空っぽにしておいた方がよいようです。同期先にしか無いファイルがある場合は、いったん待避しておいて、初期同期が完了して落ち着いた後に、同期フォルダに放り込むのがよいと思います。
OwncloudのwebUIを活かす(BitTorrent SyncとOwncloudの連動)
半日で、Owncloud環境の置き換えが完了してしまいました。が、OwnlcoudのwebUIから見れると便利なフォルダがあるにはあるため、owncloudとの共存を考えます。
Owncloudのコンテンツディレクトリを直接覗くのはムズい
Owncloudの共有フォルダの実体は、webサーバのコンテンツディレクトリ内にあります。
パーミッションがwebサーバ用に合わせてあることと、暗号化していれば直接アクセスしても中身が見えないこと、仕組みはよく理解していませんが、MySQL等DBMSとも連動しているため、btsyncから直接覗いてファイルをいじるには、少しハードルが高いようです。
Owncloudの外部ストレージ共有機能を使う
Ownlcoudには、外部ストレージをマウントする機能があり、Sambaもサポートしています。こいつを使います。
btsyncの共有フォルダを、直接Sambaで共有
↓
Owncloud外部ストレージ機能でマウント
↓
OwncloudのwebUIで閲覧
常時起動のbtsyncを起動しているLinuxサーバに、sambaを導入するわけです。
これを実行したところ、あっさり連動できました。
私の場合はOwncloud側からは閲覧専用としたかったため、sambaの共有を読み取り専用にしてOwncloudからアクセスさせました。
sambaの設定を「読み書き許可」にすれば、Owncloud側からの追加・変更・削除もできるようになると思います。
今回はこんなところで。