LinkStation は Buffalo から出ている NAS です。

そもそものきっかけは Dropbox for Business プランの信頼性と同期速度に不安があること。完全にこのプランをやめるというわけでもなく、ひとまず職場と自宅のデスクトップ機で Dropbox を用意し、それぞれの内容を NAS に保存し、それぞれのサイトの他のパソコンを NAS とファイル同期させようという作戦です。

ファイル同期に利用するのは、長年、使っている Unison File Synchronizer です。

最初に試みたのは、職場のデスクトップに NAS のホームを CIFS を介してマウントし、ローカルシステム同士の Unison 同期を適用するものです。やってみたんですが、ファイル転送が恐しく遅くて使い物になりません。諸事情からデスクトップ機が WiFi 接続というのもよくないのかもしれませんけれど。

次に試みているのは、NAS を脱獄して Unison File Synchronizer をインストールする方法です。NAS とデスクトップ機を ssh で接続させて Unison を利用すれば、さまざまなオーバーヘッドを除去して高速化できるのではないかという見通しです。

NAS に SSH を設定する方法については、ごく簡単なメモを残してあります。

  • Unison の ARM 向けクロスコンパイルの方法 は、かなりいい線まで行ったんですが、unison のリンクのところで libc と termcap ライブラリを動的リンクしようとしてそれぞれ警告とエラーになりコケました。この方法が望ましいんですが、ひとまず保留。

  • ひとまず、すでに ARM 向けにビルドされたバイナリを利用する方法を取っています。前述の ARM 向けのクロスコンパイル手法を解説している Crutzi さんが数年前にビルドしてくれたものを LinkStation にコピーして利用します。この場合、クライアント側に同じバージョン (2.40系) が必要になるので、そのソースコードを入手してビルドを試みました。困ったことに、最新の OCaml コンパイラ (4.04系) では Unix.mli が labeled interface になっていて、エラーになってしまいます。Unison のソースコードを書き直せば対応できるんでしょうが、こちらもひとまず保留。

  • (情けないのですが)、クライアント側もビルド済みのバイナリを利用することにしました。こちらはご本家のサイトで公開されている Mac 版の unison-2.40.128 です。

    配布されているのは GUI 版なのですが、起動時にコマンドライン版をインストールできるはずだったんですが、/usr/bin/ にインストールしようとするので最近の Mac ではセキュリティ違反となります。仕方ないので /Applications/Unison.app/Contents/MacOS/Unison -ui text と起動して騙し騙し使っています。

    (そうだ、Contents/MacOS/Unison をバイナリエディタで書き換えて、コマンドライン版のインストール先を /tmp/unison とかに強制的に変更すればいいのか!あとでやってみよ)

ということで、当初計画よりも大幅に縮退しましたが、LinkStation と ssh 越しに Unison を繋いで同期させ始めたところです。

コメントを残す