lsyncdでlocalとremoteのソースコードの同期をする
きっかけ
今使っているMacBookProのメモリは16G。dockerやらvagrantやらchromeやらslackやらを立ち上げていると、メモリがあっという間に枯渇してしまう。つらい...
自宅に固定PC置いてメモリとか爆積みにして、そこにログインして開発しようかな...
— ginkouno (@ginkouno) April 29, 2019
32Gメモリ搭載のMacBookProを買うことも考えたものの、「dockerなどはLinuxの方がサクサク動く」という話をちらほら聞いたので、Linux機を買おうか自作しようかと悩んでいたところ...
https://t.co/27dwmQP3tx
— ginkouno (@ginkouno) April 29, 2019
あー確かに楽しそうな予感が
ということでオススメ頂いたIntel NUCその他部品を購入し、Linux PCを半自作。メモリを32G載せました。
INTEL インテル i7-8559U M.2 SSDに対応 2.5" (9.5mm厚) HDD/SSDも搭載可能 ハイパフォーマンス小型ベアボーンキット BOXNUC8I7BEH【日本正規流通品】
- 出版社/メーカー: インテル
- 発売日: 2018/11/08
- メディア: Personal Computers
- この商品を含むブログを見る
シリコンパワー ノートPC用メモリDDR4-2400(PC4-19200) 16GB×2枚 260Pin 1.2V CL17 永久保証 SP032GBSFU240B22
- 出版社/メーカー: シリコンパワー
- 発売日: 2018/09/29
- メディア: Personal Computers
- この商品を含むブログを見る
これに1TのSSDを買っても、合わせて10万円以下!素晴らしい。
で、一旦以下のような方針を立てた。
- MacBook(= local)のエディタとか諸々の開発環境はそのまま使う
- SlackとかiTunesとかその他便利ツールとかを一切放棄するのはまだつらい
- docker、vagrantなどはNUC(= remote)に任せる
そこでlsyncd
ようやく本題。remoteとlocalとでソースコードを同期するため、lsyncdを使用した。
インターネット上を探すと、lsyncdに関する情報はいろいろあったが、ちょうど自分が使いたい設定でのサンプルが無かったので、ここにメモっておく。
前提
remote
rsyncを入れておく。
sudo apt-get install rsync
なおsshを用いた鍵認証を使っているが、そのあたりの設定はググるとたくさんあるので省略。
local
関連するものをHomeBrewでガバっとinstall。
brew install rsync lsyncd lua
luaはlsyncdの設定ファイルがluaで記述できるとのことで、とりあえず入れておいた。
なおこちらもsshでの鍵認証のやり方の詳細は省略する。
~/.lsyncd
というフォルダを作り、そこにlsync.conf.lua
というファイルを設置。
settings { logfile = "/tmp/lsyncd.log", statusFile = "/tmp/lsyncd.status", insist = true, nodaemon = true, statusInterval = 10, maxProcesses = 1, } sync { default.rsyncssh, delete = true, delay = 0, source = "/Users/ginkouno/project/awesome", host = "192.168.0.111", targetdir = "project", rsync = { binary = "/usr/local/bin/rsync", archive = true, compress = true, rsh = "/usr/bin/ssh -i /Users/ginkouno/.ssh/id_rsa -l ginkouno" } }
- Default Configはrsync接続、ssh key認証のために
default.ryncssh
を指定しましたが、他の指定をする場合はsync
の中での記載方法がだいぶ変わるので、それっぽいoptionを突っ込んで悩んだりせずにmanualを見るのが良いです(反省)
Lsyncd - Config Layer 4: Default Config
binary
の指定ですが、これを指定しないと、元からinstallされている古〜い/usr/bin/rsync
を掴んで下記のようなエラーが起きてしまうことがあるため、先の手順にてHomeBrewでinstallした/usr/loca/bin/rsync
を指定しておきます- ↓こんなエラーが出ることがある
rsync: -stl: unknown option rsync error: syntax or usage error (code 1) at /BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-52.200.1/rsync/main.c(1337) [client=2.6.9]
rsh
ではssh接続時のコマンドラインの一部を記載しておきます。今回は鍵認証のために-i
で鍵ファイルを、またremote側にはginkouno
userでログインしたいので-l
optionでuser nameを指定しています
実行
sudo lsyncd .lsyncd/lsync.conf.lua
これで、MacBook側のeditorでソースコードを編集しつつ、NUC上のdockerでテスト!などを行うための土台ができた。(なおdockerを動かす際には、remoteにsshでloginして動かすことを想定)
皆さんも潤沢なメモリを積んだLinuxマシンで、dockerをドッカ〜ンと動かしましょう。