[MSyncって何?] [動作環境] [インストール] [使い方] [変更履歴] [ライセンス] [その他]

MSync

MSyncって何?

下記特徴を持ったネットワークファイル共有ツールです。

動作環境

インストール

MSyncのインストールには動作環境が必要です。 OpenSSHでファイル共有先ホストへログインできる環境とRubyの実行環境、C言語とRuby拡張モジュールのビルド環境のインストールを先に済ませておいてください*6

MSyncのインストール手順は下記の通りです。 共有元ホストと共有先ホストの両方にインストールが必要です。 wgetの代わりに下記リンクからダウンロードしても良いです。 viは他の使い慣れたテキストエディタを代わりに使っても問題ないです。

$ wget http://kobayasy.com/msync/msync-1.2.tar.gz  # 不正改竄確認用チェックサムはここに置いてます
$ tar xzf msync-1.2.tar.gz
$ pushd msync-1.2
$ vi msync  # 1行目のrubyコマンドパスを環境に合わせて修正
$ sh install.sh ~/bin  # ~/bin の部分はインストール先ディレクトリを指定(省略時は ~/bin を指定した事になる)
$ popd
$ rm -r msync-1.2

C言語とRuby拡張モジュールのビルド環境はMSyncの実行には不要なので、MSyncのインストールが済めば削除*7しても問題ないです。

使い方

下記コマンド実行で使い方の説明が表示されます。

$ msync --help
Usage: msync [-cvqn] [REMOTE:][USER@]HOST[/CONFIG[,CONFIG]...] ...
       msync --status [-q] [CONFIG[,CONFIG]...] ...
       msync --lock [CONFIG[,CONFIG]...] ...
       msync --unlock [CONFIG[,CONFIG]...] ...
       msync --version
       msync --help

REMOTE:USER@HOST/CONFIG
  HOST            hostname
  USER            username (default: current login user)
  CONFIG          configname
  REMOTE          remote shell, ssh or rsh (default: ssh)

subcommands:
  --status        print configs
  --lock          lock syncpath
  --unlock        unlock syncpath
  --version       print version number
  --help          show this help

options:
  -c, --compress  compression for data transfer
  -v, --verbose   increase verbosity
  -q, --quiet     suppress non-error messages
  -n, --dryrun    trial run without actually update files

下記コマンド実行でバージョン情報が表示されます。 共有元と共有先で version が異なっても問題ないですが、protocol は一致していないと動作しません。

$ msync --version
msync version 1.2 (protocol msync7)

共有ディレクトリはconfignameで指定します。 不正アクセスに対するセキュリティと操作ミスによる意図しないファイル消失を防ぐため、共有ディレクトリの直接指定は出来ないようになっています。

confignameに対応する共有ディレクトリは ~/.msync で登録されていて、配布状態ではconfignameのmsyncが共有ディレクトリ ~/MSync へ登録されているのみですが、複数登録可能でテキストエディタで追加/削除/編集が出来ます。 共有ディレクトリ指定は先頭文字が / の場合は絶対パス指定、そうでない場合は ~ からの相対パス指定と解釈されます。 共有ディレクトリ指定の後に () で囲んでオプション指定が出来ます。 # から行末まではコメントになります。 共有ディレクトリは自動では作成されないので、中は空でも良いので前もって作っておく必要があります。

今の所オプションはexpireのみが指定可能で、過去の共有ファイル状態の記録を保持する期間を expire= に続けて日数単位で指定します。 expireは最長の同期間隔*8以上を余裕を見て設定してください。 デフォルトでは最長でも1年に1回は共有する物としてさらに余裕を見て400日に設定されています。 現存するファイル状態はディレクトリから得られますが、削除されたファイルに付いては過去の記録が必要になります。 それを保持するためのディスク容量と処理をするためのメモリ容量は無限ではないので、保持期間に制限を掛けています。

下記 ~/.msync の例だとconfignameのmsyncに共有ディレクトリ ~/MSync を登録して記録保持期間設定はデフォルトの400日に、docに ~/Public/Document を登録して保持期間を30日に設定しています。

# ~/.msync

#configname  syncpath         (option, ...)
msync        MSync
doc          Public/Document  (expire=30)

msyncコマンド実行の際、同じhostnameに対する複数のconfignameはまとめて指定可能です。

$ msync guest@example.com/public guest@example.com/private
$ msync guest@example.com/public,private
と同じ結果になりますが動作は異なります。 上記はpublicとprivateのそれぞれの共有のために2度ネットワーク接続するのに対して、下記は1度の接続で両方の共有を済ませます。

