GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So synchronisieren Sie Verzeichnisse mit Lsyncd unter Ubuntu 20.04

Lsyncd ist ein einfaches und leichtes Tool, mit dem Sie Ihr lokales Verzeichnis in ein anderes Verzeichnis auf dem Remote-Server spiegeln können. Es funktioniert, indem das angegebene Verzeichnis alle paar Sekunden kontinuierlich auf Änderungen überwacht wird, und wenn Änderungen vorgenommen werden, werden sie mit dem Remote-Server synchronisiert. Dieses Tool ist sehr nützlich, um die Daten von einem sicheren Bereich zu einem nicht sicheren Bereich zu synchronisieren.

In diesem Tutorial zeigen wir Ihnen, wie Sie Lsyncd installieren und verwenden, um lokale Verzeichnisse und Remote-Verzeichnisse zu synchronisieren.

Voraussetzungen

  • Ein Server mit Ubuntu 20.04.
  • Ein Root-Passwort wird auf Ihrem Server eingerichtet.

Erste Schritte

Bevor Sie beginnen, sollten Sie das Paket Ihres Systems auf die neueste Version aktualisieren. Sie können sie mit dem folgenden Befehl aktualisieren:

apt-get update -y
apt-get upgrade -y

Sobald alle Pakete aktualisiert sind, starten Sie Ihr System neu, um die Änderungen zu übernehmen.

Lsyncd installieren

Standardmäßig ist das Lsyncd-Paket in den meisten Linux-Betriebssystemen verfügbar. Sie können es installieren, indem Sie einfach den folgenden Befehl ausführen:

apt-get install lsyncd -y

Sobald Lsyncd installiert ist, können Sie die installierte Version von Lsyncd mit dem folgenden Befehl überprüfen:

lsyncd --version

Sie sollten die folgende Ausgabe erhalten:

Version:2.2.3

Lsyncd konfigurieren, um lokale Verzeichnisse zu synchronisieren

In diesem Abschnitt werden wir Lsyncd konfigurieren, um das /etc/-Verzeichnis mit dem /mnt/-Verzeichnis auf dem lokalen System zu synchronisieren.

Erstellen Sie zunächst mit dem folgenden Befehl ein Verzeichnis für Lsyncd:

mkdir /etc/lsyncd

Erstellen Sie als Nächstes eine neue Lsyncd-Konfigurationsdatei und definieren Sie das Quell- und Zielverzeichnis, das Sie synchronisieren möchten.

nano /etc/lsyncd/lsyncd.conf.lua

Fügen Sie die folgenden Zeilen hinzu:

settings { logfile ="/var/log/lsyncd/lsyncd.log", statusFile ="/var/log/lsyncd/lsyncd.status", statusInterval =20, nodaemon =false}sync { default.rsync, source ="/etc/", Ziel ="/mnt"}

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

systemctl start lsyncd
systemctl aktiviert lsyncd

Sie können den Status des Lsyncd-Dienstes auch mit dem folgenden Befehl überprüfen:

Systemctl-Status lsyncd

Sie sollten die folgende Ausgabe sehen:

? lsyncd.service - LSB:lsyncd-Daemon-Init-Skript Geladen:geladen (/etc/init.d/lsyncd; generiert) Aktiv:aktiv (läuft) seit Fr 2020-05-01 03:31:20 UTC; vor 9s Docs:man:systemd-sysv-generator(8) Prozess:36946 ExecStart=/etc/init.d/lsyncd start (code=exited, status=0/SUCCESS) Tasks:2 (limit:4620) Speicher:12.5 M CGroup:/system.slice/lsyncd.service ??36921 /usr/bin/lsyncd -pidfile /var/run/lsyncd.pid /etc/lsyncd/lsyncd.conf.lua ??36952 /usr/bin/lsyncd - pidfile /var/run/lsyncd.pid /etc/lsyncd/lsyncd.conf.luaMay 01 03:31:20 ubuntu20 systemd[1]:lsyncd.service:Succeeded.May 01 03:31:20 ubuntu20 systemd[1]:Stopped LSB:lsyncd daemon init script.May 01 03:31:20 ubuntu20 systemd[1]:Starting LSB:lsyncd daemon init script...May 01 03:31:20 ubuntu20 lsyncd[36946]:* Startingsynchronisationdaemon lsyncdMay 01 03:31:20 ubuntu20 lsyncd[36951]:03:31:20 Normal:--- Start, Daemonisierung --- 1. Mai 03:31:20 ubuntu20 lsyncd[36946]:...fertig. 1. Mai 03:31 :20 ubuntu20 systemd[1]:Started LSB:lsyncd daemon init script.

