URL: https://www.progressiverobot.com/how-to-use-rsync-to-sync-local-and-remote-directories-id/

Pengantar

*Rsync*, yang merupakan singkatan dari "remote sync", adalah alat sinkronisasi berkas jarak jauh dan lokal. Alat ini menggunakan algoritma yang meminimalkan jumlah data yang disalin dengan hanya memindahkan bagian berkas yang berubah.

Dalam panduan ini, kita akan membahas penggunaan dasar utilitas andal ini.

Apa Yang Dimaksud Rsync?

rsync illustration for: Apa Yang Dimaksud Rsync?

Rsync adalah alat sinkronisasi berkemampuan jaringan yang sangat fleksibel. Karena ketersediaannya di sistem Linux dan sistem semacam Unix serta popularitasnya sebagai alat untuk skrip sistem, alat ini disertakan di hampir semua distribusi Linux secara asali.

Sintaks Dasar

Sintaks dasar rsync sangat sederhana dan beroperasi dalam cara yang mirip ssh, scp, dan cp.

Kita akan membuat dua direktori pengujian dan beberapa berkas pengujian dengan perintah berikut:

				
					
cd ~

mkdir dir1

mkdir dir2

touch dir1/file{1..100}

				
			

Kini kita memiliki direktori bernama dir1 dengan 100 berkas kosong di dalamnya.

				
					
ls dir1

				
			
				
					
[secondary_label Output]

file1    file18  file27  file36  file45  file54  file63  file72  file81  file90

file10   file19  file28  file37  file46  file55  file64  file73  file82  file91

file100  file2   file29  file38  file47  file56  file65  file74  file83  file92

file11   file20  file3   file39  file48  file57  file66  file75  file84  file93

file12   file21  file30  file4   file49  file58  file67  file76  file85  file94

file13   file22  file31  file40  file5   file59  file68  file77  file86  file95

file14   file23  file32  file41  file50  file6   file69  file78  file87  file96

file15   file24  file33  file42  file51  file60  file7   file79  file88  file97

file16   file25  file34  file43  file52  file61  file70  file8   file89  file98

file17   file26  file35  file44  file53  file62  file71  file80  file9   file99

				
			

Kita juga memiliki direktori kosong bernama dir2.

Untuk menyinkronkan isi dir1 ke dir2 di sistem yang sama, ketikkan:

				
					
rsync -r dir1/ dir2

				
			

Opsi -r berarti rekursif, yang diperlukan untuk sinkronisasi direktori.

Kita juga dapat menggunakan bendera -a sebagai gantinya:

				
					
rsync -a dir1/ dir2

				
			

Opsi -a adalah bendera kombinasi. Ini adalah singkatan dari "archive" yang secara rekursif menyinkronkan dan mempertahankan tautan simbolis, berkas khusus dan berkas perangkat, waktu modifikasi, grup, pemilik, dan izin. Ini lebih umum digunakan daripada -r dan biasanya inilah yang ingin Anda gunakan.

Catatan Penting

Anda mungkin telah memperhatikan bahwa ada garis miring (/) di akhir argumen pertama dalam perintah di atas:

				
					
rsync -a dir1<^>/<^> dir2

				
			

Ini berarti "isi dari dir1". Alternatifnya, tanpa garis miring, adalah menempatkan dir1 termasuk direktorinya dalam dir2. Ini akan menghasilkan hierarki yang terlihat seperti berikut:

				
					
~/dir2/dir1/[files]

				
			

Selalu periksa kembali argumen Anda sebelum mengeksekusi perintah rsync. Rsync menyediakan metode untuk melakukannya dengan memberikan opsi -n atau --dry-run. Bendera -v (singkatan dari verbose) juga diperlukan untuk mendapatkan keluaran yang sesuai:

				
					
rsync -anv dir1/ dir2

				
			
				
					
[secondary_label Output]

sending incremental file list

./

file1

file10

file100

file11

file12

file13

file14

file15

file16

file17

file18

. . .

				
			

Bandingkan keluaran ini dengan keluaran yang kita dapatkan bila menghapus garis miring di belakang:

				
					
rsync -anv dir1 dir2

				
			
				
					
[secondary_label Output]

sending incremental file list

dir1/

dir1/file1

dir1/file10

dir1/file100

dir1/file11

dir1/file12

dir1/file13

dir1/file14

dir1/file15

dir1/file16

dir1/file17

dir1/file18

. . .

				
			

Anda dapat melihat di sini bahwa direktori itu telah ditransfer.

Cara Menggunakan Rsync untuk Menyinkronkan dengan Sistem Jauh

Menyinkronkan ke sistem jauh adalah masalah sepele jika Anda memiliki akses SSH ke mesin jauh dan rsync yang terinstal di kedua mesin. Setelah akses SSH diverifikasi di antara kedua mesin, Anda dapat menyinkronkan folder dir1 dari folder sebelumnya ke komputer jauh menggunakan sintaks ini (perhatikan bahwa dalam hal ini, kita _ingin_ mentransfer direktori sebenarnya, jadi kita meniadakan garis miring):

				
					
