Cara mengatur daemon rsync di linux

Cara mengatur daemon rsync di linux

Dalam artikel sebelumnya kami melihat beberapa contoh dasar tentang cara menggunakan rsync di Linux untuk mentransfer data secara efisien. Seperti yang kita lihat, untuk menyinkronkan data dengan mesin jarak jauh kita dapat menggunakan kedua shell jarak jauh sebagai ssh atau Rsync Daemon. Di artikel ini kami akan fokus pada opsi yang terakhir, dan kami akan melihat cara menginstal dan mengonfigurasi rsyncd pada beberapa distribusi Linux yang paling banyak digunakan.

Dalam tutorial ini Anda akan belajar:

  • Cara menginstal dan mengkonfigurasi daemon rsync

Persyaratan dan konvensi perangkat lunak yang digunakan

Persyaratan Perangkat Lunak dan Konvensi Baris Perintah Linux
Kategori Persyaratan, konvensi atau versi perangkat lunak yang digunakan
Sistem Distribusi-independen
Perangkat lunak
  • Rsync
  • Rsyncd (daemon rsync)
Lainnya Tidak diperlukan persyaratan khusus untuk mengikuti tutorial ini
Konvensi # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah
$ - mensyaratkan perintah Linux yang diberikan untuk dieksekusi sebagai pengguna biasa

Instalasi

Menginstal Rsync Daemon sangat mudah, karena paket dan dependensinya tersedia secara default di semua repositori distribusi Linux utama. Pada Debian Dan Archlinux, file yang terkait dengan daemon rsync disertakan rsync paket, jadi yang harus kita lakukan, adalah menginstal yang terakhir. Di Debian kita dapat menggunakan APT Package Manager:

$ sudo apt-get install rsync

Di Archlinux, sebagai gantinya, kami menggunakan Pacman:

$ sudo Pacman -s rsync

Pada distribusi seperti Fedora, sebagai gantinya, rsyncd, Daemon Rsync, didistribusikan dalam paketnya sendiri, rsync-daemon. Dalam versi distribusi terbaru, untuk menginstalnya, kita dapat menggunakan dnf Manajer Paket. Paket RSYNC utama akan diinstal sebagai ketergantungan:



$ sudo dnf menginstal rsync-daemon 

File konfigurasi rsyncd

Sekali rsyncd diinstal, kami dapat mengonfigurasinya menggunakan /etc/rsyncd.conf mengajukan. File sudah termasuk dalam paket Archlinux dan Fedora, sedangkan di Debian harus dibuat dari awal. Berikut adalah konten file di fedora:

# /etc /rsyncd: File konfigurasi untuk mode daemon rsync # lihat rsyncd.halaman conf man untuk lebih banyak opsi. # Contoh konfigurasi: # uid = siapa pun # gid = siapa pun # menggunakan chroot = ya # max connections = 4 # file pid =/var/run/rsyncd.PID # Exclude = Lost+Found/ # Transfer Logging = Ya # Timeout = 900 # Abaikan Tidak Dapat Dibaca = Ya # Dont Compress = *.GZ *.tgz *.ritsleting *.z *.Z *.RPM *.Deb *.bz2 # [ftp] # path = /home /ftp # komentar = area ekspor ftp 

Semua parameter dikomentari, dan ditampilkan sebagai contoh konfigurasi: mereka mewakili titik awal yang baik untuk diskusi kami. Hal pertama yang harus kita perhatikan adalah bagaimana rsyncd modul didefinisikan:

[ftp] path = /home /ftp komentar = area ekspor ftp

Modul didefinisikan dalam "bait" yang dimulai dengan deklarasi nama modul antara kurung persegi, dalam hal ini [FTP]. Modul dikaitkan dengan direktori dalam sistem file, ditentukan dengan jalur argumen. Semua parameter yang disediakan di dalam bait lokal, Jadi mereka diterapkan pada modul terkait saja; Pengaturan yang disediakan sebelum bait apa pun, adalah global. Mari kita lihat beberapa dari mereka.



Parameter global