Sie können die Lsyncd-Protokolldatei wie unten gezeigt auf weitere Details überprüfen:

tail -f /var/log/lsyncd/lsyncd.log

Sie sollten die folgende Ausgabe sehen:

/lsyncd/lsyncd.conf.luaFr 1. Mai 03:30:57 2020 Normal:Liste beendet nach Exitcode:0Fr 1. Mai 03:31:20 2020 Normal:--- Start, Daemonisierung ---Fr 1. Mai 03:31:20 2020 Normal:rekursiver Start rsync:/etc/ -> /mnt/Fr 1. Mai 03:31:20 2020 Normal:Start von /etc/ -> /mnt/ beendet.

Sie können den Synchronisierungsstatus auch mit dem folgenden Befehl überprüfen:

tail -f /var/log/lsyncd/lsyncd.status

Sie sollten die Änderungen im /mnt-Verzeichnis mit dem folgenden Befehl sehen können:

ls /mnt/

Sie sollten sehen, dass alle Dateien und Verzeichnisse aus dem /etc-Verzeichnis zum /mnt-Verzeichnis hinzugefügt wurden:

acpi dconf hosts logrotate.conf newt rc2.d subuid-adduser.conf debconf.conf hosts.allow logrotate.d nginx rc3.d sudoersalternatives debian_version hosts.deny lsb-release nsswitch.conf rc4.d sudoers.dapache2 default init lsyncd ntp.conf rc5.d sysctl.confapparmor deluser.conf init.d ltrace.conf openal rc6.d sysctl.dapparmor.d depmod.d initramfs-tools lvm opt rcS.d systemdapport dhcp inputrc machine-id os-release resolv. conf terminfoapt dnsmasq.d insserv.conf.d magic overlayroot.conf rmt timezoneat.deny docker iproute2 magic.mime PackageKit rpc tmpfiles.dbash.bashrc dpkg iscsi mailcap pam.conf rsyslog.conf ubuntu-advantagebash_completion e2scrub.conf issue mailcap.order pam.d rsyslog.d ucf.confbash_completion.d environment issue.net manpath .config passwd screenrc udevbindresvport.blacklist ethertypes kernel mdadm passwd-securetty ufwbinfmt.d fonts kernel-img.conf mime.types perl security update-managerbyobu fstab landscape mke2fs.conf php selinux update-motd.dca-zertifikate fuse.conf ldap modprobe. d pki sensors3.conf update-notifierca-certificates.conf fwupd ld.so.cache module pm sensors.d vdpau_wrapper.cfgcalendar gai.conf ld.so.conf modules-load.d polkit-1 services vimconsole-setup groff ld.so.conf .d mtab pollinate shadow vmware-toolscron.d group legal multipath popularity-contest.conf shadow- vtrgbcron.daily group-letsencrypt multipath.conf profile shells vulkancron.hourly grub.d libaudit.conf mysql profile.d skel wgetrccron.monthly gshadow libnl -3 nanorc-Protokolle sos.conf X11crontab gshadow- locale.alias netplan pul se ssh xattr.confcron.weekly gss locale.gen network python3 ssl xdgcryptsetup-initramfs hdparm.conf localtime networkd-dispatcher python3.8 subgid zsh_command_not_foundcrypttab host.conf logcheck NetworkManager rc0.d subgid-dbus-1 hostname login.defs networks rc1.d subuid

