GNU/Linux >> Linux Esercitazione >  >> Linux

Come sincronizzare directory locali e remote in Linux

Questo tutorial descrive come sincronizzare le directory locali e remote in Linux utilizzando Lsyncd (Daemon di sincronizzazione live). Usando Lsyncd, possiamo eseguire il mirroring di directory locali su directory locali o directory locali su remote. È utile quando si desidera sincronizzare i dati tra directory che vengono aggiornate frequentemente con nuovi contenuti. Lsyncd è progettato per sincronizzare un albero di directory locale con un basso profilo delle modifiche previste su un mirror remoto. È particolarmente utile per sincronizzare i dati da un'area sicura a un'area meno sicura.

Installa Lsyncd in Linux

Su Debian e sui suoi derivati ​​come Ubuntu, Linux Mint esegue il seguente comando per installare Lsyncd:

$ sudo apt-get install lsyncd

Su RHEL, CentOS, devi prima abilitare il repository EPEL.

$ sudo yum install epel-release

Quindi, installa Lsyncd usando il comando:

$ sudo yum install lsyncd

Configurazione di Lsyncd su Debian e Ubuntu e derivati

Lsyncd non fornisce alcun file di configurazione predefinito nei sistemi basati su DEB. Dobbiamo crearlo manualmente. Tuttavia, Lsyncd include alcuni file di configurazione di esempio utili per avere un'idea di base di cosa/come esegue la sincronizzazione. I file di configurazione di esempio si trovano in "/usr/share/doc/lsyncd-*/examples" directory.

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

Risultato di esempio:

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

Come puoi vedere nell'output sopra, ogni file di configurazione termina con .lua estensione. È perché il file di configurazione di lsync viene scritto utilizzando il linguaggio di programmazione Lua . Diamo un'occhiata a un file di configurazione di esempio.

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

Ecco come appare il file di configurazione di 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",
}

Configurazione di Lsyncd su RHEL e CentOS

Sui sistemi RHEL e CentOS, il file di configurazione Lsyncd verrà creato automaticamente. Puoi visualizzare il contenuto di questo file usando il comando:

$ cat /etc/lsyncd.conf

Inoltre, i file di configurazione di esempio sono disponibili nel seguente percorso.

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

Sincronizza directory locali e remote in Linux utilizzando Lsyncd

Come già affermato, Lyncd è in grado di sincronizzare i contenuti di due directory locali e una directory locale in una directory remota. Per prima cosa, vedremo come sincronizzare le directory locali.

1. Sincronizza le directory locali su Debian, Ubuntu

Ora sincronizzeremo due directory locali.

Creiamo due directory con alcuni contenuti di esempio.

$ sudo mkdir source_dir
$ sudo mkdir dest_dir

Crea alcuni file casuali nella directory source_dir:

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

Facoltativamente, puoi creare alcuni file di registro per Lysyncd. Questo è solo facoltativo. Se non vuoi file di registro, salta questo passaggio.

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

Quindi, crea il file di configurazione per Lsyncd:

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

Modifica/modifica le seguenti righe:

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

Sostituisci il percorso delle directory di origine e di destinazione con i tuoi valori. Salva e chiudi il file.

Abilita e avvia o riavvia il servizio Lsyncd utilizzando i comandi:

$ sudo systemctl enable lsyncd
$ sudo systemctl restart lsyncd

Ora controlla il contenuto delle directory source_dir e dest_dir.

$ ls source_dir/

Risultato di esempio:

file1 file10 file2 file3 file4 file5 file6 file7 file8 file9

Controlla i contenuti di dest_dir:

$ ls dest_dir/

Risultato di esempio:

file1 file10 file2 file3 file4 file5 file6 file7 file8 file9

Vedere? Abbiamo creato file solo nella directory source_dir e il contenuto di questa directory è stato sincronizzato automaticamente nella directory dest_dir.

Inoltre, puoi rivedere i file di registro per verificare se la replica è stata completata o meno.

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

Risultato di esempio:

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.

Controlla il file di stato di Lsyncd:

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

Risultato di esempio:

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/
Scarica - Ebook gratuito:"L'amministrazione avanzata GNU/Linux"

