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

So synchronisieren Sie lokale und entfernte Verzeichnisse in Linux

In dieser Anleitung wird beschrieben, wie Sie lokale und Remote-Verzeichnisse in Linux mit Lsyncd synchronisieren (Live-Synchronisierungs-Daemon). Mit Lsyncd können wir lokal in lokale Verzeichnisse oder lokal in entfernte Verzeichnisse spiegeln. Es ist praktisch, wenn Sie Daten zwischen Verzeichnissen synchronisieren möchten, die häufig mit neuen Inhalten aktualisiert werden. Lsyncd wurde entwickelt, um einen lokalen Verzeichnisbaum mit geringem Profil erwarteter Änderungen mit einem Remote-Spiegel zu synchronisieren. Es ist besonders nützlich, Daten aus einem sicheren Bereich mit einem nicht so sicheren Bereich zu synchronisieren.

Lsyncd unter Linux installieren

Unter Debian und seinen Derivaten wie Ubuntu führt Linux Mint den folgenden Befehl aus, um Lsyncd zu installieren:

$ sudo apt-get install lsyncd

Unter RHEL, CentOS müssen Sie zuerst das EPEL-Repository aktivieren.

$ sudo yum install epel-release

Installieren Sie dann Lsyncd mit dem Befehl:

$ sudo yum install lsyncd

Lsyncd-Konfiguration auf Debian und Ubuntu und Derivaten

Lsyncd bietet keine Standardkonfigurationsdatei in DEB-basierten Systemen. Wir müssen es manuell erstellen. Lsyncd enthält jedoch einige Beispielkonfigurationsdateien, die nützlich sind, um eine grundlegende Vorstellung davon zu bekommen, was/wie es die Synchronisierung durchführt. Die Beispielkonfigurationsdateien finden Sie unter "/usr/share/doc/lsyncd-*/examples" Verzeichnis.

$ ls /usr/share/doc/lsyncd/examples/

Beispielausgabe:

lbash.lua lgforce.lua lpostcmd.lua lrsyncssh.lua
lecho.lua limagemagic.lua lrsync.lua

Wie Sie in der obigen Ausgabe sehen, endet jede Konfigurationsdatei mit .lua Verlängerung. Das liegt daran, dass die lsync-Konfigurationsdatei mit der Programmiersprache Lua geschrieben wurde . Werfen wir einen Blick auf eine Beispielkonfigurationsdatei.

$ cat /usr/share/doc/lsyncd/examples/lrsync.lua

So sieht die Lrsync-Konfigurationsdatei aus:

----
-- User configuration file for lsyncd.
--
-- Simple example for default rsync.
--
settings = {
 statusFile = "/tmp/lsyncd.stat",
 statusInterval = 1,
}

sync{
 default.rsync,
 source="src",
 target="trg",
}

Lsyncd-Konfiguration auf RHEL und CentOS

Auf RHEL- und CentOS-Systemen wird die Lsyncd-Konfigurationsdatei automatisch erstellt. Sie können den Inhalt dieser Datei mit dem Befehl anzeigen:

$ cat /etc/lsyncd.conf

Und die Beispielkonfigurationsdateien sind an folgendem Speicherort verfügbar.

$ ls /usr/share/doc/lsyncd-2.1.5/examples/

Lokale und entfernte Verzeichnisse unter Linux mit Lsyncd synchronisieren

Wie bereits erwähnt, kann Lyncd Inhalte von zwei lokalen Verzeichnissen und einem lokalen Verzeichnis mit einem Remote-Verzeichnis synchronisieren. Zuerst werden wir sehen, wie lokale Verzeichnisse synchronisiert werden.

1. Synchronisieren Sie lokale Verzeichnisse auf Debian, Ubuntu

Jetzt werden wir zwei lokale Verzeichnisse synchronisieren.

Lassen Sie uns zwei Verzeichnisse mit einigen Beispielinhalten erstellen.

$ sudo mkdir source_dir
$ sudo mkdir dest_dir

Erstellen Sie einige zufällige Dateien im Verzeichnis source_dir:

$ sudo touch source_dir/file{1..10}

Optional können Sie einige Protokolldateien für Lysyncd erstellen. Dies ist nur optional. Wenn Sie keine Protokolldateien wünschen, überspringen Sie diesen Schritt.

$ sudo mkdir /var/log/lsyncd
$ sudo touch /var/log/lsyncd/lsyncd.{log,status}

