27
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

lsyncdを使用したリアルタイム同期

Last updated at Posted at 2017-12-09

目的

  • 開発中、リモート環境で動作確認しなければならない場合に開発を潤滑に行う。
  • 検証環境へリアルタイムにデプロイする。

リアルタイム同期のメリット

  • ローカルによる一元管理が可能
  • 同期が裏側で行われるため、クラウドなど通信が低速な環境でも作業効率を維持できる。

構成

image.png

同期設定

ホスト側(ローカル)

  • lsyncdのインストール
apt-get install lsyncd
  • lsyncdの設定 [/etc/lsyncd.conf]
settings {
    logfile="/var/log/lsyncd/lsyncd.log",
    statusFile="/var/log/lsyncd/lsyncd.status",
    nodaemon=false, # daemonとして実行
    stubborn=true, # 接続に失敗してもプロセスを終了させない。
}
sync {
    default.rsyncssh,
    source="[Source Directory]", # 同期元のディレクトリ
    host="[User@HostName]", # SSHで接続する先
    targetdir="[Remote Directory]", # 同期先のディレクトリ
    delay=1,
    delete=true,
    ssh = {
        port = [PortNumber] # SSHで接続するポート番号
    }
}
  • lsyncdのサービス化 [/etc/systemed/system/lsyncd.service]
[Unit]
Description=Live Syncing Daemon
After=network.target

[Service]
Restart=always
Type=simple
Nice=19
EnvironmentFile=/etc/lsyncd.conf
ExecStart=/usr/bin/lsyncd -pidfile /tmp/lsyncd.pid /etc/lsyncd.conf
PIDFile=/tmp/lsyncd.pid
User=[UserNmae] # 実行するユーザ名
Group=[GroupName] # 実行するグループ名

[Install]
WantedBy=multi-user.target
  • サービスの登録/実行
systemctl enable lsyncd
systemctl start lsyncd
  • サービスの自動起動を無効
# sysv-rc-confがインストールされてない場合はインストール
sysv-rc-conf
# 実行後、lsyncdの項目を全て空白に変更
# ↓ Example ↓
# lsyncd [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]

接続先(リモート)

  • sshdが動作していること。

活用例

  • IDEで同期用のワークスペースを作成し、丸ごと同期
    • 開発中のテスト実行がリモート環境で実現
    • 「開発環境では動いた。」という環境依存の問題を解決
  • Gitのworktreeディレクトリを同期し、任意のブランチを検証環境へ同期
    • 臨時の修正が発生した際、worktreeでブランチ作成、修正、即時検証環境で検証可能

注意事項

  • リモートで修正されたものはローカルと同期されないので、変更は必ずローカルで行うこと。
27
30
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
27
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?