Seperti yang baru saja kami katakan, parameter global adalah yang didefinisikan di awal /etc/rsyncd.conf file, sebelum definisi modul apa pun, atau secara opsional di dalam a [global] bagian. Di sini kita akan membahas beberapa yang paling menarik.

Parameter "File PID"

Parameter ini digunakan untuk menentukan jalur file tempat RSYNCD Pid (ID proses) akan ditulis. Secara default, peluncuran daemon akan dibatalkan jika file yang ditentukan sudah ada. Dimungkinkan untuk mengubah perilaku ini, dan membiarkan file ditimpa, sebagai gantinya, dengan meluncurkan daemon rsync dengan --DPARAM = PID - File = File pilihan.

Parameter "port"

Dengan menggunakan parameter global ini, kami dapat menentukan port alternatif untuk daemon rsync. Standarnya adalah TCP Port 873. Opsi ini dapat ditimpa saat daemon diluncurkan, dengan menggunakan --pelabuhan pilihan.

Parameter "alamat"

Kita bisa menggunakan global alamat parameter untuk menentukan alamat yang akan didengarkan oleh daemon rsync. Alamat yang ditentukan dalam file dapat ditimpa dengan meluncurkan daemon dengan --alamat opsi, memberikan alamat yang diinginkan sebagai argumen.

Selain parameter yang kami lihat di atas, di bagian global, kami dapat menentukan juga parameter modul. Saat kami melakukannya, nilai parameter yang ditentukan akan menjadi yang default untuk semua modul.

Parameter modul

Parameter modul adalah yang ditentukan di dalam bagian modul dan hanya diterapkan pada bagian itu. Mari kita lihat beberapa dari mereka.

Parameter "jalur"

Parameter ini wajib dan harus disediakan untuk setiap modul. Ini digunakan untuk menentukan jalur direktori yang disediakan oleh modul itu sendiri.

Parameter "Komentar"

Parameter "komentar" adalah opsional: kami dapat menentukan string yang akan ditampilkan di dekat nama modul, ketika klien meminta daftar yang tersedia.

Membuat modul hanya membaca atau menulis

Secara default, semua modul dibuat sebagai read-only. Ini berarti bahwa klien hanya dapat menggunakannya sebagai sumber untuk transfer. Perilaku ini dapat diubah dengan mengatur parameter "hanya baca" TIDAK atau PALSU. Modul ini juga dapat dibuat hanya menulis, dengan menggunakan Tulis saja parameter dan menyediakan Ya atau BENAR sebagai nilai. Jika parameter terakhir ini diaktifkan, klien tidak akan dapat mengunduh file dari modul. Untuk membaca file dari modul atau menulis kepadanya, izin unix standar juga harus dihormati, jadi, pengguna transfer dijalankan sebagai, harus diizinkan untuk melakukan tindakan yang diinginkan.

Parameter uid dan gid

Itu uid Dan gid Parameter digabungkan, tentukan hak istimewa yang akan dimiliki transfer. Yang pertama digunakan untuk menentukan pengguna transfer dijalankan seperti ketika daemon dijalankan sebagai root (jika daemon dijalankan dengan hak istimewa pengguna normal, pengguna tidak akan berubah). Pengguna dapat diidentifikasi dengan nama pengguna, atau ID numeriknya. Yang terakhir mendefinisikan satu atau lebih nama grup atau ID grup yang akan digunakan untuk transfer.

Nilai default untuk kedua opsi adalah bukan siapa-siapa, artinya ketika daemon dijalankan sebagai root, transfer akan dijalankan dengan hak istimewa bukan siapa-siapa pengguna dan bukan siapa-siapa grup (di debian kelompok tidak ada yang tidak ada - nogroup digunakan sebagai gantinya).

Parameter "Gunakan Chroot"

Dengan menggunakan Gunakan chroot Parameter, kita dapat mendefinisikan apakah rsync harus chroot ke jalur modul yang ditentukan sebelum transfer dimulai. Ini dapat digunakan untuk menegakkan keamanan, tetapi untuk memanfaatkannya, daemon harus dikonfigurasi untuk dijalankan dengan hak istimewa root. Secara default opsi ini diatur ke Ya.