Als nächstes erstellen Sie eine Konfigurationsdatei für Lsyncd:

$ sudo mkdir /etc/lsyncd
$ sudo nano /etc/lsyncd/lsyncd.conf.lua

Bearbeiten/ändern Sie die folgenden Zeilen:

settings {
        logfile = "/var/log/lsyncd/lsyncd.log",
        statusFile = "/var/log/lsyncd/lsyncd.status"
}

sync {
        default.rsync,
        source = "/home/sk/source_dir",
        target = "/home/sk/dest_dir",
}

Ersetzen Sie den Quell- und Zielverzeichnispfad durch Ihre eigenen Werte. Speichern und schließen Sie die Datei.

Aktivieren und starten oder starten Sie den Lsyncd-Dienst mit den folgenden Befehlen neu:

$ sudo systemctl enable lsyncd
$ sudo systemctl restart lsyncd

Überprüfen Sie nun den Inhalt der Verzeichnisse source_dir und dest_dir.

$ ls source_dir/

Beispielausgabe:

file1 file10 file2 file3 file4 file5 file6 file7 file8 file9

Überprüfen Sie den Inhalt des Zielverzeichnisses:

$ ls dest_dir/

Beispielausgabe:

file1 file10 file2 file3 file4 file5 file6 file7 file8 file9

Sehen? Wir haben nur Dateien im Verzeichnis source_dir erstellt und der Inhalt dieses Verzeichnisses wurde automatisch mit dem Verzeichnis dest_dir synchronisiert.

Außerdem können Sie die Protokolldateien überprüfen, um zu überprüfen, ob die Replikation abgeschlossen ist oder nicht.

$ tail -10 /var/log/lsyncd/lsyncd.log

Beispielausgabe:

Sat Apr 15 17:07:34 2017 Normal: recursive startup rsync: /home/sk/source_dir/ -> /home/sk/dest_dir/
Sat Apr 15 17:07:34 2017 Normal: Startup of "/home/sk/source_dir/" finished.

Überprüfen Sie die Lsyncd-Statusdatei:

$ more /var/log/lsyncd/lsyncd.status

Beispielausgabe:

Lsyncd status report at Sat Apr 15 17:07:44 2017

Sync1 source=/home/sk/source_dir/
There are 0 delays
Excluding:
 nothing.


Inotify watching 1 directories
 1: /home/sk/source_dir/
Herunterladen - Kostenloses eBook:"Die erweiterte GNU/Linux-Administration"

2. Synchronisieren Sie lokale Verzeichnisse auf RHEL, CentOS

Bearbeiten Sie die Lsyncd-Konfigurationsdatei:

$ sudo nano /etc/lsyncd.conf

Bearbeiten und ändern Sie die folgenden Zeilen:

----
-- 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/
-- 
settings {
 logfile = "/var/log/lsyncd.log",
 statusFile = "/var/log/lsyncd.status"
}

