Lsyncd

Lsyncd is a daemon that enables you to mirror your directories to any other directory on your network, or even locally. Lsyncd uses a filesystem event interface (inotify or fsevents) to watch for changes to local files and directories. The default synchronization method is rsync

Addressing
master.darin.web.id
ip address : 103.43.x.34

slave.darin.web.id
ip address : 103.43.x.36

sync directory : /var/www/html
  1. Install lsyncd on master
    apt -y install lsyncd
    or
    yum -y install epel-release
    yum -y install lsyncd
  2. Generate public key on master
    ssh-keygen -t rsa
  3. Copy public key from master to slave for login without password
    ssh-copy-id [email protected]
  4. Create directory and file for testing
    mkdir /var/www/html
    cd /var/www/html && touch file{1..100}.txt
    cd /var/www/html && fallocate -l 1G dummyfile #create 1G dummyfile
  5. Configure lsyncd on master (example of some configuration can be found in directory /usr/share/doc/lsyncd-2.2.2/examples/)

        vim /etc/lsyncd.conf

  settings {
        logfile         = "/var/log/lsyncd.log",
        statusFile      = "/var/log/lsyncd.stat",
        statusInterval  = 1,    
  }

  sync {
        default.rsyncssh,
        source    = "/var/www/html",
        host      = "103.43.x.36",
        targetdir = "/var/www/html",
        delay     = 5,
  }

systemctl restart lsyncd
systemctl enable lsyncd


Reference : https://github.com/axkibe/lsyncd