Parameter "Max Connections"

Ini adalah parameter lain yang sangat berguna, dan digunakan untuk menentukan jumlah maksimum koneksi simultan yang didukung oleh daemon. Nilai default yang digunakan untuk parameter adalah 0, artinya tidak ada batasan yang ditetapkan. Jika nilai yang disediakan adalah angka negatif, koneksi dinonaktifkan sepenuhnya.

Mengecualikan dan memasukkan file dari transfer

Terkadang kita mungkin ingin mengecualikan beberapa file dari transfer: kita dapat menyelesaikan tugas dengan menggunakan mengecualikan parameter, yang menerima daftar pola yang dipisahkan ruang. File yang cocok dengan polanya tidak akan disinkronkan. Itu termasuk Parameter bekerja dengan cara yang sama tetapi digunakan untuk secara eksplisit mendefinisikan inklusi.



Cara lain untuk mengecualikan atau secara eksplisit memasukkan file adalah dengan menggunakan mengecualikan dari Dan termasuk dari parameter. Dengan parameter ini kita dapat menentukan jalur file yang berisi pola pengecualian dan inklusi, masing -masing. File harus berisi satu pola per baris.

Itu mengecualikan, termasuk, mengecualikan dari Dan termasuk dari Parameter hanya dapat muncul sekali di dalam modul.

Parameter "Timeout"

Saat kami menggunakan rsync Klien Kami dapat memberikan--waktu habis Opsi untuk menetapkan batas waktu I/O maksimum dalam detik: Jika tidak ada data yang ditransfer dalam waktu yang ditentukan, transfer dibatalkan. Itu waktu habis opsi Rsync Daemon dapat digunakan untuk mengganti batas waktu yang ditentukan oleh klien. Ini bisa berguna untuk menghindari menunggu klien yang mati tanpa ditentukan. Timeout diekspresikan dalam hitungan detik: 0 adalah default, dan itu berarti tidak ada batas waktu.

"Abaikan tidak dapat dibaca" dan "jangan kompres"

Itu abaikan tidak dapat dibaca Opsi digunakan instruktur rsync untuk mengabaikan file yang tidak dapat dibaca oleh pengguna transfer berjalan sebagai. Itu jangan kompres Opsi, sebaliknya, digunakan untuk menyediakan daftar terpisah dari pola case-tidak sensitif yang digunakan untuk memilih file yang tidak boleh dikompresi selama transfer. Ini bisa sangat berguna untuk menghindari mengompresi file yang sudah dikompresi.

Parameter “Hosts memungkinkan” dan “host menyangkal”

Dengan menggunakan host memungkinkan Dan tuan rumah menyangkal Parameter, kami dapat menentukan daftar pola yang dipisahkan koma yang akan dicocokkan dengan nama host atau IP klien, untuk mengizinkan atau menolak akses ke mereka, masing-masing. Dua parameter dapat digabungkan dan muncul bersama di dalam modul: pola "izinkan" diperiksa sebelum yang "tolak". Secara default, semua host diizinkan untuk terhubung.

Contoh konfigurasi modul

Mari kita buat contoh dan buat modul di server RSYNC. Hal pertama yang harus kita lakukan adalah mengizinkan lalu lintas yang masuk TCP pelabuhan 873. Jika kami menggunakan firewalld, kami dapat menambahkan yang telah dikonfigurasi sebelumnya rsyncd Layanan ke zona yang kami gunakan:

$ sudo firewall-cmd --permanent --add-service rsyncd && sudo firewall-cmd --road

Jika kita menggunakan UFW, sebagai gantinya, kita dapat menjalankan:

$ sudo ufw memungkinkan 873/tcp

Setelah kami mengonfigurasi firewall, kami dapat melanjutkan dan menentukan modul. Ini konfigurasi kami:

[linuxconfig] path =/mnt/data/rsync comment = "Contoh modul daemon rsync" baca saja = false exclude = *.txt

