GNU/Linux >> Znalost Linux >  >> Linux

Jak synchronizovat místní a vzdálené adresáře v Linuxu

Tento tutoriál popisuje, jak synchronizovat místní a vzdálené adresáře v systému Linux pomocí Lsyncd (Démon živé synchronizace). Pomocí Lsyncd můžeme zrcadlit lokální do lokálních adresářů nebo lokální do vzdálených adresářů. Hodí se, když chcete synchronizovat data mezi adresáři, které jsou často aktualizovány novým obsahem. Lsyncd je navržen tak, aby synchronizoval místní adresářový strom s nízkým profilem očekávaných změn do vzdáleného zrcadla. Zvláště užitečné je synchronizovat data ze zabezpečené oblasti do méně zabezpečené oblasti.

Nainstalujte Lsyncd v Linuxu

Na Debianu a jeho derivátech, jako je Ubuntu, spustí Linux Mint následující příkaz k instalaci Lsyncd:

$ sudo apt-get install lsyncd

Na RHEL, CentOS, musíte nejprve povolit úložiště EPEL.

$ sudo yum install epel-release

Poté nainstalujte Lsyncd pomocí příkazu:

$ sudo yum install lsyncd

Konfigurace Lsyncd na Debianu a Ubuntu a derivátech

Lsyncd neposkytuje žádný výchozí konfigurační soubor v systémech založených na DEB. Musíme jej vytvořit ručně. Lsyncd však obsahuje některé vzorové konfigurační soubory, které jsou užitečné pro získání základní představy o tom, co/jak provádí synchronizaci. Vzorové konfigurační soubory naleznete pod "/usr/share/doc/lsyncd-*/examples" adresář.

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

Ukázkový výstup:

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

Jak vidíte ve výše uvedeném výstupu, každý konfigurační soubor končí .lua rozšíření. Je to proto, že konfigurační soubor lsync je napsán pomocí programovacího jazyka Lua . Pojďme se podívat na ukázkový konfigurační soubor.

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

Takto vypadá konfigurační soubor Lrsync:

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

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

Konfigurace Lsyncd na RHEL a CentOS

Na systémech RHEL a CentOS se konfigurační soubor Lsyncd vytvoří automaticky. Obsah tohoto souboru můžete zobrazit příkazem:

$ cat /etc/lsyncd.conf

A ukázkové konfigurační soubory jsou k dispozici v následujícím umístění.

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

Synchronizujte místní a vzdálené adresáře v Linuxu pomocí Lsyncd

Jak již bylo uvedeno, Lyncd může synchronizovat obsah dvou místních adresářů a místního adresáře se vzdáleným adresářem. Nejprve uvidíme, jak synchronizovat místní adresáře.

1. Synchronizujte místní adresáře v Debianu, Ubuntu

Nyní budeme synchronizovat dva místní adresáře.

Vytvořme dva adresáře s nějakým příkladem obsahu.

$ sudo mkdir source_dir
$ sudo mkdir dest_dir

Vytvořte nějaké náhodné soubory v adresáři source_dir:

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

Volitelně můžete vytvořit nějaké soubory protokolu pro Lysyncd. Toto je pouze volitelné. Pokud nechcete soubory protokolu, přeskočte tento krok.

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

Dále vytvořte konfigurační soubor pro Lsyncd:

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

Upravte/upravte následující řádky:

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",
}

Nahraďte cestu ke zdrojovému a cílovému adresáři svými vlastními hodnotami. Uložte a zavřete soubor.

Povolte a spusťte nebo restartujte službu Lsyncd pomocí příkazů:

$ sudo systemctl enable lsyncd
$ sudo systemctl restart lsyncd

Nyní zkontrolujte obsah adresářů source_dir a dest_dir.

$ ls source_dir/

Ukázkový výstup:

file1 file10 file2 file3 file4 file5 file6 file7 file8 file9

Zkontrolujte obsah dest_dir:

$ ls dest_dir/

Ukázkový výstup:

file1 file10 file2 file3 file4 file5 file6 file7 file8 file9

Vidět? Vytvořili jsme soubory pouze v adresáři source_dir a obsah tohoto adresáře byl automaticky synchronizován s adresářem dest_dir.

Můžete si také prohlédnout soubory protokolu a ověřit, zda je replikace dokončena či nikoli.

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

Ukázkový výstup:

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.

Zkontrolujte stavový soubor Lsyncd:

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

