GNU/Linux >> Belajar Linux >  >> Linux

Cara Menyinkronkan Direktori Lokal Dan Jarak Jauh Di Linux

Tutorial ini menjelaskan cara menyinkronkan direktori lokal dan jarak jauh di Linux menggunakan Lsyncd (Daemon Sinkronisasi Langsung). Menggunakan Lsyncd, kita dapat mencerminkan direktori lokal ke lokal atau direktori lokal ke remote. Ini sangat berguna ketika Anda ingin menyinkronkan data antar direktori yang sering diperbarui dengan konten baru. Lsyncd dirancang untuk menyinkronkan pohon direktori lokal dengan profil rendah dari perubahan yang diharapkan ke cermin jarak jauh. Sangat berguna untuk menyinkronkan data dari area yang aman ke area yang tidak terlalu aman.

Instal Lsyncd di Linux

Di Debian dan turunannya seperti Ubuntu, Linux Mint menjalankan perintah berikut untuk menginstal Lsyncd:

$ sudo apt-get install lsyncd

Di RHEL, CentOS, Anda harus mengaktifkan repositori EPEL terlebih dahulu.

$ sudo yum install epel-release

Kemudian, instal Lsyncd menggunakan perintah:

$ sudo yum install lsyncd

Konfigurasi Lsyncd pada Debian dan Ubuntu dan turunannya

Lsyncd tidak menyediakan file konfigurasi default dalam sistem berbasis DEB. Kita perlu membuatnya secara manual. Namun, Lsyncd menyertakan beberapa contoh file konfigurasi yang berguna untuk mendapatkan ide dasar tentang apa/bagaimana sinkronisasi dilakukan. Contoh file konfigurasi akan ditemukan di "/usr/share/doc/lsyncd-*/examples" direktori.

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

Contoh keluaran:

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

Seperti yang Anda lihat pada output di atas, setiap file konfigurasi diakhiri dengan .lua perpanjangan. Itu karena file konfigurasi lsync ditulis menggunakan bahasa pemrograman Lua . Mari kita lihat contoh file konfigurasi.

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

Seperti inilah tampilan file konfigurasi 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",
}

Konfigurasi Lsyncd pada RHEL dan CentOS

Pada sistem RHEL dan CentOS, file konfigurasi Lsyncd akan dibuat secara otomatis. Anda dapat melihat isi file ini menggunakan perintah:

$ cat /etc/lsyncd.conf

Dan, contoh file konfigurasi tersedia di lokasi berikut.

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

Sinkronisasi Direktori Lokal Dan Jarak Jauh Di Linux Menggunakan Lsyncd

Seperti yang sudah dinyatakan, Lyncd dapat menyinkronkan konten dua direktori lokal dan direktori lokal ke direktori jarak jauh. Pertama, kita akan melihat cara menyinkronkan direktori lokal.

1. Sinkronisasi direktori lokal di Debian, Ubuntu

Sekarang, kita akan menyinkronkan dua direktori lokal.

Mari kita buat dua direktori dengan beberapa contoh konten.

$ sudo mkdir source_dir
$ sudo mkdir dest_dir

Buat beberapa file acak di direktori source_dir:

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

Secara opsional, Anda dapat membuat beberapa file log untuk Lysyncd. Ini hanya opsional. Jika Anda tidak ingin file log, lewati langkah ini.

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

Selanjutnya, buat file konfigurasi untuk Lsyncd:

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

Edit/modifikasi baris berikut:

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

Ganti jalur direktori sumber dan target dengan nilai Anda sendiri. Simpan dan tutup file.

Aktifkan dan mulai atau mulai ulang layanan Lsyncd menggunakan perintah:

$ sudo systemctl enable lsyncd
$ sudo systemctl restart lsyncd

Sekarang, periksa isi direktori source_dir dan dest_dir.

$ ls source_dir/

Contoh keluaran:

file1 file10 file2 file3 file4 file5 file6 file7 file8 file9

Periksa konten dest_dir:

$ ls dest_dir/

Contoh keluaran:

file1 file10 file2 file3 file4 file5 file6 file7 file8 file9

Lihat? Kami telah membuat file di direktori source_dir saja dan isi direktori ini telah secara otomatis disinkronkan ke direktori dest_dir.

Anda juga dapat meninjau file log untuk memverifikasi apakah replikasi selesai atau tidak.

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

Contoh keluaran:

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.

Periksa file status Lsyncd:

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