Kami menyebut modul kami "linuxconfig" dan kami mengaitkan /mnt/data/rsync direktori untuk itu. Kami juga memberikan komentar. Kami mengatur modul yang dapat dibaca dan dapat ditulis dengan mengatur Baca saja parameter ke false, dan, melalui mengecualikan parameter, kami menyediakan pola untuk mengecualikan semua file dengan .txt perpanjangan.

Sebelum kita menggunakan modul kita, kita perlu memulai daemon. Kita dapat menjalankan rsync sebagai daemon dengan memohon program dengan --Daemon Opsi, atau kita dapat menggunakan SystemD untuk menyelesaikan tugas (di bawah kap mesin layanan memang menjalankan perintah yang sama). Di bawah distribusi berbasis Debian, layanan ini disebut rsync; Di Fedora dan Archlinux, itu disebut rsyncd:

$ sudo systemctl mulai rsync

Untuk membuat RSYNC mulai secara otomatis saat boot, kita harus menggunakan Systemctl memungkinkan Sub -perintah:

$ sudo systemctl mengaktifkan rsync

Kami mengatur /mnt/data/rsync Direktori yang dimiliki oleh bukan siapa-siapa pengguna dan nogroup grup (ini mesin debian). Inilah isinya:

$ ls/mnt/data/rsync csv1.CSV Text1.Txt Text2.txt 

Karena kita dapat melihat direktori berisi dua .txt file dan satu .CSV. Jika kita menggunakan modul sebagai sumber dalam transfer, hanya “CSV1.File CSV ”akan disertakan:

$ rsync -av rsync: // 192.168.0.39/linuxconfig/ . menerima daftar file tambahan ./ CSV1.CSV 

Pengecualian juga berlaku saat kami menggunakan modul sebagai tujuan. Katakanlah kita membuat “csv2.CSV "dan" Text3.file txt ”di direktori kerja kami saat ini:

$ Touch CSV2.CSV Text3.txt


Jika kita sekarang menjalankan rsync dan menggunakan direktori kerja kita saat ini sebagai sumber dan modul sebagai tujuan, kita dapat melihat bagaimana daemon menolak untuk menerima "text3.file txt ”, karena dicocokkan dengan pola pengecualian yang ditentukan:

$ rsync -av . rsync: // 192.168.0.39/LinuxConfig Mengirim Daftar File Terkisap Kesalahan: Daemon Ditolak untuk Menerima File "Text3.txt" ./ csv2.CSV 

Perhatikan bahwa dalam perintah di atas kami menggunakan URL rsync untuk menentukan alamat IP server dan nama modul yang ingin kami gunakan. Bagaimana kita bisa mendapatkan daftar semua modul yang tersedia di mesin? Sangat mudah, kami hanya menjalankan perintah rsync yang hanya menentukan alamat server di URL:

$ rsync rsync: // 192.168.0.39 linuxconfig "Contoh modul daemon rsync" 

Semua modul yang tersedia dan komentar terkait akan ditampilkan; Dalam hal ini, hanya "linuxconfig".

Kesimpulan

Pada artikel ini kami melihat cara menginstal dan mengkonfigurasi daemon rsync, pada beberapa distribusi Linux yang paling banyak digunakan. Kami melihat dan belajar cara menggunakan beberapa parameter global dan spesifik modul yang tersedia untuk mengubah perilaku daemon rsyncd. Akhirnya kami melihat contoh konfigurasi modul. Untuk pengetahuan yang lebih mendalam tentang rsyncd, Kami selalu dapat berkonsultasi dengan manual resmi. Ini hanya masalah berlari:

$ man rsyncd.conf

Tutorial Linux Terkait:

  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Pengantar Otomatisasi Linux, Alat dan Teknik
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • Hal -hal yang harus diinstal pada Ubuntu 22.04
  • File Konfigurasi Linux: 30 Teratas Paling Penting
  • Menguasai loop skrip bash
  • Unduh Linux
  • Mint 20: Lebih baik dari Ubuntu dan Microsoft Windows?
  • Cara Dual Boot Kali Linux dan Windows 10
  • Ubuntu 20.04 trik dan hal -hal yang mungkin tidak Anda ketahui