Rsync menyalin dan menyinkronkan file dengan server jauh

Utilitas Rsync dapat digunakan untuk menyalin dan menyinkronkan file dan folder dari server Linux lokal ke yang jauh dan sebaliknya. Rsync memungkinkan Anda untuk menyalin data antara server di dalam koneksi SSH yang aman. Juga, rsync, Mendukung kompresi data dengan cepat, yang meningkatkan kinerja sistem.

Untuk mencegah hilangnya informasi saat mengirim file, rsync pertama-tama menyalin semua informasi yang ditransfer ke file sementara. Fitur penting lainnya dari rsync adalah file ditransfer ke satu aliran, aliran terpisah tidak dibuat untuk setiap file (yang menyebabkan masalah ketika mentransfer sejumlah besar file kecil di utilitas lain).

Dalam artikel ini, kami akan mempertimbangkan kasus penggunaan. rsync untuk menyinkronkan dan menyalin direktori dan file, dan memberikan contoh pengaturan lanjutannya.

Konten:

  • Instalasi dan opsi rsync dasar
  • Rsync: copy / sinkronisasi direktori lokal
  • Rsync: konfigurasikan sinkronisasi dengan server jauh
  • Contoh lain menggunakan rsync
  • Cadangkan di Linux dengan rsync

Instalasi dan opsi rsync dasar

Instalasi rsync tidak berbeda dengan instalasi, paket lainnya. Pada CentOS, paket rsync hadir di repositori dasar dan diinstal melalui yum (atau dnf pada CentOS 8):

# yum install rsync -y

Sintaks perintahnya adalah sebagai berikut:

# opsi penerima sumber rsync

Sebagai sumber dan penerima, Anda dapat menentukan direktori lokal atau jauh di server lain.

Opsi:

  • -v - tampilkan informasi terperinci tentang proses
  • -c - periksa file checksum
  • -q - informasi minimum
  • -a - mode pengarsipan
  • -R - jalur relatif
  • -y - jangan menimpa file yang lebih baru
  • -b - cadangan
  • -l - salin symlink
  • -L - salin isi tautan
  • -H - salin tautan keras
  • -g - simpan grup
  • -p - menyimpan izin untuk file
  • -t - menghemat waktu modifikasi
  • -x - hanya bekerja di FS ini
  • -e - gunakan protokol transport yang berbeda (mis. ssh)
  • -z - kompres file sebelum mentransfer
  • -hapus - hapus file yang tidak ada dalam sumber
  • -mengecualikan - mengecualikan file
  • -rekursif - beralihlah ke direktori secara rekursif
  • -no-recursive - nonaktifkan rekursi
  • -progres - menampilkan progres transfer file
  • -statistik transmisi tayangan
  • -max-size - ukuran file maksimum untuk transfer
  • -bwlimit - batas kecepatan untuk transfer file
  • -versi - versi utilitas

Rsync: copy / sinkronisasi direktori lokal

Rsync dapat digunakan untuk menyalin file antara direktori server lokal. Jika Anda perlu menyalin file dari satu direktori ke direktori lain, jalankan perintah:

# rsync /var/www/html/package.zip / var / www / tmp /

Dalam hal ini, file package.zip disalin ke direktori / var / www / tmp /.

Anda dapat menambahkan beberapa opsi untuk menyalin. Misalnya, untuk mengkompres file sebelum disalin, menampilkan informasi terperinci dan kemajuan penyalinan file, lakukan:

# rsync -vz --progress /var/www/html/package.zip / var / www / tmp /

Anda dapat menggunakan rsync untuk menyinkronkan konten direktori lokal. Sebagai contoh, rsync nyaman digunakan ketika Anda perlu menyalin file dari direktori kerja ke repositori yang dipasang pada beberapa partisi. Beberapa contoh perintah:

# rsync -zvr / var / www / situs / backup /

Kami menyalin direktori / var / www / situs ke direktori cadangan, opsi -r diperbolehkan menyalin semua direktori dan file bersarang secara rekursif.

Untuk menyimpan semua atribut file saat menyalin, misalnya, tanggal modifikasi dan tanggal file dibuat, tambahkan kunci -a:

# rsync -zvra / var / www / situs / backup /

Jika Anda hanya ingin menyalin file yang dimodifikasi, tambahkan opsi -c:

# rsync -zvrac / var / www / situs / backup /

Saya hanya mengubah satu file dan menjalankan perintah. Akibatnya, hanya file yang dimodifikasi yang disalin ke direktori tujuan..

Sangat mudah untuk menggunakan opsi ini jika file tidak sering berubah. Dengan demikian, Anda menghemat waktu dalam menyalin / menyinkronkan direktori.

Agar tidak mengacaukan direktori cadangan, Anda dapat menambahkan opsi -hapus, ini akan memungkinkan Anda untuk membandingkan file dengan sumber dan jika file ada di direktori target dan tidak adanya di direktori sumber, hapus secara otomatis. Tapi saya mendesak Anda untuk menggunakan opsi ini dengan hati-hati, karena jika Anda mengkonfigurasi direktori yang akan disalin ke mahkota, jika terjadi kegagalan atau gangguan dari luar ke direktori kerja, diikuti dengan penghapusan file yang bekerja, Anda juga akan mendapatkan informasi dalam cadangan yang tidak akan memungkinkan Anda untuk mengembalikan data Anda . Contoh:

# rsync -zvrac --delete / var / www / situs / backup /

Rsync: konfigurasikan sinkronisasi dengan server jauh

Paling sering menyalin / menyinkronkan rsync dengan server jauh digunakan untuk cadangan atau menyinkronkan konfigurasi node cluster. Anda dapat secara otomatis menyinkronkan data dari server produksi ke yang cadangan, dan jika ada masalah di utara yang produktif, dengan cepat mentransfer semuanya ke cadangan. Ini adalah opsi yang cukup nyaman dan mudah dikonfigurasi..

Dalam versi modern rsync, protokol SSH digunakan untuk mentransfer file secara default. Namun, Anda dapat menggunakan daemon rsyncd juga. Untuk melakukan ini, klien rsync harus diinstal pada komputer jarak jauh, dan daemonnya ditambahkan ke startup:

# Systemctl aktifkan rsyncd

File konfigurasi rsync adalah /etc/rsyncd.conf. Dalam file ini, Anda dapat mengonfigurasi pengaturan rsync dan pengaturan untuk sinkronisasi sumber daya yang berbeda.

Untuk menyinkronkan melalui daemon rsync, alamat server jauh ditetapkan sebagai rsync: //. Sebagai contoh:

# rsync -av /var/www/site/package.zip rsync: //192.168.1.32/backup

Untuk menyalin file ke server jauh, gunakan perintah:

# rsync -az /var/www/site/package.zip root @ IP: / backup /

Di mana IP adalah alamat server jarak jauh. Setelah menjalankan perintah, server jarak jauh akan meminta kata sandi pengguna (jika otentikasi kata sandi diaktifkan). Untuk otorisasi otomatis, Anda perlu mengonfigurasi kunci SSH.

Salin direktori dari server lokal ke remote:

# rsync -zvra / var / www / root situs @ IP: / backup /

Artinya, semuanya sama dengan direktori lokal, hanya kami yang menentukan alamat server jarak jauh.

Anda juga dapat menyinkronkan file dari server jauh ke yang lokal, perintah untuk ini akan sedikit berubah:

# rsync -zvra root @ IP: / backup / / backup

Untuk memaksa penggunaan protokol SSH untuk menyalin file, tentukan ini dalam perintah Anda (opsi -e digunakan untuk memilih protokol transport untuk menyalin file):

# rsync -zvrae ssh root @ IP: / backup / / backup

Jika server SSH jauh memiliki port selain yang standar, Anda juga dapat menentukannya:

# rsync -zvrae "ssh -p 2222" root @ IP: / backup / / backup

Contoh lain menggunakan rsync

Jika Anda mengirimkan banyak informasi dalam kerangka sesi sinkronisasi dan penting untuk membatasi kecepatan transmisi, atur ini dengan opsi tambahan -bwlimit (tunjukkan kecepatan dalam KB / s):

# rsync -zvra --bwlimit = 100 / var / www / root situs @ IP: / backup /

Saat mentransfer file ke server jarak jauh, Anda dapat membatasi ukuran maksimum file yang akan disalin. Misalnya, Anda ingin menyalin semua file kecuali file yang lebih besar dari 1 MB:

# rsync -zvra --max-size = '1m' / var / www / root situs @ IP: / backup /

Jika Anda memerlukan sinkronisasi satu arah di server Anda dan setelah mentransfer file ke server jauh Anda perlu menghapus file dari server sumber, gunakan opsi --hapus-sumber-file:

# rsync -zvra --remove-source-files --progress /var/www/site/package.zip root @ IP: / backup /

Setelah menjalankan perintah, file tersebut disalin ke server jauh dan dihapus pada sumbernya:

Pilihan juga sangat nyaman -termasuk dan -tidak termasuk, menggunakan opsi ini, Anda dapat membuat pengecualian untuk menyalin direktori atau file:

# rsync -zvra --exclude = administrator / / var / www / root situs @ IP: / backup /

Dalam hal ini, kami mengecualikan direktori "administrator" ketika menyalin ke server jauh.

# rsync -zvra --include = '*. php' --exclude = '*' / var / www / situs / administrator / root @ IP: / backup /

Dengan menambahkan opsi -termasuk kami dapat mengatur filter berdasarkan file, kami hanya menyalin file dengan ekstensi php.

Cadangkan di Linux dengan rsync

Di budak saya, saya menggunakan bagian rsync untuk tugas pencadangan otomatis di Linux. Anda dapat menulis skrip bash sederhana atau hanya menambahkan perintah rsync ke cron dan mengeksekusi sesuai jadwal.

Misalnya, Anda bisa menambahkan perintah ke cron:

01 30 * * * rsync -zvra root @ IP: / backup / / backup

Akibatnya, setiap hari pada 1-30 malam, direktori server lokal dan jarak jauh akan disinkronkan.

Perlu dipertimbangkan untuk menjalankan perintah rsync pada server jauh melalui cron, disarankan untuk mengkonfigurasi otentikasi server menggunakan kunci SSH. Contoh skrip untuk cadangan, kami berikan dalam artikel "Skrip untuk file cadangan dari Linux ke cloud", rsync digunakan di sana untuk menyalin file ke penyimpanan cloud yang terhubung.