lsyncd를 사용한 실시간 동기화

4148 단어 lsyncd개발 환경

목적


  • 개발 중 원격 환경에서 작동을 확인해야하는 경우 윤활이 개발됩니다.
  • 검증 환경에 실시간으로 배포.

  • 실시간 동기화의 이점


  • 로컬로 중앙 집중식 관리 가능
  • 동기가 뒤에서 이루어지기 때문에, 클라우드 등 통신이 저속인 환경에서도 작업 효율을 유지할 수 있다.

  • 구성





    동기화 설정



    호스트측(로컬)


  • 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에서 분기 작성, 수정 또는 즉시 검증 환경에서 검증 가능


  • 주의사항


  • 리모트로 수정된 것은 로컬과 동기화되지 않기 때문에, 변경은 반드시 로컬로 실시하는 것.
  • 좋은 웹페이지 즐겨찾기