Konfigurieren Sie Lsyncd zum Synchronisieren von Remote-Verzeichnissen

In diesem Abschnitt werden wir Lsyncd konfigurieren, um das /etc/-Verzeichnis auf dem lokalen System mit dem /opt/-Verzeichnis auf dem entfernten System zu synchronisieren.

Bevor Sie beginnen, müssen Sie die SSH-Schlüssel-basierte Authentifizierung zwischen dem lokalen System und dem Remote-Server einrichten, damit das lokale System ohne Passwort eine Verbindung zum Remote-Server herstellen kann.

Führen Sie auf dem lokalen System den folgenden Befehl aus, um einen öffentlichen und einen privaten Schlüssel zu generieren:

ssh-keygen -t rsa

Sie sollten die folgende Ausgabe sehen:

Generieren des öffentlichen/privaten rsa-Schlüsselpaars. Geben Sie die Datei ein, in der der Schlüssel gespeichert werden soll (/root/.ssh/id_rsa):Geben Sie die Passphrase ein (leer für keine Passphrase):Geben Sie die gleiche Passphrase erneut ein:Ihre Identifikation wurde gespeichert in / root/.ssh/id_rsaIhr öffentlicher Schlüssel wurde in /root/.ssh/id_rsa.pub gespeichert. +| E.. || ooh || oo=+ ||=.+ % o . . ||[E-Mail geschützt] oSo. o ||ooo=B o .o o o ||=o.... o o ||+. o .. o || . ... . |+----[SHA256]-----+

Der obige Befehl generiert einen privaten und öffentlichen Schlüssel im Verzeichnis ~/.ssh.

Als nächstes müssen Sie den öffentlichen Schlüssel auf den Remote-Server kopieren. Sie können es mit dem folgenden Befehl kopieren:

ssh-copy-id [E-Mail-geschützt]

Sie werden aufgefordert, das Passwort des Remote-Root-Benutzers wie unten gezeigt einzugeben:

Passwort von [email protected]:Anzahl der hinzugefügten Schlüssel:1Versuchen Sie nun, sich am Computer anzumelden, mit:"ssh '[email protected]'" und vergewissern Sie sich, dass nur der/die Schlüssel Sie Gesucht wurden hinzugefügt.

Sobald der Benutzer authentifiziert ist, wird der öffentliche Schlüssel an die Datei „authorized_keys“ des entfernten Benutzers angehängt und die Verbindung wird geschlossen.

Jetzt sollten Sie sich beim Remote-Server anmelden können, ohne ein Passwort einzugeben.

Um es zu testen, versuchen Sie einfach, sich über SSH bei Ihrem Remote-Server anzumelden:

ssh [E-Mail-geschützt]

Wenn alles geklappt hat, werden Sie sofort eingeloggt.

Als nächstes müssen Sie die Lsyncd-Konfigurationsdatei bearbeiten und die Variablen rsyncssh und Zielhost definieren:

nano /etc/lsyncd/lsyncd.conf.lua

Ändern Sie die Datei wie unten gezeigt:

settings { logfile ="/var/log/lsyncd/lsyncd.log", statusFile ="/var/log/lsyncd/lsyncd.status", statusInterval =20, nodaemon =false}sync { default.rsyncssh, source ="/etc/", host ="remote-server-ip", targetdir ="/opt"}

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Starten Sie dann den Lsyncd-Dienst neu, um die Synchronisierung zu starten.

systemctl startet lsyncd neu

Sie können den Status der Synchronisierung mit dem folgenden Befehl überprüfen:

tail -f /var/log/lsyncd/lsyncd.log

Sie sollten die folgende Ausgabe sehen:

