
Introduction
We’ve already talked about using tools like rsync for managing backup of your systems, but there’s another “problem” which has to be solved if you have multiple remote computers: synchronization.
In this article, we’ll talk about lsyncd , a daemon that enables you to mirror your directories to any other directory on your network, or even locally. For performance purposes, it only mirror changes to your directory.
InstallIf you use Ubuntu, you’ll find it already in the repositories:
# apt install lsyncdIf you’re a RHEL/CentOS/Fedora user, then you have to enable EPEL first. Then:
# yum install lsyncdAfter installation, you’ll find sample configurations in /usr/share/doc/lsyncd/examples/ or in /usr/share/doc/lsyncd-VERSION/examples/ , depending on whether you are using Ubuntu or RedHat-based distros.
Configuring a local syncingSo, for testing, let’s try a local syncing with lsyncd.
First, let’s create a “source folder”, containing the files we want to sync.
$ mkdir -p $HOME/unixmen/sync_sourceThen, we’ll make a backup folder:
$ mkdir $HOME/sync_backupJust for test, populate the source directory with zero-lenght files, using touch command :
touch $HOME/unixmen/sync_source/unixmentest{1..10}0Now, make log and status files:
# mkdir /var/log/lsyncd# touch /var/log/lsyncd.{log,status}
Configuration file goes on /etc/lsyncd :
# mkdir /etc/lsyncdIn there, we’ll create a new config file:
# nano /etc/lsyncd/lsyncd.conf.luaWhere we’ll put the following code:
settings = {logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status"
}
sync {
default.rsync,
source = "$HOME/unixmen/sync_source/",
target = "$HOME/sync_backup",
}
Right now, if you look in the backup directory, you’ll find it empty, because the service is not running.
But, to solve this, simply restart lsyncd with the following:
# systemctl restart lsyncdIt will start (and keep) syncing, even if you add more files on sync_source. It works completely in automated mode.
ConclusionIn a similar way, you can sync remote files, with just the difference that you’ll use SSH, and varying just a little bit in the conf file.
There are a lot of examples that you can look for in /usr/share/doc/lsyncd/examples/ , or just lsyncd documentation. Happy syncing!