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.
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 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
Outputfile1 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.
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
Outputsending 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
Outputsending 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.
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.
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
Outputsending 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
Outputsending 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
Outputsending 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
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.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!