ウェブエンジニア珍道中

日々の技術的に関する経験を書いていきます。脱線もしますが助けになれば幸いです。

Mutagenでファイル同期が簡単に出来た話

今回はMutagenというものを使えばファイル同期が簡単にできたので、軽くまとめたいと思います。入門用の記事のつもりなので、詳しい仕様は下記リンクの公式ドキュメントを参照して下さい。

上手く使えば脱docker-syncもできます。

Mutagenとは

mutagen.io

ファイル同期の設定やネットワーク転送の環境構築を手軽に行うためのツールです。最短だとコマンド一発で構築が行えます。

インストール

macOS

brewでインストールが出来ます。

brew install mutagen-io/mutagen/mutagen

その他OS

https://github.com/mutagen-io/mutagen/releases/latest

こちらのリンクからDLし、Pathを通す事で使えるようになるらしいです(未検証)

使い方

一番単純な使い方は下記のコマンドです。

mutagen sync create #{同期したいファイルパス1} #{同期したいファイルパス2}

同期したいファイルパスはドキュメントの中でalphabetaと言われています。srcdestを使っていないのは双方向通信も行えるからです。(sourceも何もないので)

現状下記のディレクトリ構成があるとします。

$ tree
.
├── fuga
└── hoge
    └── foo.txt

同期の作成 sync create

この状態で下記コマンドを叩いてみます。

mutagen sync create --name test hoge fuga

--name testとして、この同期の環境にtestと名前をつけています。後で止める際に楽だからです。

では、ディレクトリ構成を確認します。

$ tree
.
├── fuga
│   └── foo.txt
└── hoge
    └── foo.txt

foo.txtが同期されています。hogefugaディレクトリの片方にファイルを追加しても、もう片方に同じファイルが同期されます。

同期の確認 sync list

作成した同期環境は sync listで見ることができます

$ mutagen sync list
Name: test
Identifier: 21f14ac3-1ed6-4c3a-9be6-1914802156e3
Labels: None
Alpha:
    URL: #{hogeの絶対パス}
    Connection state: Connected
Beta:
    URL: #{fugaの絶対パス}
    Connection state: Connected
Status: Watching for changes

同期の停止 sync terminate

では同期を止めてみます。

$ mutagen sync terminate test

先程のtestという名前を指定することで止めています。名前をつけ忘れた場合はsync listで表示される中のIdentifierの値で指定します。

これで止まりました。mutagen listで確認します。

$ mutagen sync list
--------------------------------------------------------------------------------
No sessions found
--------------------------------------------------------------------------------

これで最小限の操作はできるようになりました。

mutagenはDockerコンテナ間やSSH越しの同期で更に真価を発揮する(と思う)ので、次はそのやり方をまとめたいと思います。では。

新しいLinuxの教科書

新しいLinuxの教科書

参考

  • Github

github.com - Twitterアカウント

twitter.com