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.
Install
If you use Ubuntu, you’ll find it already in the repositories:
# apt install lsyncd
If you’re a RHEL/CentOS/Fedora user, then you have to enable EPEL first. Then:
# yum install lsyncd
After installation, you’ll find sample configurations in
or in
, depending on whether you are using Ubuntu or RedHat-based distros.
Configuring a local syncing
So, 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_source
Then, we’ll make a backup folder:
$ mkdir $HOME/sync_backup
Just for test, populate the source directory with zero-lenght files, using touch command:
touch $HOME/unixmen/sync_source/unixmentest{1..10}0
Now, make log and status files:
# mkdir /var/log/lsyncd # touch /var/log/lsyncd.{log,status}
Configuration file goes on
:
# mkdir /etc/lsyncd
In there, we’ll create a new config file:
# nano /etc/lsyncd/lsyncd.conf.lua
Where 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 lsyncd
It will start (and keep) syncing, even if you add more files on sync_source. It works completely in automated mode.
Conclusion
In 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
, or just lsyncd documentation. Happy syncing!