Thank you for reading this post, don't forget to subscribe!
Используя Lsyncd, мы можем легко отражать локальные каталоги и удаленные каталоги. Это будет очень полезно, если вы хотите синхронизировать данные между каталогами, которые часто обновляются новым содержанием. Lsyncd предназначен для синхронизации локального дерева каталогов с низким профилем ожидаемых изменений в удаленное зеркало. Это особенно полезно для синхронизации данных из защищенной области в не столь безопасном месте.
Установка Lsyncd
Необходимо включить Epel репозиторий первым.
1 |
<strong>yum install epel-release</strong> |
Затем установите Lsyncd с помощью команды:
1 2 3 |
<strong>yum install lsyncd </strong> |
Конфигурация Lsyncd на RHEL и CentOS
В системах RHEL и CentOS, конфигурационный файл Lsyncd будет создан автоматически. Вы можете просмотреть содержимое этого файла с помощью команды:
1 |
<strong>cat /etc/lsyncd.conf</strong> |
И, файлы примеров конфигурации доступны в следующих местах.
1 2 |
<strong>ls /usr/share/doc/lsyncd-2.1.5/examples/ </strong> |
Синхронизация локальных каталогов на RHEL, CentOS
Редактирование файла конфигурации Lsyncd:
1 |
<strong>vim /etc/lsyncd.conf</strong> |
Отредактируйте и измените следующие строки:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
---- -- User configuration file for lsyncd. -- -- Simple example for default rsync, but executing moves through on the target. -- -- For more examples, see /usr/share/doc/lsyncd*/examples/ -- <strong>settings {</strong> <strong> logfile = "/var/log/lsyncd.log",</strong> <strong> statusFile = "/var/log/lsyncd.status"</strong> <strong>}</strong> <strong>sync {</strong> <strong> default.rsync,</strong> <strong> source = "/root/source_dir",</strong> <strong> target = "/root/dest_dir",</strong> |
Замените путь исходного и целевого каталогов вашими собственными значениями. Сохраните и закройте файл.
Включите и запустите услугу Lsyncd с помощью команд:
1 |
<strong>systemctl enable lsyncd</strong> |
1 |
<strong>systemctl start lsyncd</strong> |
Теперь, проверьте содержимое каталогов source_dir и dest_dir.
1 |
ls source_dir / |
Пример вывода:
1 |
file10 file1 file2 file3 file4 file5 file6 file7 file8 file9 |
Проверьте содержание каталога dest_dir:
1 |
Ls dest_dir / |
Пример вывода:
1 |
file10 file1 file2 file3 file4 file5 file6 file7 file8 file9 |
Отлично! Содержание source_dir было успешно синхронизировано с каталогом dest_dir.
Кроме того, вы можете просмотреть файлы журналов, чтобы проверить, завершена репликация или нет.
1 |
tail -10 /var/log/lsyncd.log |
Проверьте файл состояния Lsyncd:
1 |
<strong>more /var/log/lsyncd.status</strong> |
Синхронизировать удаленные каталоги
Нам нужно настроить логин и пароль для SSH. Это происходит потому, что Lsyncd автоматически копирует содержимое локального каталога на удаленный каталог без вмешательства пользователя.
1 |
<strong>sudo su -</strong> |
1 |
<strong>ssh-keygen -t rsa</strong> |
Не вводите пароль. Просто нажмите кнопку ENTER, чтобы принять значения по умолчанию.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/home/sk/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:dHc2aKk5F2wBq7CIc5sVHJwYNjoPdwgxDKb1KuBBkgs sk@ubuntuserver The key's randomart image is: +---[RSA 2048]----+ |o*=.++.. ... | |E..*.+o. o + | |+o+ + = . o O + | |+ .B o = o * + . | |..+ + o S + . | | . o + o | | o | | | | | +----[SHA256]-----+ |
Теперь, скопируйте открытый ключ SSH на вашу удаленную систему:
1 |
<strong>ssh-copy-id root@192.168.1.150</strong> |
Пример вывода:
1 2 3 4 5 6 7 8 9 10 11 12 |
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" The authenticity of host '192.168.1.150 (192.168.1.150)' can't be established. ECDSA key fingerprint is SHA256:U7I0O1OOzzbHFlhIG0HoGDr1usHzLBju6Jmr6bUB9Es. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@192.168.1.150's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'root@192.168.1.150'" and check to make sure that only the key(s) you wanted were added. |
Здесь 192.168.10.10 является IP-адрес удаленной системы.
Теперь вы сможете войти по SSH на вашу удаленную систему без ввода пароля:
1 |
ssh root@192.168.1.150 |
Создание целевого каталога в удаленной системе с помощью команды:
1 |
<strong>mkdir remotesync</strong> |
Выйдите из удаленной системы:
1 |
exit |
Затем отредактируйте конфигурационный файл Lsyncd на исходной машине:
1 |
<strong>vim /etc/lsyncd.conf</strong> |
Отредактируйте/измените следующие строки:
1 2 3 4 5 6 7 8 9 10 11 |
settings { logfile = "/var/log/lsyncd/lsyncd.log", statusFile = "/var/log/lsyncd/lsyncd.status" } sync { default.rsync, <strong> source = "/home/sk/source_dir", host = "192.168.1.150", targetdir = "/root/remotesync",</strong> } |
Здесь 192.168.1.150 является IP-адрес моего удаленного хоста. И, директория назначения /root/remotesync/ на моей удаленной системе. Замените значения вашим собственным. Сохраните и закройте файл.
Перезапустите службу Lsyncd, чтобы начать реплицировать содержимое исходного каталога в пункт назначения.
1 |
<strong>systemctl restart lsyncd</strong> |
Теперь, подключитесь по SSH к вашей удаленной системе:
1 |
<strong>ssh root@192.168.10.150</strong> |
И, проверьте содержимое целевого каталога (т.е. в нашем случае /root/remotesync/). Вы увидите все файлы из исходного каталога из локальной системы были воспроизведены в целевом каталоге в целевой системе.
1 2 |
root@server1 ~]# ls remotesync/ file1 file10 file2 file3 file4 file5 file6 file7 file8 file9 |