
Pada sistem operasi Linux, 'rsync' adalah singkatan dari R emote S ync. Ini adalah utilitas yang digunakan untuk menyinkronkan (menyalin) file dan direktori dari sumber (SRC) ke tujuan (DEST).
File dan direktori dapat disinkronkan pada host lokal atau ke/dari host jarak jauh. Di SRC, file dan direktori akan disinkronkan. Sedangkan, pada DEST, file dan direktori yang disinkronkan akan dilakukan.
Selain itu, perintah rsync dapat menyalin file dan direktori secara rekursif, menyalin tautan simbolik, mempertahankan (izin, grup, waktu modifikasi, dan kepemilikan) identitas file.
Rsync dapat menggunakan dua cara berbeda untuk menyinkronkan/menyalin file atau direktori:
- Gunakan shell jarak jauh:ssh atau rsh
- Gunakan daemon rsync secara langsung melalui TCP
Terlebih lagi, rsync menggunakan algoritme transfer delta yang hanya menyalin/mensinkronkan data yang berbeda antara SRC dan DEST.
Tutorial ini akan membahas banyak cara untuk menggunakan perintah rsync melalui praktik dan contoh langsung. Kami juga akan menjelaskan detail opsi paling umum dari perintah rsync.
Sintaks perintah Rsync
Sebelum mendalami cara menggunakan perintah rsync, mari kita lihat sintaksnya:
rsync [options] <SRC_PATH> <DEST_PATH>
1. Salin/Sinkronkan file di mesin lokal
Perintah Rsync dapat digunakan untuk menyalin/menyinkronkan file di mesin lokal Anda.
Dengan asumsi Anda ingin menyalin file dari direktori home pengguna 'linoxide' bernama '/home/linoxide' ke folder '/opt/test'.
$ sudo rsync -zvh /home/linoxide/computer-networking.pdf /opt/test/
computer-networking.pdf
sent 1.01K bytes received 35 bytes 2.10K bytes/sec
total size is 3.03K speedup is 2.89
Dimana:
-z
:kompres
-v
:verbose output
-h
:dapat dibaca manusia
2. Salin/Sinkronkan direktori di mesin lokal
Untuk mentransfer semua file dari direktori lokal SRC ke direktori DEST, jalankan perintah rsync dengan opsi -zavh
.
Dengan asumsi Anda ingin menyalin direktori home pengguna 'linoxide' bernama '/home/linoxide' ke folder '/opt/backup'.
$ sudo rsync -zavh /home/linoxide/ /opt/backup/
sending incremental file list
./
.bash_history
.bash_logout
.bashrc
.lesshst
.profile
.sudo_as_admin_successful
.viminfo
computer-networking.pdf
.ssh/
.ssh/known_hosts
sent 4.85K bytes received 198 bytes 10.10K bytes/sec
total size is 9.59K speedup is 1.90
Dimana:
-a
:mengarsipkan data selama proses salin/sinkronisasi
Anda dapat memverifikasi apakah perintah rsync berhasil atau tidak? Jalankan perintah di bawah ini:
$ ls /opt/backup/ -la
total 40
drwxr-xr-x 3 linoxide linoxide 4096 Thg 6 15 16:02 .
drwxr-xr-x 4 root root 4096 Thg 6 15 16:25 ..
-rw------- 1 linoxide linoxide 817 Thg 6 15 16:01 .bash_history
-rw-r--r-- 1 linoxide linoxide 220 Thg 6 11 15:58 .bash_logout
-rw-r--r-- 1 linoxide linoxide 3771 Thg 6 11 15:58 .bashrc
-rw-rw-r-- 1 linoxide linoxide 3028 Thg 2 25 2017 computer-networking.pdf
-rw------- 1 linoxide linoxide 40 Thg 6 15 15:51 .lesshst
-rw-r--r-- 1 linoxide linoxide 807 Thg 6 11 15:58 .profile
drwx------ 2 linoxide linoxide 4096 Thg 6 13 17:58 .ssh
-rw-r--r-- 1 linoxide linoxide 0 Thg 6 15 16:02 .sudo_as_admin_successful
-rw------- 1 linoxide linoxide 680 Thg 6 14 16:50 .viminfo
3. Rsync melalui ssh dengan Port tertentu
Anda dapat menggunakan ssh (secure shell) untuk menyalin/menyinkronkan data, data Anda akan ditransfer dalam koneksi aman dengan enkripsi. Tidak ada yang dapat membaca data Anda saat sedang ditransfer di Internet. Saat Anda menggunakan perintah rsync, Anda perlu memberikan kata sandi pengguna/root untuk menyelesaikan tugas tertentu. Menggunakan opsi SSH akan mengirimkan login Anda dengan cara terenkripsi sehingga kata sandi Anda akan aman.
Salin file dari jarak jauh ke lokal dengan port ssh tertentu. Untuk menentukan protokol dengan perintah rsync, Anda perlu menggunakan -e
opsi dengan nama protokol yang ingin Anda gunakan.
Misalnya, perintah rsync berikut akan menyalin file 'deploy.yaml' melalui shell jarak jauh dari mesin jarak jauh ke direktori home pengguna 'linoxide'.
$ rsync -avz -e "ssh -p 22" [email protected]:/home/cas/deploy.yaml /home/linoxide/
[email protected]'s password:
receiving incremental file list
sent 20 bytes received 60 bytes 32.00 bytes/sec
total size is 239 speedup is 2.99
4. Salin/Sinkronkan file dan direktori dari mesin lokal ke mesin jarak jauh
Misalkan Anda ingin menyalin / menyinkronkan folder 'test-data' di direktori home pengguna 'linoxide' di host lokal ke direktori home mesin jarak jauh '[email protected]', jalankan perintah:
$ rsync -azrvh /home/linoxide/computer-networking.pdf [email protected]:
[email protected]'s password:
sending incremental file list
computer-networking.pdf
sent 1.04K bytes received 35 bytes 430.80 bytes/sec
total size is 3.03K speedup is 2.81
Dimana:
-r
:salinan rekursif
5. Salin/Sinkronkan file dan direktori dari mesin jarak jauh ke mesin lokal
Perintah rsync membantu Anda mentransfer 'dokumen' direktori jarak jauh untuk disalin di host lokal Anda.
Dengan asumsi Anda ingin menyalin/menyinkronkan file/direktori dari remote host '[email protected]' ke direktori home pengguna 'linoxide'.
Misalnya:
$ rsync -zavhr [email protected]:document /home/linoxide
[email protected]'s password:
receiving incremental file list
document/
document/kubernetes.txt
sent 47 bytes received 139 bytes 74.40 bytes/sec
total size is 0 speedup is 0.00
6. Rsync -sertakan dan -kecualikan opsi
Kedua opsi ini memungkinkan kami untuk menyertakan dan mengecualikan file dengan menentukan parameter dengan opsi ini membantu kami menentukan file atau direktori yang ingin Anda sertakan dalam sinkronisasi dan mengecualikan file dan folder yang tidak ingin Anda transfer.
Di sini, dalam contoh ini, perintah rsync hanya akan menyertakan file dan direktori yang dimulai dengan 'k' dan mengecualikan semua file dan direktori lainnya.
$ rsync -avhz -e "ssh -p 22" --include 'k*' --exclude '*' [email protected]: /home/linoxide
[email protected]'s password:
receiving incremental file list
./
k8s.yaml
kubernetes.yaml
kuber/
sent 88 bytes received 280 bytes 147.20 bytes/sec
total size is 73 speedup is 0.20
7. Setel ukuran maksimum file
Anda dapat menentukan ukuran file maksimal yang akan ditransfer atau disinkronkan. Anda dapat melakukannya dengan opsi '--max-size'.
Dalam contoh berikut, ukuran file maksimal adalah 200k, jadi perintah ini hanya akan mentransfer file yang sama atau lebih kecil dari 200k.
$ rsync -zavhr --max-size='200k' [email protected]: /home/linoxide
[email protected]'s password:
receiving incremental file list
.bash_history
.bash_logout
.bashrc
.profile
.sudo_as_admin_successful
.viminfo
computer-networking.pdf
sent 2.58K bytes received 51.60K bytes 21.67K bytes/sec
total size is 113.24K speedup is 2.09
8. Hapus file sumber setelah transfer berhasil
Sekarang, misalkan Anda memiliki server web dan server cadangan data, Anda membuat cadangan harian dan menyinkronkannya dengan server cadangan Anda, sekarang Anda tidak ingin menyimpan salinan cadangan lokal itu di server web Anda. Jadi, apakah Anda akan menunggu transfer selesai dan kemudian menghapus file cadangan lokal itu secara manual? Tentu tidak. Penghapusan otomatis ini dapat dilakukan dengan menggunakan opsi '--remove-source-files'.
$ ls /home/directory
computer-networking.pdf deploy.yaml document k8s.yaml kuber kubernetes.yaml
------
$ rsync -azvh --remove-source-files /home/linoxide/deploy.yaml [email protected]:
[email protected]'s password:
sending incremental file list
sent 70 bytes received 20 bytes 36.00 bytes/sec
total size is 239 speedup is 2.66
Jalankan kembali perintah 'ls', Anda dapat melihat file 'deploy.yaml' telah dihapus di SRC.
$ ls
computer-networking.pdf document k8s.yaml kuber kubernetes.yaml
9. Temukan perbedaan file dan direktori antara SRC dan DEST
Untuk menemukan perbedaan dalam file direktori antara SRC dan DEST, Anda dapat menjalankan perintah rsync dengan opsi '-i'.
$ rsync -avzi /home/linoxide/cloud [email protected]:
[email protected]'s password:
sending incremental file list
cd+++++++++ cloud/
<f+++++++++ cloud/computer-networking.pdf
<f+++++++++ cloud/k8s.yaml
<f+++++++++ cloud/kubernetes.yaml
cd+++++++++ cloud/document/
<f+++++++++ cloud/document/kubernetes.txt
cd+++++++++ cloud/kuber/
<f+++++++++ cloud/kuber/test.txt
sent 1,472 bytes received 127 bytes 1,066.00 bytes/sec
total size is 3,101 speedup is 1.94
10. Batasi bandwidth
Anda dapat mengatur batasan bandwidth saat menjalankan perintah rsync dengan opsi '--bwlimit=
Dengan asumsi Anda ingin membatasi kecepatan transfer data hingga 300KB/s, jalankan perintah:
$ rsync -avzh --bwlimit=300 /home/linoxide/coursera.png [email protected]:
[email protected]'s password:
sending incremental file list
coursera.png
sent 2.93M bytes received 35 bytes 234.48K bytes/sec
total size is 3.00M speedup is 1.02
11. Lanjutkan transfer saat gagal di scp
Terkadang, Anda harus mentransfer file yang sangat besar melalui perintah scp tetapi mengalami kesalahan saat menyalin dan tidak dapat mulai mentransfer lagi menggunakan perintah scp karena ukuran file yang besar dan konsumsi waktu.
Dalam situasi ini, Anda dapat menggunakan perintah rsync untuk mulai menyalin file dari mana ia mendapatkan kesalahan. Misalnya, menyalin file ISO besar di direktori home ke remote host '[email protected]'
$ scp /home/linoxide/ubuntu-18.04.4-live-server-amd64.iso [email protected]:
[email protected]'s password:
ubuntu-18.04.4-live-server-amd64.iso 32% 278MB 86.7MB/s 00:06 ETA
Proses telah dimatikan oleh pengguna. Pada saat itu, 32% file telah ditransfer. Sekarang, Anda dapat melanjutkan pekerjaan saat ini dengan menjalankan rsync:
$ rsync -P -avzh ubuntu-18.04.4-live-server-amd64.iso [email protected]:
[email protected]'s password:
sending incremental file list
ubuntu-18.04.4-live-server-amd64.iso
912.26M 100% 15.89MB/s 0:00:54 (xfr#1, to-chk=0/1)
sent 541.25M bytes received 132.44K bytes 9.25M bytes/sec
total size is 912.26M speedup is 1.69

12. Menampilkan kemajuan saat mentransfer data
Jika Anda ingin melihat progres yang ditransfer saat menjalankan perintah rsync, Anda dapat menggunakan opsi '--progress'.
Ini akan menunjukkan file dan waktu yang tersisa untuk menyelesaikan salinan.
Misalnya:
$ rsync -avh --progress /home/linoxide/cloud/ [email protected]:
[email protected]'s password:
sending incremental file list
./
computer-networking.pdf
3.03K 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=8/10)
coursera.png
3.00M 100% 114.38MB/s 0:00:00 (xfr#2, to-chk=7/10)
k8s.yaml
39 100% 1.52kB/s 0:00:00 (xfr#3, to-chk=6/10)
kubernetes.yaml
34 100% 1.33kB/s 0:00:00 (xfr#4, to-chk=5/10)
ubuntu-18.04.4-live-server-amd64.iso
912.26M 100% 89.60MB/s 0:00:09 (xfr#5, to-chk=4/10)
document/
document/kubernetes.txt
0 100% 0.00kB/s 0:00:00 (xfr#6, to-chk=1/10)
kuber/
kuber/test.txt
0 100% 0.00kB/s 0:00:00 (xfr#7, to-chk=0/10)
sent 915.49M bytes received 164 bytes 79.61M bytes/sec
total size is 915.26M speedup is 1.00

Kesimpulan
Dalam tutorial ini, kita mempelajari cara menggunakan perintah rsync dengan beberapa contoh untuk menyalin atau menyinkronkan file/direktori.
Terima kasih telah membaca dan silakan tinggalkan saran Anda di bagian komentar di bawah.