2. Sincronizza le directory locali su RHEL, CentOS

Modifica il file di configurazione di Lsyncd:

$ sudo nano /etc/lsyncd.conf

Modifica e modifica le seguenti righe:

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

Sostituisci il percorso delle directory di origine e di destinazione con i tuoi valori. Salva e chiudi il file.

Abilita e avvia il servizio Lsyncd utilizzando i comandi:

$ sudo systemctl enable lsyncd
$ sudo systemctl start lsyncd

Ora controlla il contenuto delle directory source_dir e dest_dir.

$ ls source_dir/

Risultato di esempio:

file1 file10 file2 file3 file4 file5 file6 file7 file8 file9

Controlla i contenuti di dest_dir:

$ ls dest_dir/

Risultato di esempio:

file1 file10 file2 file3 file4 file5 file6 file7 file8 file9

Congratulazioni! Il contenuto di source_dir è stato sincronizzato con successo nella directory dest_dir.

Inoltre, puoi rivedere i file di registro per verificare se la replica è stata completata o meno.

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

Controlla il file di stato di Lsyncd:

$ more /var/log/lsyncd.status

3. Sincronizza directory remote su sistemi Debian e Ubuntu

Dobbiamo impostare SSH senza password Accedere. Questo perché Lsyncd replicherà automaticamente il contenuto della directory locale in una directory remota senza l'intervento dell'utente.

$ sudo su
# ssh-keygen -t rsa

Non inserire alcuna passphrase. Basta premere INVIO per accettare i valori predefiniti.

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

Ora copia la chiave pubblica SSH sul tuo sistema remoto:

# ssh-copy-id [email protected]

Risultato di esempio:

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

Qui, 192.168.43.150 è l'indirizzo IP del sistema remoto.

Ora sarai in grado di inviare SSH al tuo sistema remoto senza dover inserire la password:

# ssh [email protected]

Crea una directory di destinazione nel sistema remoto con il comando:

# mkdir remotesync

Esci dal sistema remoto:

# exit

Quindi, modifica il file di configurazione Lsyncd nel computer di origine:

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

Modifica/modifica le seguenti righe:

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

Qui, 192.168.43.150 è l'indirizzo IP del mio host remoto. E, /root/remotesync/ è la directory di destinazione nel mio sistema remoto. Sostituisci i valori con i tuoi. Salva e chiudi il file.

Riavvia il servizio Lsyncd per replicare il contenuto della directory di origine nella destinazione.

$ sudo systemctl restart lsyncd

Ora, SSH al tuo sistema remoto:

$ ssh [email protected]

E controlla il contenuto della directory di destinazione (cioè /root/remotesync/ nel nostro caso). Vedrai che tutti i file dalla directory di origine del sistema locale sono stati replicati nella directory di destinazione nel sistema di destinazione.

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

Questa procedura è la stessa per i sistemi RHEL e CentOS. Imposta l'accesso SSH senza password e assicurati di aver modificato i percorsi di origine e destinazione corretti nel file di configurazione principale di Lsyncd (/etc/lsyncd.conf) nel tuo sistema RHEL o CentOS e il resto dei passaggi è lo stesso.

Scarica - Guida gratuita:"10 semplici modi per ripristinare il tuo sistema Linux"

Sai come sincronizzare le directory locali e remote in Linux usando Lsyncd. Come puoi vedere, questo è un metodo molto semplice e diretto.

Spero che questo aiuti.


Linux
  1. Come cercare e rimuovere le directory in modo ricorsivo su Linux

  2. Come sincronizzare le directory usando Lsyncd su Ubuntu 20.04

  3. Come archiviare file e directory in Linux [Parte 2]

  4. Come archiviare file e directory in Linux [Parte 1]

  5. Linux:sincronizza continuamente i file, in un modo

Come sincronizzare file e directory utilizzando Zaloha.sh

Come eseguire il backup di file e directory utilizzando Rsync in Linux

Come trovare ed eliminare directory vuote in Linux

Lsyncd:sincronizza le directory locali con Linux remoto

Come copiare file e directory nel terminale Linux

Come eliminare file e directory utilizzando la riga di comando di Linux