Contoh keluaran:

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/
Unduh - eBuku gratis:"Administrasi Lanjutan GNU/Linux"

2. Sinkronisasi direktori lokal di RHEL, CentOS

Edit file konfigurasi Lsyncd:

$ sudo nano /etc/lsyncd.conf

Edit dan ubah baris berikut:

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

Ganti jalur direktori sumber dan target dengan nilai Anda sendiri. Simpan dan tutup file.

Aktifkan dan mulai layanan Lsyncd menggunakan perintah:

$ sudo systemctl enable lsyncd
$ sudo systemctl start lsyncd

Sekarang, periksa isi direktori source_dir dan dest_dir.

$ ls source_dir/

Contoh keluaran:

file1 file10 file2 file3 file4 file5 file6 file7 file8 file9

Periksa konten dest_dir:

$ ls dest_dir/

Contoh keluaran:

file1 file10 file2 file3 file4 file5 file6 file7 file8 file9

Selamat! Isi source_dir telah berhasil disinkronkan ke direktori dest_dir.

Anda juga dapat meninjau file log untuk memverifikasi apakah replikasi selesai atau tidak.

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

Periksa file status Lsyncd:

$ more /var/log/lsyncd.status

3. Sinkronisasi direktori jarak jauh di Debian, sistem Ubuntu

Kita perlu mengatur SSH tanpa kata sandi Gabung. Ini karena Lsyncd akan secara otomatis mereplikasi konten direktori lokal ke direktori jarak jauh tanpa campur tangan pengguna.

$ sudo su
# ssh-keygen -t rsa

Jangan masukkan frasa sandi apa pun. Cukup tekan ENTER untuk menerima nilai default.

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

Sekarang, salin kunci publik SSH ke sistem jarak jauh Anda:

# ssh-copy-id [email protected]

Contoh keluaran:

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

Di sini, 192.168.43.150 adalah alamat IP sistem jarak jauh.

Sekarang, Anda dapat melakukan SSH ke sistem jarak jauh Anda tanpa harus memasukkan kata sandi:

# ssh [email protected]

Buat direktori target di sistem jarak jauh dengan perintah:

# mkdir remotesync

Keluar dari sistem jarak jauh:

# exit

Selanjutnya, edit file konfigurasi Lsyncd di mesin sumber:

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

Edit/modifikasi baris berikut:

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

Di sini, 192.168.43.150 adalah alamat IP host jarak jauh saya. Dan, /root/remotesync/ adalah direktori tujuan di sistem jarak jauh saya. Ganti nilainya dengan milik Anda. Simpan dan tutup file.

Mulai ulang layanan Lsyncd untuk mereplikasi konten direktori sumber ke tujuan.

$ sudo systemctl restart lsyncd

Sekarang, SSH ke sistem jarak jauh Anda:

$ ssh [email protected]

Dan, periksa konten direktori target (yaitu /root/remotesync/ dalam kasus kami). Anda akan melihat semua file dari direktori sumber dari sistem lokal telah direplikasi ke direktori target di sistem tujuan.

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

Prosedur ini sama untuk sistem RHEL dan CentOS. Siapkan login SSH tanpa kata sandi dan pastikan Anda telah memodifikasi jalur sumber dan target yang benar di file konfigurasi utama Lsyncd (/etc/lsyncd.conf) di sistem RHEL atau CentOS Anda, dan langkah-langkah lainnya sama.

Unduh - Panduan Gratis:"10 Cara Mudah Memulihkan Sistem Linux Anda"

Anda tahu cara menyinkronkan direktori lokal dan jarak jauh di Linux menggunakan Lsyncd. Seperti yang Anda lihat, ini adalah metode yang sangat mudah dan langsung.

Semoga membantu.


Linux
  1. Cara Menyinkronkan Direktori Menggunakan Lsyncd di Ubuntu 20.04

  2. Cara Mengarsipkan File Dan Direktori Di Linux [Bagian 2]

  3. Cara Mengarsipkan File Dan Direktori Di Linux [Bagian 1]

  1. Cara Mencari dan Menghapus Direktori Secara Rekursif di Linux

  2. Cara Mengganti Nama Cabang Git Lokal dan Jarak Jauh

  3. Cara Menemukan dan Menghapus Direktori dan File Kosong di Linux

  1. Cara Menyalin File dan Direktori di Linux

  2. Cara Mengganti Nama File dan Direktori di Linux

  3. Linux:Menyinkronkan file secara terus-menerus, satu arah