GNU/Linux >> Belajar Linux >  >> Linux

Contoh Praktis Perintah rsync di Linux

Rsync (Remote Sync) adalah alat sinkronisasi untuk menyalin file dan direktori dalam suatu sistem atau antar sistem. Satu-satunya keuntungan terbesar dari rsync adalah ia hanya menyalin file yang diubah dan dengan demikian mengurangi konsumsi CPU dan menghemat bandwidth dan waktu saat menyalin file.

Kelebihan rsync daripada scp

Saya sudah menunjukkan beberapa contoh praktis dari perintah scp. scp, kependekan dari secure copy, juga digunakan untuk menyalin file antara dua sistem jarak jauh melalui ssh.

Tetapi rsync memiliki keunggulan tertentu dibandingkan scp yang menjadikannya pilihan yang lebih baik.

  • rsync hanya menyalin file yang diubah sementara scp menyalin setiap file dan menimpanya jika diperlukan. Jadi kecepatan yang lebih baik dijamin di rsync.
  • rsync juga dapat bekerja tanpa enkripsi. Hal ini dapat mengurangi overhead. Namun ini harus dipertimbangkan jika tidak ada risiko keamanan saat mentransfer tanpa enkripsi.
  • Seseorang dapat melanjutkan transfer yang tidak lengkap di rsync sementara scp tidak mengizinkannya.

Jika Anda tidak memiliki rsync diinstal, Anda dapat menginstalnya menggunakan manajer paket Anda.

Di Ubuntu dan Debian, Anda dapat menginstal rsync dengan perintah berikut.

sudo apt install rsync

Contoh praktis perintah rsync di Linux

rsync perintah memiliki struktur berikut

rsync [OPTIONS] Source Destination

Di mana sumber dan tujuan dapat berupa jalur lokal atau jalur jarak jauh dalam format [email protected]:path/to/file

Mari kita lihat cara menggunakan perintah rsync dengan beberapa contoh yang bermanfaat.

️Jika Anda memiliki direktori A, gunakan "A" untuk menyebutkannya bukan "A/". Menggunakan A/ akan merujuk ke semua file di direktori A dan bukan direktori A itu sendiri. Jadi menyalin A akan membuat direktori baru di tujuan dan kemudian menyalin file di A. Tapi menyalin A/ hanya akan menyalin file di A ke tujuan.

1. Sinkronkan File Lokal [Sinkronisasi Satu Arah]

Untuk menyalin file lokal dari direktori A ke Backup-A-dir ,

rsync A/ Backup-A-dir/

Perintah ini menyalin file (jika ditemukan perubahan) dari direktori A ke dalam Backup-A-dir. Ini tidak akan menyalin file tambahan apa pun di Backup-A-dir ke A yang awalnya tidak ada di A. Inilah mengapa disebut sebagai sinkronisasi satu arah.

2. Sinkronkan File Jarak Jauh [Sinkronisasi Satu Arah]

Untuk menyinkronkan file antara sistem jarak jauh dan sistem lokal, perintahnya serupa. Perhatikan bahwa lokasi sumber dan lokasi tujuan dapat berupa jalur sistem file lokal atau jalur sistem jarak jauh.

rsync dev/build [email protected]:~/Backup

3. Sinkronisasi Dua Arah

Perintah di atas menyalin file dari sumber ke tujuan. Tetapi jika sistem memiliki beberapa file tambahan yang tidak ada di sumbernya, file tersebut tidak akan dihapus oleh Sinkronisasi satu arah. Jika mau, Anda harus menggunakan sinkronisasi dua arah.

Untuk mempertahankan kedua titik akhir (direktori atau file) pada status yang sama dengan file yang sama dan tanpa tambahan di kedua sisi, cukup tambahkan –hapus opsi ke perintah asli.

rsync A/ Backup-A-dir/ --delete

4. Hapus File Sumber Setelah Menyalin

Jika Anda perlu menghapus file di sumber setelah transfer selesai, –remove-source-files opsi ini akan berguna.

