GNU/Linux >> Belajar Linux >  >> Linux

5 tips rsync tingkat lanjut untuk sysadmin Linux

Dalam artikel sebelumnya yang berjudul Alat Sysadmin:Menggunakan rsync untuk mengelola pencadangan, pemulihan, dan sinkronisasi file, saya membahas cp dan sftp , dan melihat dasar-dasar rsync untuk memindahkan file di sekitar. Ada juga beberapa artikel bagus lainnya di sini tentang Aktifkan Sysadmin di tar dan SSH yang harus Anda baca. Menyalin file ke dan dari sistem jarak jauh dan memiliki cara mudah untuk menjalankan pencadangan dari sesuatu yang sedang Anda kerjakan (atau, dalam hal ini, data perusahaan yang penting) adalah alat dasar dan berguna di kotak alat sysadmin yang saya gunakan berulang kali. Namun, terkadang Anda mungkin ingin melakukan sesuatu yang sedikit lebih canggih, seperti memindahkan data melalui tautan yang kurang tepercaya atau lebih lambat. Rsync dapat menyediakan enkripsi untuk melindunginya saat transit, kompresi untuk membuatnya mengalir lebih baik, dan checksum untuk memastikan Anda mendapatkan apa yang Anda harapkan.

[ Pembaca juga menyukai: Cara menyalin file dengan aman antara host Linux menggunakan SCP dan SFTP ]

Menjaga situs web

Saya pertama kali mulai menggunakan rsync untuk menyinkronkan versi lokal dari situs web yang saya kelola di zaman kegelapan ketika CI/CD hanya sekejap di mata ayahnya. Saya dapat menyimpan salinan lokal untuk dikerjakan dan juga memiliki cadangan situs versi terbaru. Saya akan menggunakan skenario itu sebagai contoh saya. Anda dapat menggunakan rsync untuk menyinkronkan sistem file jarak jauh apa pun untuk pencadangan atau sebagai cara cepat untuk membuat jalur uji-ke-produksi. Saya juga menggunakannya untuk menyinkronkan direktori dan kemudian menggunakan tar untuk membuat cadangan lokal:

skipworthy  ~  enable  websync  ls -al
total 8
drwxrwxr-x 2 skipworthy skipworthy 4096 Dec 16 13:57 .
drwxrwxr-x 5 skipworthy skipworthy 4096 Dec 16 14:01 ..
 skipworthy  ~  enable  websync  rsync -aruv 192.168.11.111:/usr/share/httpd/enable ./
receiving incremental file list
enable/
enable/bar
enable/foo
enable/index

sent 85 bytes  received 229 bytes  209.33 bytes/sec
total size is 0  speedup is 0.00
skipworthy  ~  enable  websync  ls -l
total 4
dr-xr-xr-x 2 skipworthy skipworthy 4096 Dec 16 13:49 enable

Seperti sebelumnya dengan rsync local lokal , kami menjalankan dalam mode arsip, mempertahankan mtime dan atribut file, berulang menjadi subdirektori, dan hanya memperbarui data yang baru atau diubah.

Catatan :-v hampir selalu berarti verbose , mengirimkan output ke konsol.

Jadi, katakanlah saya ingin menambahkan halaman ke situs dan mengunggahnya:

skipworthy  ~  enable  websync  rsync -aruv ./* 192.168.11.111:/usr/share/httpd/enable
sending incremental file list
pagetwo
rsync: recv_generator: mkdir "/usr/share/httpd/enable/enable" failed: Permission denied (13)

Ini saat yang tepat untuk mencatat bahwa ada beberapa hal yang perlu Anda pikirkan saat menggunakan rsync untuk mendorong file. Rsync memerlukan izin ke seluruh pohon direktori, bukan hanya direktori tujuan. Ada beberapa cara Anda dapat mencapai ini. Pertama, Anda dapat menentukan uid dan gid dari rsync daemon di /etc/rsyncd.conf . Cara lain adalah dengan menjalankan rsync sebagai pengguna dengan izin yang diperlukan. Kedua hal ini dapat menjadi masalah di lingkungan yang aman, jadi berhati-hatilah di sini.

Juga, perhatikan bahwa secara default, saat Anda menggunakan rsync dari jarak jauh, Anda terhubung langsung ke rsync layanan pada port 873 . Anda perlu memikirkannya saat menyiapkan aturan dan izin firewall. Selain itu, ada izin SELinux, yang merupakan diskusi lain dan tidak termasuk dalam cakupan artikel ini. Salah satu solusi untuk masalah izin direktori dan masalah keamanan, secara umum, adalah dengan menggunakan SSH (ini seharusnya terdengar akrab sekarang). SSH menyiapkan terowongan terenkripsi dan dapat diatur untuk mendengarkan di port mana pun, belum lagi Anda dapat menentukan kunci SSH untuk lebih mengamankan koneksi dan membuat koneksi jarak jauh sedikit lebih ramah otomatisasi.

Fitur lanjutan

Untuk contoh berikutnya, saya akan mendorong perubahan ini sebagai root. Tolong jangan seperti saya:

rsync -aruv -e ssh  ./* [email protected]:/usr/share/httpd/enable
[email protected]'s password:
sending incremental file list
pagetwo

sent 246 bytes  received 36 bytes  43.38 bytes/sec
total size is 31  speedup is 0.11

Perhatikan lagi bahwa opsi SSH biasa tersedia untuk koneksi, termasuk menentukan port dan lokasi kunci. Rsync juga memungkinkan Anda untuk memilih opsi shell jarak jauh, selama itu diinstal di kedua ujungnya dan dikonfigurasi di .ssh/config .

Checksum

Saya menyebutkan checksum sebelumnya, dan ada dua hal yang berpotensi berguna di sini. Pertama, rsync menjalankan checksum secara default dan kemudian memverifikasinya pada target, yang akan memperingatkan Anda jika ada kemungkinan data hilang atau rusak dalam penerbangan.

Kedua, Anda juga dapat menggunakan checksum untuk menentukan file mana yang akan ditransfer (yaitu, file mana yang sebenarnya berbeda antara sumber dan tujuan), yang berguna jika Anda tidak yakin apakah mtime /waktu mewakili versi sebenarnya dari file yang Anda inginkan. Saya memiliki sistem file yang saya coba sinkronkan yang disentuh oleh aplikasi lain, jadi waktunya salah.

skipworthy  ~  enable  websync  rsync -aruv -e ssh --checksum 192.168.11.111:/usr/share/httpd/enable ./
receiving incremental file list

sent 26 bytes  received 364 bytes  780.00 bytes/sec

Catatan :Ini menimbulkan beberapa overhead tambahan dalam pemrosesan dan transfer karena checksum dibuat untuk setiap file di setiap sisi dan kemudian dibandingkan.

Kompresi

Satu lagi trik yang berguna adalah kompresi. -z opsi akan memampatkan aliran, --zc menyetel jenis kompresi, dan --zl setel level:

skipworthy  ~  enable  websync  rsync -aruv -e ssh --zc=zlib --zl=6 192.168.11.111:/usr/share/httpd/enable ./
receiving incremental file list

sent 26 bytes  received 248 bytes  548.00 bytes/sec
total size is 31  speedup is 0.11

Jika Anda tidak menentukan jenis atau levelnya, rsync menggunakan daftar yang disediakan di RSYNC_COMPRESS_LIST variabel lingkungan untuk dinegosiasikan untuk jenis dan tingkat kompresi yang umum.

[ Mencari lebih banyak tentang otomatisasi sistem? Mulailah dengan The Automated Enterprise, buku gratis dari Red Hat. ] 

Menutup

Jadi begitulah:rsync adalah salah satu alat yang masih berguna dan relevan dengan administrasi sistem Linux—alat yang saya senang miliki berkali-kali dalam karier saya. Ada banyak, banyak lagi hal yang dapat Anda lakukan dengannya yang tidak dapat kami jelajahi di sini—seperti biasa, periksa halaman manual!


Linux
  1. Kiat Linux untuk menggunakan cron untuk menjadwalkan tugas

  2. Cara menggunakan rsync lanjutan untuk cadangan Linux besar

  3. 80 Alat Pemantauan Linux untuk SysAdmins

  1. 3 tips untuk mencetak dengan Linux

  2. 8 tips untuk baris perintah Linux

  3. Audacious – Pemutar Audio Tingkat Lanjut untuk Linux

  1. 8 tips untuk otomatisasi sistem Linux yang andal

  2. 3 tips ulasan diri yang solid untuk sysadmin

  3. Menulis aplikasi Python, membangun lab Linux, dan tips lainnya untuk sysadmin