sync {
 default.rsync,
 source = "/root/source_dir",
 target = "/root/dest_dir",

Ersetzen Sie den Quell- und Zielverzeichnispfad durch Ihre eigenen Werte. Speichern und schließen Sie die Datei.

Aktivieren und starten Sie den Lsyncd-Dienst mit folgenden Befehlen:

$ sudo systemctl enable lsyncd
$ sudo systemctl start lsyncd

Überprüfen Sie nun den Inhalt der Verzeichnisse source_dir und dest_dir.

$ ls source_dir/

Beispielausgabe:

file1 file10 file2 file3 file4 file5 file6 file7 file8 file9

Überprüfen Sie den Inhalt des Zielverzeichnisses:

$ ls dest_dir/

Beispielausgabe:

file1 file10 file2 file3 file4 file5 file6 file7 file8 file9

Herzlichen Glückwunsch! Der Inhalt von source_dir wurde erfolgreich mit dem Verzeichnis dest_dir synchronisiert.

Außerdem können Sie die Protokolldateien überprüfen, um zu überprüfen, ob die Replikation abgeschlossen ist oder nicht.

$ tail -10 /var/log/lsyncd.log

Überprüfen Sie die Lsyncd-Statusdatei:

$ more /var/log/lsyncd.status

3. Remote-Verzeichnisse auf Debian- und Ubuntu-Systemen synchronisieren

Wir müssen passwortloses SSH einrichten Anmeldung. Dies liegt daran, dass Lsyncd den Inhalt des lokalen Verzeichnisses ohne Benutzereingriff automatisch in ein entferntes Verzeichnis repliziert.

$ sudo su
# ssh-keygen -t rsa

Geben Sie keine Passphrase ein. Drücken Sie einfach die EINGABETASTE, um die Standardwerte zu akzeptieren.

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 [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|o*=.++.. ... |
|E..*.+o. o + |
|+o+ + = . o O + |
|+ .B o = o * + . |
|..+ + o S + . |
| . o + o |
| o |
| |
| |
+----[SHA256]-----+

Kopieren Sie nun den öffentlichen SSH-Schlüssel auf Ihr Remote-System:

# ssh-copy-id [email protected]

Beispielausgabe:

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.43.150 (192.168.43.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
[email protected]'s password: 

Number of key(s) added: 1

Now try logging into the machine, with: "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

Hier ist 192.168.43.150 die IP-Adresse des Remote-Systems.

Jetzt können Sie sich per SSH mit Ihrem Remote-System verbinden, ohne das Passwort eingeben zu müssen:

# ssh [email protected]

Erstellen Sie ein Zielverzeichnis im entfernten System mit dem Befehl:

# mkdir remotesync

Melden Sie sich vom Remote-System ab:

# exit

Bearbeiten Sie als Nächstes die Lsyncd-Konfigurationsdatei auf dem Quellcomputer:

$ sudo nano /etc/lsyncd/lsyncd.conf.lua

Bearbeiten/ändern Sie die folgenden Zeilen:

settings {
 logfile = "/var/log/lsyncd/lsyncd.log",
 statusFile = "/var/log/lsyncd/lsyncd.status"
}

sync {
 default.rsync,
 source = "/home/sk/source_dir",
 host = "192.168.43.150",
 targetdir = "/root/remotesync",
}

Hier ist 192.168.43.150 die IP-Adresse meines Remote-Hosts. Und /root/remotesync/ ist das Zielverzeichnis in meinem Remote-System. Ersetzen Sie die Werte durch Ihre eigenen. Speichern und schließen Sie die Datei.

Starten Sie den Lsyncd-Dienst neu, um den Inhalt des Quellverzeichnisses auf das Ziel zu replizieren.

$ sudo systemctl restart lsyncd

Jetzt SSH zu Ihrem Remote-System:

$ ssh [email protected]

Und überprüfen Sie den Inhalt des Zielverzeichnisses (d. h. /root/remotesync/ in unserem Fall). Sie werden sehen, dass alle Dateien aus dem Quellverzeichnis des lokalen Systems in das Zielverzeichnis im Zielsystem repliziert wurden.

[email protected] ~]# ls remotesync/
file1 file10 file2 file3 file4 file5 file6 file7 file8 file9

Dieses Verfahren ist für RHEL- und CentOS-Systeme gleich. Richten Sie die passwortlose SSH-Anmeldung ein und stellen Sie sicher, dass Sie die richtigen Quell- und Zielpfade in der Lsyncd-Hauptkonfigurationsdatei (/etc/lsyncd.conf) in Ihrem RHEL- oder CentOS-System geändert haben und die restlichen Schritte gleich sind.

Herunterladen - Kostenloser Leitfaden:"10 einfache Möglichkeiten zur Wiederherstellung Ihres Linux-Systems"

Sie wissen, wie Sie lokale und entfernte Verzeichnisse in Linux mit Lsyncd synchronisieren. Wie Sie sehen können, ist dies eine sehr einfache und unkomplizierte Methode.

Hoffe das hilft.


Linux
  1. So suchen und entfernen Sie Verzeichnisse rekursiv unter Linux

  2. So synchronisieren Sie Verzeichnisse mit Lsyncd unter Ubuntu 20.04

  3. So archivieren Sie Dateien und Verzeichnisse unter Linux [Teil 2]

  4. So archivieren Sie Dateien und Verzeichnisse unter Linux [Teil 1]

  5. So finden und löschen Sie leere Verzeichnisse und Dateien in Linux

So synchronisieren Sie Dateien und Verzeichnisse mit Zaloha.sh

So sichern Sie Dateien und Verzeichnisse mit Rsync unter Linux

So finden und löschen Sie leere Verzeichnisse in Linux

Lsyncd – Lokale Verzeichnisse mit Remote-Linux synchronisieren

So kopieren Sie Dateien und Verzeichnisse im Linux-Terminal

So löschen Sie Dateien und Verzeichnisse mit der Linux-Befehlszeile