rsync A/ Backup-A-dir/ --remove-source-files

Anda harus berhati-hati dengan perintah di atas. Anda harus menghapus sumber hanya jika cukup banyak salinan yang dibuat dan data tidak diperlukan lagi di sumber.

5. Sertakan dan Kecualikan File

Jika Anda perlu (atau tidak perlu) mentransfer file yang namanya cocok dengan suatu pola,
–termasuk dan –kecualikan pilihan dapat digunakan. Setiap opsi harus diberi pola setelah tanda ‘=’.

rsync A/ Backup-A-dir/ --include=*.py --exclude=*.tmp.py

Perintah di atas menyalin semua file dengan ekstensi .py kecuali yang berekstensi .tmp.py.

Anda dapat menggunakan ekspresi reguler sebagai pola. Pelajari lebih lanjut di sini.

Kiat:Jika daftar pola untuk salah satu opsi sangat banyak, Anda dapat menyimpannya dalam file dan Anda dapat meneruskan namanya ke –termasuk-dari dan –kecualikan-dari pilihan.

6. rsync Melalui SSH

Jika Anda ingin mentransfer file melalui SSH, Anda perlu menentukan ssh dengan -e pilihan.

rsync -e ssh A/ [email protected]:~/Backup-A-dir/

Ini adalah cara yang paling disukai untuk mentransfer file ke sistem jarak jauh karena dienkripsi. Satu harus dicatat bahwa akan ada overhead yang terlibat karena enkripsi. Jadi mungkin perlu waktu lebih lama daripada transfer normal.

Agar ini berfungsi, Anda harus mengaktifkan login ssh yang dikonfigurasi di sisi server. Kunci publik dan kunci pribadi juga harus berada di jalurnya masing-masing.

Untuk mempelajari lebih lanjut tentang ssh dan penyiapannya, baca artikel LinuxHandBook ini tentang konfigurasi SSH sisi klien dan konfigurasi SSH sisi server.

7. Mode Verbose

Sebagian besar perintah di Linux memiliki opsi verbose untuk mencatat tindakan perintah di terminal. rsinkronisasi tidak terkecuali.

Lulus salah satu -v opsi atau —verbose pilihan untuk verbose perintah. Ini akan mencantumkan tindakan yang sedang dilakukan dan kemajuannya. Ini akan sangat membantu saat debugging.

rsync A/ Backup-A-dir/ -v -r

Output akan mirip dengan yang di bawah ini

$ rsync A/ Backup-A-dir/ -v -r
sending incremental file list
created directory Backup-A-dir
./
file1.txt
file2.txt
file3.txt
file4.txt
file5.txt
file6.txt
sent 388 bytes received 168 bytes 1,112.00 bytes/sec
total size is 0 speedup is 0.00

8. Lari Kering – Lari Tapi Jangan Salin

Jika Anda ingin mengetahui file yang akan disalin tanpa benar-benar melakukan transfer, Anda dapat menggunakan –dry-run ( atau -n ) pilihan.

Ia melakukan semua operasi seperti rsync biasa perintah tidak kecuali untuk bagian penyalinan. Ini akan mencantumkan file yang akan disalin atau dihapus (jika diperlukan) dan kemudian akan berhenti sebelum menyalin.

rsync -v A/ Backup-A-dir/ --dry-run

Yang akan menghasilkan

$ rsync -v A/ Backup-A-dir/ –dry-run
sending incremental file list
created directory Backup-A-dir
./
file1.txt
file2.txt
file3.txt
file4.txt
file5.txt
file6.txt
sent 172 bytes received 72 bytes 488.00 bytes/sec
total size is 0 speedup is 0.00 (DRY RUN)

Perhatikan bahwa Anda perlu menggunakan -v opsi untuk melihat output di atas dari perintah dry run. Jika tidak, dry run akan terjadi, tetapi tidak akan menampilkan hasilnya.

9. Tampilkan Progres Transfer

Jika Anda ingin menampilkan kemajuan transfer, gunakan –kemajuan pilihan.