Ukázkový výstup:

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/
Stáhnout - Zdarma e-kniha:"Pokročilá správa GNU/Linux"

2. Synchronizujte místní adresáře na RHEL, CentOS

Upravit konfigurační soubor Lsyncd:

$ sudo nano /etc/lsyncd.conf

Upravte a upravte následující řádky:

----
-- 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",

Nahraďte cestu ke zdrojovému a cílovému adresáři svými vlastními hodnotami. Uložte a zavřete soubor.

Povolte a spusťte službu Lsyncd pomocí příkazů:

$ sudo systemctl enable lsyncd
$ sudo systemctl start lsyncd

Nyní zkontrolujte obsah adresářů source_dir a dest_dir.

$ ls source_dir/

Ukázkový výstup:

file1 file10 file2 file3 file4 file5 file6 file7 file8 file9

Zkontrolujte obsah dest_dir:

$ ls dest_dir/

Ukázkový výstup:

file1 file10 file2 file3 file4 file5 file6 file7 file8 file9

Gratuluji! Obsah source_dir byl úspěšně synchronizován do adresáře dest_dir.

Můžete si také prohlédnout soubory protokolu a ověřit, zda je replikace dokončena či nikoli.

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

Zkontrolujte stavový soubor Lsyncd:

$ more /var/log/lsyncd.status

3. Synchronizujte vzdálené adresáře na systémech Debian, Ubuntu

Musíme nastavit SSH bez hesla přihlásit se. Je to proto, že Lsyncd automaticky replikuje obsah místního adresáře do vzdáleného adresáře bez zásahu uživatele.

$ sudo su
# ssh-keygen -t rsa

Nezadávejte žádné přístupové heslo. Jednoduše stiskněte ENTER pro přijetí výchozích hodnot.

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]-----+

Nyní zkopírujte veřejný klíč SSH do vzdáleného systému:

# ssh-copy-id [email protected]

Ukázkový výstup:

/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.

Zde je 192.168.43.150 IP adresa vzdáleného systému.

Nyní budete moci připojit SSH na váš vzdálený systém, aniž byste museli zadávat heslo:

# ssh [email protected]

Vytvořte cílový adresář ve vzdáleném systému pomocí příkazu:

# mkdir remotesync

Odhlaste se ze vzdáleného systému:

# exit

Dále upravte konfigurační soubor Lsyncd na zdrojovém počítači:

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

Upravte/upravte následující řádky:

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",
}

Zde je 192.168.43.150 IP adresa mého vzdáleného hostitele. A /root/remotesync/ je cílový adresář v mém vzdáleném systému. Nahraďte hodnoty svými vlastními. Uložte a zavřete soubor.

Restartujte službu Lsyncd, aby se obsah zdrojového adresáře replikoval do cíle.

$ sudo systemctl restart lsyncd

Nyní SSH do vašeho vzdáleného systému:

$ ssh [email protected]

A zkontrolujte obsah cílového adresáře (tj. /root/remotesync/ v našem případě ). Uvidíte, že všechny soubory ze zdrojového adresáře z místního systému byly replikovány do cílového adresáře v cílovém systému.

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

Tento postup je stejný pro systémy RHEL a CentOS. Nastavte přihlášení SSH bez hesla a ujistěte se, že jste upravili správné zdrojové a cílové cesty v hlavním konfiguračním souboru Lsyncd (/etc/lsyncd.conf) ve vašem systému RHEL nebo CentOS a zbytek kroků je stejný.

StáhnoutPříručka zdarma:„10 snadných způsobů obnovení systému Linux“

Víte, jak synchronizovat místní a vzdálené adresáře v Linuxu pomocí Lsyncd. Jak vidíte, je to velmi snadná a přímočará metoda.

Doufám, že to pomůže.


Linux
  1. Jak vyhledávat a odstraňovat adresáře rekurzivně v systému Linux

  2. Jak synchronizovat adresáře pomocí Lsyncd na Ubuntu 20.04

  3. Jak přejmenovat místní a vzdálenou pobočku Git

  1. Jak archivovat soubory a adresáře v Linuxu [část 2]

  2. Jak archivovat soubory a adresáře v Linuxu [část 1]

  3. Linux:Nepřetržitě synchronizujte soubory jedním způsobem

  1. Jak kopírovat soubory a adresáře v Linuxu

  2. Jak přejmenovat soubory a adresáře v Linuxu

  3. Jak najít a odstranit prázdné adresáře a soubory v Linuxu