GNU/Linux >> Belajar Linux >  >> Linux

Menjaga file dan direktori Linux tetap sinkron dengan rsync

Admin (atau pengguna biasa) sering kali perlu mencadangkan file atau menyinkronkannya di antara banyak tempat (termasuk lokal dan jarak jauh) tanpa mentransfer dan menimpa semua file pada target setiap saat. Salah satu alat yang paling berguna di sabuk sysadmin untuk tugas semacam ini adalah rsync .

rsync alat dapat menavigasi struktur direktori secara rekursif dan memperbarui lokasi kedua dengan file baru/yang diubah/dihapus. Ini memeriksa untuk melihat apakah ada file di tujuan sebelum mengirimnya, menghemat bandwidth dan waktu untuk semua yang dilewatinya. Juga, rsync menyediakan kemampuan untuk menyinkronkan struktur direktori (atau bahkan satu file) dengan tujuan lain, lokal atau jauh. Untuk mencapai ini secara efisien, secara default, ia akan memeriksa waktu modifikasi file. Itu juga dapat melakukan pemeriksaan hash cepat file pada sumber dan tujuan untuk menentukan apakah perlu mentransfer salinan baru atau tidak, mungkin menghemat waktu dan bandwidth yang signifikan.

[ Anda mungkin juga menyukai: 5 tips rsync lanjutan untuk sysadmin Linux ]

Karena ia dikemas dengan sebagian besar distribusi Linux secara default, seharusnya mudah untuk memulai. Hal ini juga terjadi pada macOS, *BSD, dan sistem operasi mirip Unix lainnya. Bekerja dengan rsync mudah dan dapat digunakan pada baris perintah, dalam skrip, dan beberapa alat membungkusnya dalam UI yang bagus untuk mengelola tugas.

Pada baris perintah, rsync umumnya dipanggil menggunakan beberapa parameter untuk menentukan perilakunya karena ini adalah alat yang fleksibel. Dalam bentuknya yang paling sederhana, rsync dapat diberitahu untuk memastikan bahwa file di satu lokasi harus sama di lokasi kedua dalam sistem file.

Contoh:

# rsync file1.txt file2.txt

Biasanya diinginkan untuk melewati rsync beberapa parameter untuk memastikan segala sesuatunya berperilaku seperti yang diharapkan manusia. Melewati parameter seperti -a untuk "arsip" cukup umum karena merupakan "meta-parameter" yang secara otomatis memanggil beberapa orang lain untuk Anda. -a setara dengan -rlptgoD , yang dipecah menjadi:

  • -r :Berulang melalui direktori (sebagai lawan hanya bekerja pada file di direktori saat ini)
  • -l :Salin symlink sebagai symlink baru
  • -p :Pertahankan izin
  • -t :Pertahankan waktu modifikasi
  • -g :Mempertahankan kepemilikan grup
  • -o :Pertahankan kepemilikan pengguna (yang dibatasi hanya untuk pengguna super saat menangani file pengguna lain)
  • -D :Menyalin file perangkat

Seringkali ini berfungsi sesuai keinginan pengguna dan tidak diperlukan perubahan signifikan. Namun, beberapa di antaranya mungkin bertentangan dengan apa yang dibutuhkan pengguna, jadi memecahnya menjadi fungsi tertentu mungkin menjadi jawaban yang tepat.

Opsi penting lainnya termasuk:

  • -n :Jalankan perintah tanpa mentransfer file
  • --list-only :Hanya tampilkan daftar file yang rsync akan mentransfer
  • -P :Menampilkan kemajuan per file
  • -v :Menampilkan kemajuan secara keseluruhan, mengeluarkan informasi tentang setiap file saat selesai
  • -u :Lewati pembaruan file target jika lebih baru dari sumbernya
  • -q :Mode senyap. Berguna untuk dimasukkan dalam skrip ketika keluaran terminal tidak diperlukan
  • -c :Gunakan nilai checksum untuk menentukan file mana yang akan dilewati, bukan waktu dan ukuran modifikasi
  • --existing :Hanya perbarui file, tetapi jangan buat file baru yang hilang
  • --files-from=FILE :Membaca daftar file sumber dari file teks
  • --exclude=PATTERN :Gunakan POLA untuk mengecualikan file dari sinkronisasi
  • --exclude-from=FILE :Sama seperti di atas, tetapi membaca dari file
  • --include=PATTERN :Juga digunakan untuk meniadakan aturan pengecualian
  • --include-from=FILE :Sama seperti di atas, tetapi membaca dari file

Kumpulan parameter default pribadi saya untuk rsync akhirnya menjadi -avuP (arsipkan, keluaran verbose, perbarui hanya file baru, dan tunjukkan kemajuan pekerjaan yang sedang dilakukan).

Sumber dan target

Sumber dan target untuk sinkronisasi adalah file dan direktori. Juga, rsync menyediakan fungsionalitas untuk berinteraksi dengan sistem jarak jauh melalui SSH, yang membuat pengguna tidak perlu mengatur pembagian jaringan agar dapat menyinkronkan file dari satu tempat ke tempat lain. Ini berarti Anda dapat dengan mudah membuat skrip rsync pekerjaan setelah mengonfigurasi kunci SSH di kedua ujungnya, menghilangkan kebutuhan untuk masuk secara manual untuk sinkronisasi file jarak jauh.

Contoh:

Merinci sintaks di sini:

  • Menjalankan rsync perintah
  • Dengan -avuP parameter yang dijelaskan di atas
  • Untuk menyalin direktori Dokumen lokal
  • Menggunakan steve sebagai pengguna di sistem jarak jauh
  • Di mana sistem jarak jauh disebut server file dan bisa dihubungi dengan nama itu
  • Dan jalur relatif dari rumah steve ditampilkan setelah : - dan dalam hal ini, itu berarti meletakkan ini di direktori home steve itu sendiri

Ini menyalin semuanya dari folder Dokumen steve ke direktori Dokumen pada sistem jarak jauh, hanya memperbarui file yang telah berubah atau baru. Menjalankan ini sekali sudah cukup (sampai ada perubahan baru). Menjalankannya lagi segera setelah itu akan menghasilkan jumlah output yang relatif sama tetapi jauh lebih cepat karena melewatkan semua file.

[ Panduan pemilik API:7 praktik terbaik program API yang efektif ] 

Menutup

Ada banyak cara berguna untuk memanfaatkan kekuatan rsync . Ini sering kali sesederhana menjalankannya dari baris perintah secara satu kali untuk menyalin sekumpulan file tanpa khawatir membuang waktu menyalin hal-hal yang sudah ada di tujuan. Membuat skrip ini, menambahkannya ke cron pekerjaan, dan bereksperimen dengan parameter yang berbeda membantu mencapai lebih banyak tujuan untuk rata-rata sysadmin.


Linux
  1. Cara Zip File dan Direktori di Linux (dengan Contoh)

  2. Temukan file dan direktori terbesar di Linux

  3. Linux – Direktori Standar Dan/atau Umum Pada OS Unix/linux?

  1. Menyinkronkan Direktori Di Kedua Arah Dengan Rsync?

  2. Linux Hapus File dan Direktori

  3. Cara Mentransfer File di Linux dengan SCP dan Rsync

  1. Temukan file dan direktori di Linux dengan perintah find

  2. Temukan File dan Direktori di Linux Seperti Profesional

  3. Salin file dengan SCP dan Rsync