Fr 1. Mai 04:32:05 2020 Normal:--- Start, Daemonisierung ---Fr 1. Mai 04:32:05 2020 Normal:rekursiver Start rsync:/etc/ -> 45.58.38.21:/opt/ Fr 1. Mai 04:32:06 2020 Normal:Start von „/etc/“ beendet:0

Sie sollten die Änderungen im /opt-Verzeichnis auf dem Remote-Server mit dem folgenden Befehl sehen können:

ls /opt

Sie sollten sehen, dass alle Dateien und Verzeichnisse aus dem /etc-Verzeichnis zum /opt-Verzeichnis des Remote-Servers hinzugefügt wurden:

acpi dconf hosts logrotate.conf newt rc2.d subuid-adduser.conf debconf.conf hosts.allow logrotate.d nginx rc3.d sudoersalternatives debian_version hosts.deny lsb-release nsswitch.conf rc4.d sudoers.dapache2 default init lsyncd ntp.conf rc5.d sysctl.confapparmor deluser.conf init.d ltrace.conf openal rc6.d sysctl.dapparmor.d depmod.d initramfs-tools lvm opt rcS.d systemdapport dhcp inputrc machine-id os-release resolv. conf terminfoapt dnsmasq.d insserv.conf.d magic overlayroot.conf rmt timezoneat.deny docker iproute2 magic.mime PackageKit rpc tmpfiles.dbash.bashrc dpkg iscsi mailcap pam.conf rsyslog.conf ubuntu-advantagebash_completion e2scrub.conf issue mailcap.order pam.d rsyslog.d ucf.confbash_completion.d environment issue.net manpath .config passwd screenrc udevbindresvport.blacklist ethertypes kernel mdadm passwd-securetty ufwbinfmt.d fonts kernel-img.conf mime.types perl security update-managerbyobu fstab landscape mke2fs.conf php selinux update-motd.dca-zertifikate fuse.conf ldap modprobe. d pki sensors3.conf update-notifierca-certificates.conf fwupd ld.so.cache module pm sensors.d vdpau_wrapper.cfgcalendar gai.conf ld.so.conf modules-load.d polkit-1 services vimconsole-setup groff ld.so.conf .d mtab pollinate shadow vmware-toolscron.d group legal multipath popularity-contest.conf shadow- vtrgbcron.daily group-letsencrypt multipath.conf profile shells vulkancron.hourly grub.d libaudit.conf mysql profile.d skel wgetrccron.monthly gshadow libnl -3 nanorc-Protokolle sos.conf X11crontab gshadow- locale.alias netplan pul se ssh xattr.confcron.weekly gss locale.gen network python3 ssl xdgcryptsetup-initramfs hdparm.conf localtime networkd-dispatcher python3.8 subgid zsh_command_not_foundcrypttab host.conf logcheck NetworkManager rc0.d subgid-dbus-1 hostname login.defs networks rc1.d subuid

Schlussfolgerung

In der obigen Anleitung haben wir gelernt, wie man Lsyncd für die lokale Synchronisierung und die Remote-Synchronisierung installiert und konfiguriert. Sie können Lsyncd jetzt in der Produktionsumgebung für Sicherungszwecke verwenden. Fühlen Sie sich frei, mich zu fragen, wenn Sie irgendwelche Fragen haben.


Ubuntu
  1. So installieren Sie Maven unter Ubuntu 18.04

  2. So installieren Sie WordPress mit Nginx unter Ubuntu 18.04

  3. So überwachen Sie Nginx mit Netdata unter Ubuntu 16.04

  4. So synchronisieren Sie lokale und entfernte Verzeichnisse in Linux

  5. So installieren Sie qBitTorrent 4.0 in Ubuntu mit PPA

So installieren Sie Grafana unter Ubuntu 20.04

So installieren Sie Browsh unter Ubuntu 20.04

So richten Sie ein VPN unter Ubuntu ein

So installieren Sie Winamp auf Ubuntu mit PlayOnLinux

So installieren Sie Ansible unter Ubuntu 20.04

Wie aktualisiere ich von 12.04 auf 12.10 mit CD?