rsync A/ Backup-A-dir/ --progress

Perintah di atas akan menampilkan bilah kemajuan yang mirip dengan yang di bawah ini:

$ rsync -r A/ Backup-A-dir/ –progress
sending incremental file list
created directory Backup-A-dir
./
file1.txt 0 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=5/7)
file2.txt 0 100% 0.00kB/s 0:00:00 (xfr#2, to-chk=4/7)
file3.txt 0 100% 0.00kB/s 0:00:00 (xfr#3, to-chk=3/7)
file4.txt 0 100% 0.00kB/s 0:00:00 (xfr#4, to-chk=2/7)
file5.txt 0 100% 0.00kB/s 0:00:00 (xfr#5, to-chk=1/7)
file6.txt 0 100% 0.00kB/s 0:00:00 (xfr#6, to-chk=0/7)

10. Kompres dan Transfer Data

Jika Anda ingin menghemat bandwidth dan waktu jaringan, Anda dapat mengompres data yang akan ditransfer menggunakan -z pilihan. Ini akan didekompresi secara otomatis di tujuan.

Trik ini dapat menghemat banyak waktu dan biaya jaringan ketika data yang akan ditransfer sangat besar. Ini harus dihindari untuk file kecil karena pemrosesan overhead melebihi total waktu.

rsync -z A/ Backup-A-dir/
Perhatikan bahwa seseorang harus menghindari penggunaan -z pilihan saat melakukan transfer lokal dan file kecil. Ini akan memperlambat segalanya secara tidak perlu.

11. Salin File dan Direktori secara rekursif

Semua perintah di atas hanya menyalin file, bukan sub-direktori (kasus yang sama dengan setiap perintah Linux). Akibatnya, file di dalam sub-direktori tersebut tidak disalin. Ini dapat dihilangkan dengan penyalinan rekursif.

Untuk menyalin file dan direktori secara rekursif, -r opsi dapat digunakan.

rsync -r A/ Backup-A-dir/

12. Arsipkan dan Pertahankan metadata

Jika Anda ingin mempertahankan tautan simbolik, stempel waktu, izin file, kepemilikan file oleh pengguna &grup, -a opsi dapat digunakan.

rsync -a A/ Backup-A-dir/

Opsi ini juga mencakup fungsi -r pilihan. Jadi secara rekursif menyalin file dan mempertahankan metadata dari file yang disalin.

13. Setel Batas Ukuran File

Untuk menghindari mentransfer file besar, Anda dapat mengatur batas ukuran file dengan bantuan –max-size pilihan. Ini membantu Anda untuk tetap memeriksa ukuran file yang akan disalin.

rsync --max-size='100K' A/ Backup-A-dir/ 

14. Setel Batas Bandwidth

Jika Anda memiliki kendala pada kecepatan jaringan, Anda dapat menentukannya dengan bantuan –bwlimit pilihan. batas batas harus dinyatakan dalam kbps .

rsync --bwlimit=100 A/ Backup-A-dir/

15. Lanjutkan unduhan dengan rsync

Jika unduhan/transfer tidak lengkap, Anda dapat menggunakan perintah rsync untuk menyimpan unduhan yang belum selesai sehingga transfer dapat dilanjutkan pada waktu berikutnya ketika perintah yang sama dikeluarkan.

Untuk melanjutkan transfer, –tambahkan opsi dapat digunakan.

rsync --append A /Backup-A-dir/

Utas StackExchange ini adalah sumber yang sangat bagus untuk mempelajari lebih lanjut tentang topik ini.

Semua perintah di atas adalah dasar dan menyalin file dalam satu aliran atau proses. Jika ada data 5 TB dan transfer 1 TB memakan waktu 2 jam, seluruh transfer akan berlangsung selama 10 jam. Tapi ada cara lain untuk mempercepat transfer

Kiat Bonus:Mempercepat Rsync / Transfer Paralel

sejajar adalah utilitas GNU digunakan untuk menjalankan pekerjaan secara paralel. Rsync dapat dengan mudah digabungkan dengan rsync .

Instal GNU paralel di sistem Ubuntu/Debian menggunakan

sudo apt install parallel

Sebelum kita melangkah lebih jauh, mari kita pahami cara kerja paralel. Mari kita pertimbangkan sebuah analogi.

Asumsikan ada 1000 telur dan 100 keranjang masing-masing dengan drone. Tugasnya adalah mengirimkannya ke pelanggan. Manajer menugaskan setiap keranjang 10 telur dan memerintahkan drone untuk dikirim. Setiap drone melakukan operasi (dalam kasus kami proses rsync 10 file). Manajer mengawasi semua drone. Perhatikan bahwa drone tidak akan pernah tahu bahwa ada pekerjaan lain yang paralel. Hanya Manajer yang melakukannya.

Demikian pula, rsync mengeksekusi transfer file seperti drone. paralel bertindak sebagai manajer.

paralel membagi file yang akan dikirim dan memunculkan sejumlah proses rsync yang ditentukan masing-masing dengan daftar file yang berbeda. paralel hanya mengelola semua proses. rsync tidak memiliki pengetahuan tentang proses lain secara paralel atau memiliki fungsi transfer paralel. Parallel menyediakan transfer paralel dengan menggabungkan tugas.

Jadi perintah paralel terdiri dari dua bagian yang disalurkan. Salah satunya adalah argumen (telur/file) dan lainnya adalah perintah paralel (manajer).

ls A/* | parallel -j 20 rsync A/{} /Backup-A-dir/

Pada perintah di atas, setiap file/direktori di output sebagai hasil dari perintah pertama sebelum simbol '|' bertindak sebagai argumen. {} mewakili argumen dari kiri dalam perintah paralel.

-j n – Digunakan untuk mengatur n jumlah pekerjaan atau pekerja. Dalam kasus kami, n adalah 20.
bagian selanjutnya adalah perintah rsync biasa untuk setiap argumen.
Setelah perintah dibuat, perintah tersebut akan digabungkan ke dalam 20 proses dan akan dieksekusi secara paralel.

Perhatikan bahwa Anda dapat menambahkan opsi apa pun ke perintah rsync di atas seperti yang akan Anda lakukan tanpa paralel. Cukup tambahkan opsi rsync (seperti -z,-a,-e ssh) setelah kata rsync pada perintah di atas.

Jika Anda ingin memahami lebih lanjut tentang paralel, lihat halaman ini.

Kesalahan Umum dengan rsync

Anda mungkin mengalami kesalahan saat menggunakan rsync. Berikut adalah beberapa yang umum beserta tips pemecahan masalah mereka.

1. izin rsync ditolak

Ini adalah kesalahan yang mungkin terjadi saat Anda menggunakan jalur yang haknya tidak Anda miliki. Contoh:

rsync B/ /home/

Perintah di atas akan menyebabkan kesalahan izin ditolak, jika Anda tidak memiliki izin menulis di /home/ (pengguna biasa biasanya tidak melakukannya)

2. rsync gagal menyetel waktu pada

Ini terjadi ketika sistem file tidak dapat menangani waktu modifikasi untuk file dan direktori. Anda dapat mempelajari lebih lanjut tentang ini di halaman ini.

Saya harap Anda mempelajari beberapa contoh perintah sinkronisasi yang bagus di artikel ini. Jika Anda memiliki saran atau komentar, jangan ragu untuk menuliskannya di bawah.


Linux
  1. 25 Berguna menemukan Contoh Praktis Perintah di Linux

  2. Perintah cp di Linux:7 Contoh Praktis

  3. Perintah Shutdown Linux:5 Contoh Praktis

  1. Contoh Praktis Perintah Unzip di Linux

  2. 5 Contoh Praktis Perintah dd di Linux

  3. 10 Contoh Perintah Linux nm Praktis

  1. Linux Temukan Perintah dengan Contoh Praktis

  2. Perintah lsof di Linux (10 Contoh)

  3. Perintah rsync Linux dengan contoh praktis