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!