LoginSignup
44
40

More than 5 years have passed since last update.

いい加減macにlsyncdを入れてlinuxに転送しまくりたい。

Last updated at Posted at 2015-04-10

のっぴきならない事情でLinuxのリモートマシンで作業をしないといけないことがある。
とはいえ作業は手元のmacでやりたい(source tree使いたい!atom使いたい!)

ということで今までgruntでwatchしてrsync・・・みたいな力技でちょろまかしていたけど、ちょっと人に伝授する機会があって今まで何度か挫折してたlsyncdを導入してみた。

今回の要件としてはこんな感じ

  • なるべくセットアップを簡易に
  • 遅延はなるべく無く
  • 転送は片方向だけでよしとする( mac -> linux )
  • sshの鍵設定はしているものとする
    • してないと転送のたびにパスワード聞かれてしまった。

install

今回はrsyncを使った転送をするので、rsync、あとはatomあたりでハイライトするようにluaも入れておく。

brew update
brew install homebrew/dupes/rsync
brew install lsyncd lua

lsync.conf

今回デザイナーさんなどに伝授するにあたり、設定ファイルを分離するとかちょっとだけ複雑なことをした。

まず設定ファイルだけ外にまとめとく。
ここだけいじれば大丈夫よ的な感じに。

conf.lua
return {
  user   = "your.name",
  host   = "0.0.0.0",
  source = "/path/to/source",
  dest   = "/path/to/dest",
}

あと本筋のlsync.confの方がこんな感じ。

lsync.conf.lua
-- variables
local conf = dofile("conf.lua")

local homeDir = os.getenv("HOME")
local target = conf.user.."@".. conf.host..":".. conf.dest

-- lsyncd
settings{
  logfile     = "/tmp/lsyncd.log",
  statusFile  = "/tmp/lsyncd.status",
  insist      = true,
  nodaemon    = true,
  delay       = 0,
  statusInterval  = 10,
  maxProcesses    = 2,
}

sync{
  default.rsync,
  delete = false,
  source = conf.source,
  target = target,
  exclude = { ".DS_Store", ".sass-cache/**/*"},
  rsync = {
    binary = "/usr/local/bin/rsync",
    archive = true,
    compress = true,
    rsh = "/usr/bin/ssh -i "..homeDir.."/.ssh/id_rsa"
  }
}

なんか注釈としてはこんな感じ

  • dofileとかでファイル読み込んでる。
  • sshの鍵ファイル特定を怠けるのに$HOMEgetenvで読み込んでる
  • delayがデフォルト15ぐらいになっていて即時反映されなくて困るのでここは変えておく
  • excludeは適当に設定。

起動

sudo lsyncd lsync.conf.lua

なんかwarnが出るのだが仕方なさそう。挙動は今のところ問題なし
https://github.com/axkibe/lsyncd/issues/291

まとめ

lsyncdについてわりとmacでの情報はなさ気だった。
けど割りと普通に使えた。
lua楽しい。

とりあえず今回作ったのはここに置いた。
https://github.com/suisho/lsyncd-boilerplate

44
40
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
44
40