usernameは共有先のユーザー名が共有元のログイン名と同じ場合は省略可能です。 共有元ホストにユーザー名guestでログインしている状態ならば下記2つは同じ動作になります。

$ msync guest@example.com/public,private
$ msync example.com/public,private

confignameも省略可能で、省略した場合は共有元と共有先で共通のconfigname全てを指定した動作になります。 例えば共有元で登録されている configname が prvate と public, work で共有先が private と work, doc だった場合 private と work を指定したことになり、例えば共有先ホスト名が example.com だった場合、下記2つは同じ動作になります。

$ msync example.com/public,work
$ msync example.com

変更履歴

Version 1.2.1  (6th of July, 2017)
ファイル名の変更が把握し辛かったので、同期情報表示順序を 追加、更新、削除 から 削除、追加、更新 へ変更。
Version 1.2  (22nd of January, 2017)
confignameを省略可能に修正。 省略した場合共有元と共有先で共通のconfigname全てを指定した動作になる。
Version 1.1.4  (12th of January, 2017)
サブコマンド --list--status に変更。
Version 1.1.3  (3rd of December, 2016)
ファイル名の大文字小文字を区別しないファイルシステムに対応。 サブコマンド --list の表示フォーマットを修正。
Version 1.1.2  (25th of November, 2016)
ステータス表示を変更。 表示タイミングを同期完了後から同期開始前に変更。 -v オプション指定時に表示される added, updated, deletedA, U, D に変更。
Version 1.1.1  (14th of November, 2016)
同期ディレクトリの禁止/許可とその状態を表示するサブコマンドを追加。
Version 1.1  (25th of October, 2016)
protocol バージョンを msync5 から msync6 に変更。 Version 1.0.2 でプロトコルに変化があったのにバージョンを上げ忘れていた。
Version 1.0.2  (22nd of October, 2016)
-v オプションの表示内容を、「実行中の処理」から「実行結果」へと変更。
Version 1.0.1  (6th of July, 2016)
rshにも対応。 sshとrsh接続時にワーニングが発生した場合も処理を続行する様に修正(エラー発生時は従来通り処理を中断する)。
Version 1.0  (6th of May, 2016)
正式公開開始。 Version 0.5.2 からバージョン番号以外は変更無し。
Version 0.5.2  (29th of April, 2016)
コマンドパラメータのHOSTとCONFIGのデリミタ文字を : から / へ変更。 : は今後もしOpenSSH以外のネットワーク接続方式も選択出来るように機能追加された場合にURIスキームのデリミタに使う。
Version 0.5.1  (20th of April, 2016)
共有先ホスト名間違い等で内部でsshの実行エラーが発生した場合、何も表示せず終了していたのを表示するように修正。
Version 0.5  (18th of April, 2016)
限定公開版。
Version 0.0 〜 0.4  (April, 2014 〜 April, 2016)
テスト版。 未公開。

ライセンス

本ツールの正式名称は頭2文字が大文字でそれ以降が小文字表記の MSync です。 オリジナル配布元は http://kobayasy.com/msync/ になります。

この文章を含めMSyncの配布ファイルは下記ライセンスの元、使用と再配布を許可します。

Copyright (c) 2014-2016 by Yuichi Kobayashi <kobayasy@kobayasy.com>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

その他

その他、作者のメモとか、どうでも良い事とか、実は大事な事とか... いろいろ思い付いたらここに追記。


*1動作環境としてOpenSSHのsshまたはrshコマンドで共有先ホストへログインできる環境設定まで出来ている事が前提。
*2説明不要だと思いますが、行頭の $ は一般ユーザー権限のプロンプトです。 なので、必要なコマンド入力はそれ以降です。
*3ローカルホスト、リモートホスト共に配布ファイルの install.sh でインストールした状態の ~/.msync をそのまま無修正で使っている場合。
*4シンボリックリンクが使える環境ならばlutimesも実装されていると思われる。
*5拡張モジュールのビルド環境はRubyの実行環境をソースファイルからインストールした場合は一緒にインストールされているはずだけど、バイナリーパッケージからインストールした場合は別途インストールが必要な場合があるので注意。
*6Debian系のシステムならば # apt-get install ssh ruby build-essential ruby-dev を実行するだけで良いはず。
*7Debian系のシステムならば # apt-get remove build-essential ruby-dev を実行するだけで良いはず。
*8confignameに対するmsyncコマンドの実行間隔。
Copyright (c) 2014-2017 Yuichi Kobayashi <kobayasy@kobayasy.com>