rsync -a ~/dir1 <^>username<^>@<^>remote_host<^>:<^>destination_directory<^>

				
			

Ini disebut operasi "push" karena mendorong direktori dari sistem lokal ke sistem jauh. Operasi lawannya adalah "pull"(tarik). Operasi ini digunakan untuk menyinkronkan direktori jauh ke sistem lokal. Jika dir1 berada di sistem jauh, bukan di sistem lokal kita, sintaksnya menjadi:

				
					
rsync -a <^>username<^>@<^>remote_host<^>:<^>/home/username/dir1<^> <^>place_to_sync_on_local_machine<^>

				
			

Seperti cp dan alat serupa, sumber selalu menjadi argumen pertama, dan tujuannya selalu menjadi yang kedua.

Opsi Berguna untuk Rsync

Rsync menyediakan banyak opsi untuk mengubah perilaku asali utilitas. Kita sudah membahas beberapa bendera yang lebih diperlukan.

Jika Anda mentransfer berkas yang belum dikompresi, seperti berkas teks, Anda dapat mengurangi transfer jaringan yang menambahkan kompresi dengan opsi -z:

				
					
rsync -az <^>source<^> <^>destination<^>

				
			

Bendera -P akan sangat berguna. Ini menggabungkan bendera --progress dan --partial. Bendera pertama menunjukkan bilah progres transfer dan bendera kedua memungkinkan Anda melanjutkan transfer yang terhenti:

				
					
rsync -azP <^>source<^> <^>destination<^>

				
			
				
					
[secondary_label Output]

sending incremental file list

./

file1

           0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=99/101)

file10

           0 100%    0.00kB/s    0:00:00 (xfer#2, to-check=98/101)

file100

           0 100%    0.00kB/s    0:00:00 (xfer#3, to-check=97/101)

file11

           0 100%    0.00kB/s    0:00:00 (xfer#4, to-check=96/101)

. . .

				
			

Jika menjalankan lagi perintah ini, kita akan mendapatkan keluaran yang lebih pendek, karena tidak ada perubahan yang dibuat. Ini menggambarkan kemampuan rsync untuk menggunakan waktu modifikasi dalam menentukan keberadaan perubahan yang dibuat.

				
					
rsync -azP <^>source<^> <^>destination<^>

				
			
				
					
[secondary_label Output]

sending incremental file list

sent 818 bytes received 12 bytes 1660.00 bytes/sec

total size is 0 speedup is 0.00

				
			

Kita dapat memperbarui waktu modifikasi di beberapa berkas dan melihat bahwa rsync secara cerdas hanya menyalin kembali berkas yang diubah:

				
					
touch dir1/file{1..10}

rsync -azP <^>source<^> <^>destination<^>

				
			
				
					
[secondary_label Output]

sending incremental file list

file1

            0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=99/101)

file10

            0 100%    0.00kB/s    0:00:00 (xfer#2, to-check=98/101)

file2

            0 100%    0.00kB/s    0:00:00 (xfer#3, to-check=87/101)

file3

            0 100%    0.00kB/s    0:00:00 (xfer#4, to-check=76/101)

. . .

				
			

Agar kedua direktori tetap sinkron, kita perlu menghapus berkas dari direktori tujuan jika telah dihapus dari sumber. Secara asali, rsync tidak menghapus apa pun dari direktori tujuan.

Kita dapat mengubah perilaku ini dengan opsi --delete. Sebelum menggunakan opsi ini, gunakan opsi --dry-run dan lakukan pengujian untuk mencegah kehilangan data:

				
					
rsync -a --delete <^>source<^> <^>destination<^>

				
			

Jika Anda ingin mengecualikan berkas atau direktori tertentu yang berada di dalam direktori yang akan disinkronkan, Anda dapat melakukannya dengan memasukkannya dalam daftar yang dipisah koma setelah opsi --exclude=:

				
					
rsync -a --exclude=<^>pattern_to_exclude<^> <^>source<^> <^>destination<^>

				
			

Jika telah menentukan pola untuk mengecualikan, kita dapat mengesampingkan pengecualian untuk berkas yang cocok dengan pola berbeda menggunakan opsi --include=.

				
					
rsync -a --exclude=<^>pattern_to_exclude<^> --include=<^>pattern_to_include<^> <^>source<^> <^>destination<^>

				
			

Terakhir, opsi --backup rsync dapat digunakan untuk menyimpan cadangan berkas penting. Ini digunakan bersama opsi --backup-dir, yang menentukan direktori tempat menyimpan berkas cadangan.

				
					
rsync -a --delete --backup --backup-dir=<^>/path/to/backups<^> <^>/path/to/source<^> <^>destination<^>

				
			

Kesimpulan

Rsync dapat menyederhanakan transfer berkas melalui koneksi jaringan dan menambahkan fleksibilitas pada sinkronisasi direktori lokal. Fleksibilitas rsync membuatnya menjadi opsi yang tepat untuk banyak operasi dengan tingkat berkas yang berbeda.

Penguasaan rsync memungkinkan Anda merancang operasi pencadangan yang kompleks dan memperoleh kontrol mendetail atas apa yang ditransfer serta caranya.