Seperti namanya, perintah rsync digunakan untuk menyinkronkan (atau menyalin) file dan direktori secara lokal dan jarak jauh. Salah satu fitur penting dari rsync adalah ia bekerja pada “algoritma transfer delta ”, artinya hanya akan menyinkronkan atau menyalin perubahan dari sumber ke tujuan alih-alih menyalin seluruh file yang pada akhirnya mengurangi jumlah data yang dikirim melalui jaringan. Geeks Linux umumnya menggunakan perintah rsync untuk mengelola aktivitas pencadangan, pencerminan, dan pemulihan sehari-hari. Ia menggunakan shell jarak jauh seperti SSH saat menyinkronkan file dari mesin lokal ke mesin jarak jauh dan setiap pengguna dalam sistem dapat menggunakan perintah rsync karena tidak memerlukan hak root atau sudo..
Dalam artikel ini kita akan membahas 17 contoh perintah rsync yang berguna di Linux, contoh-contoh ini akan membantu khususnya pemula Linux untuk mengelola tugas sinkronisasi, mirroring, dan pencadangan mereka dengan lebih efisien.
Perintah Rsync tersedia untuk semua sistem operasi seperti UNIX dan Linux. Ketika kita melakukan instalasi minimal CentOS &RHEL OS maka paket rsync bukan bagian dari instalasi default, jadi untuk menginstal rsync pada CentOS &RHEL, jalankan perintah yum di bawah ini
~]# yum install rsync -y
Di Sistem operasi Seperti Debian (Ubuntu &Linux Mint) gunakan perintah apt di bawah ini untuk menginstal alat rysnc,
~]# apt install rsync -y
Sintaks perintah rsync:
Sinkronisasi Lokal:# rsync {options} {Sumber} {Tujuan}
Tarikan Sinkronisasi Jarak Jauh:# rsync {options}
Remote Sync Push:# rsync
Beberapa opsi yang umum digunakan dalam perintah rsync tercantum di bawah ini:
- -v, –verbose Output verbose
- -q, –quiet menekan keluaran pesan
- -a, –archive mengarsipkan file dan direktori saat menyinkronkan ( -a sama dengan opsi berikut -rlptgoD)
- -r, –rekursif menyinkronkan file dan direktori secara rekursif
- -b, –backup ambil backup selama sinkronisasi
- -u, –update jangan salin file dari sumber ke tujuan jika file tujuan lebih baru
- -l, –links salin symlink sebagai symlink selama sinkronisasi
- -n, –dry-run melakukan uji coba tanpa sinkronisasi
- -e, –rsh=COMMAND sebutkan shell jarak jauh yang akan digunakan dalam rsync
- -z, –kompresi kompres data file selama transfer
- -h, –human-readable menampilkan angka keluaran dalam format yang dapat dibaca manusia
- –kemajuan menampilkan kemajuan sinkronisasi selama transfer
Mari lompat ke contoh berguna dari perintah rsync
Contoh:1) Salin atau Sinkronkan file secara lokal (rsync -zvh)
Mari kita asumsikan kita ingin menyalin file dari direktori home pengguna pkumar ke folder /opt/back, jalankan perintah rsync di bawah ini
[[email protected] ~]# rsync -zvh /home/pkumar/OpenStack-Networking.pdf /opt/backupOpenStack-Networking.pdfsent 4,09M byte diterima 35 byte 2,73M byte/sectotal size 6,15M speedup 1,50 [[dilindungi email] ~]#
Di atas kita telah menggunakan opsi seperti -z untuk kompresi, -v untuk keluaran verbose dan -h untuk keluaran yang dapat dibaca manusia.
Contoh:2) Salin atau Sinkronkan direktori secara lokal (rsync -zavh)
Mari kita asumsikan kita ingin menyalin atau menyinkronkan direktori home pengguna pkumar ke folder /opt/backup, jalankan perintah rsync di bawah ini dengan opsi -zavh ,
[[email protected] ~]# rsync -zavh /home/pkumar /opt/backupsending inkremental file listpkumar/pkumar/.bash_logoutpkumar/.bash_profilepkumar/.bashrcpkumar/OpenStack-Networking.pdf dikirim 4,09 juta byte diterima 96 byte 8,19 juta byte ukuran byte/sektoral adalah 6,15M percepatan adalah 1,50[[email protected] ~]#
Mari kita verifikasi apakah direktori disalin atau tidak, jalankan perintah di bawah ini,
[[dilindungi email] ~]# ls -ld /opt/backup/*-rwx------. 1 root root 6153239 Apr 7 00:25 /opt/backup/OpenStack-Networking.pdfdrwx------. 2 pkumar pkumar 90 Apr 7 00:25 /opt/backup/pkumar[[email protected] ~]#
Seperti yang kita lihat, direktori "pkumar" dibuat di folder tujuan dan isinya juga disalin. Pada contoh di atas jika menggunakan trail / setelah folder sumber (/home/pkumar/) maka perintah rsync tidak akan membuat direktori pkumar di tujuan tetapi hanya akan menyalin isinya.
[[email protected] ~]# rsync -zavh /home/pkumar/ /opt/backup
Contoh:3) Salin file &direktori secara lokal secara rekursif (rsync -zrvh atau rsync -zavh)
Mari kita asumsikan kita memiliki banyak file dan direktori di dalam direktori home pengguna pkumar, gunakan perintah rsync di bawah ini untuk menyalin file dan direktori secara rekursif, gunakan opsi -a atau -r untuk menyalin file dan direktori secara rekursif.
Catatan :Dalam perintah rsync -a opsi digunakan untuk pengarsipan selama penyalinan atau sinkronisasi dan selain pengarsipan -opsi juga digunakan untuk hal berikut:
- menyalin file dan direktori secara rekursif
- salin symlink sebagai symlink
- pertahankan izin
- melestarikan grup
- menghemat waktu modifikasi
- mempertahankan kepemilikan
[[email protected] ~]# rsync -zrvh /home/pkumar /opt/backupor[[email protected] ~]# rsync -zavh /home/pkumar /opt/backup
Contoh:4) Salin atau sinkronkan file dan direktori dari sistem lokal ke sistem jarak jauh
Misalkan kita ingin menyalin folder “/home/pkumar/techi ” dari mesin lokal ke mesin jarak jauh (192.168.1.29) di bawah /opt
[[email protected] ~]# rsync -zarvh /home/pkumar/techi [email protected]:/opt[email protected]'s password:……………………………………… …………………techi/OTRS/techi/OTRS/Database-Selection-OTRS-Installation-CentOS7.jpgtechi/OTRS/Install-OTRS-Accept-License.pngtechi/OTRS/Install-OTRS-CentOS7-RHEL7.jpgtechi /OTRS/mysql-secure-installation-centos7-part2.jpg dikirim 34,85 juta byte diterima 2,65 ribu byte 6,34 juta byte/ukuran sektor adalah 37,77 juta percepatan adalah 1,08……………………………………………… ………………[[dilindungi email] ~]#
Contoh:5) Salin atau Sinkronkan file dan direktori dari mesin jarak jauh ke sistem lokal
Misalkan kita ingin menyalin file dan direktori dari mesin jarak jauh (192.168.1.29) ke sistem lokal kita, pada contoh di bawah ini saya menyalin folder jarak jauh “/opt/rpms_db ” di mesin lokal saya di bawah /tmp map
[[email protected] ~]# rsync -zarvh [email protected]:/opt/rpms_db /tmp[email protected]'s password:menerima daftar file tambahan………………………………… …………………………rpms_db/rpms_db/httpd-2.4.6-88.el7.centos.x86_64.rpmrpms_db/httpd-tools-2.4.6-88.el7.centos.x86_64.rpmrpms_db/postfix- 2.10.1-7.el7.x86_64.rpmrpms_db/pytalloc-2.1.13-1.el7.x86_64.rpmrpms_db/samba-4.8.3-4.el7.x86_64.rpmrpms_db/samba-client-libs-4.8.3- 4.el7.x86_64.rpmrpms_db/samba-common-4.8.3-4.el7.noarch.rpmrpms_db/samba-common-libs-4.8.3-4.el7.x86_64.rpmrpms_db/samba-common-tools-4.8. 3-4.el7.x86_64.rpmrpms_db/samba-libs-4.8.3-4.el7.x86_64.rpmsent 484 byte diterima 15,45M byte 1,07M byte/ukuran sektor 16,37M percepatan 1,06[[email protected] ~] #
Perintah di atas akan secara otomatis membuat folder “rpms_db” di bawah folder /tmp di mesin lokal kita.
[[email protected] ~]# ls -l /tmp/total 8-rwx------. 1 root root 827 Apr 6 12:54 ks-script-avmuxwdrwxr-xr-x. 2 root root 4096 Apr 7 01:42 rpms_db-rw-------. 1 root root 0 Apr 6 12:35 yum.log[[email protected] ~]# ls -l /tmp/rpms_db/total 16028……………………………………-rw-r-- r--. 1 root root 2844028 12 Nov 09:28 httpd-2.4.6-88.el7.centos.x86_64.rpm-rw-r--r--. 1 root root 92504 Nov 12 09:28 httpd-tools-2.4.6-88.el7.centos.x86_64.rpm-rw-r--r--. 1 root root 2558136 12 Nov 09:44 postfix-2.10.1-7.el7.x86_64.rpm-rw-r--r--. 1 root root 17404 Nov 12 09:44 pytalloc-2.1.13-1.el7.x86_64.rpm-rw-r--r--. 1 root root 696472 Nov 12 09:46 samba-4.8.3-4.el7.x86_64.rpm-rw-r--r--. 1 root root 5070800 12 Nov 09:46 samba-client-libs-4.8.3-4.el7.x86_64.rpm-rw-r--r--. 1 root root 210984 Nov 12 10:19 samba-common-4.8.3-4.el7.noarch.rpm-rw-r--r--. 1 root root 167512 Nov 12 09:46 samba-common-libs-4.8.3-4.el7.x86_64.rpm-rw-r--r--. 1 root root 458380 Nov 12 09:46 samba-common-tools-4.8.3-4.el7.x86_64.rpm-rw-r--r--. 1 root root 282332 Nov 12 09:46 samba-libs-4.8.3-4.el7.x86_64.rpm……………………………………[[email protected] ~]#
Contoh:6) Tentukan shell jarak jauh selama sinkronisasi (rsync -e ssh)
Dalam perintah rsync kita dapat menentukan shell jarak jauh seperti ssh selama sinkronisasi, mari kita asumsikan kita ingin menggunakan komunikasi yang aman antara sumber ke mesin tujuan melalui rsync maka kita harus menggunakan ssh sebagai shell jarak jauh, contoh ditunjukkan di bawah ini
[[email protected] ~]# rsync -zarvh -e ssh [email protected]:/opt/rpms_db /tmp[email protected] kata sandi:menerima daftar file tambahan………………………… ………………………………………………………rpms_db/rpms_db/httpd-2.4.6-88.el7.centos.x86_64.rpmrpms_db/httpd-tools-2.4.6-88. el7.centos.x86_64.rpmrpms_db/postfix-2.10.1-7.el7.x86_64.rpmrpms_db/pytalloc-2.1.13-1.el7.x86_64.rpmrpms_db/samba-4.8.3-4.el7.x86_64.rpmrpms_db/ samba-client-libs-4.8.3-4.el7.x86_64.rpmrpms_db/samba-common-4.8.3-4.el7.noarch.rpmrpms_db/samba-common-libs-4.8.3-4.el7.x86_64. rpmrpms_db/samba-common-tools-4.8.3-4.el7.x86_64.rpmrpms_db/samba-libs-4.8.3-4.el7.x86_64.rpmsent 484 byte menerima 15,45M byte 1,82M byte/ukuran sectotal adalah 16,37M speedup adalah 1,06[[email protected] ~]#
Contoh:7) Menampilkan kemajuan Sinkronisasi dalam output perintah rsync
Jika Anda ingin melihat kemajuan sinkronisasi atau penyalinan dalam perintah rsync, gunakan “–progress “, contoh ditunjukkan di bawah
[[email protected] ~]# rsync -avh --progress [email protected]:/opt/rpms_db /tmp[email protected]'s password:menerima daftar file tambahan………………………… …………………………………………………………………………..rpms_db/rpms_db/httpd-2.4.6-88.el7.centos.x86_64.rpm 2.84 M 100% 35.22MB/s 0:00:00 (xfr#6, to-chk=18/25)rpms_db/httpd-tools-2.4.6-88.el7.centos.x86_64.rpm 92.50K 100% 1.13MB /s 0:00:00 (xfr#7, to-chk=17/25)rpms_db/postfix-2.10.1-7.el7.x86_64.rpm 2.56M 100% 14.44MB/s 0:00:00 (xfr #17, to-chk=7/25)rpms_db/samba-4.8.3-4.el7.x86_64.rpm 696.47K 100% 3.71MB/s 0:00:00 (xfr#19, to-chk=5/ 25)rpms_db/samba-client-libs-4.8.3-4.el7.x86_64.rpm 5.07M 100% 19.90MB/s 0:00:00 (xfr#20, to-chk=4/25) rpms_db/samba -common-4.8.3-4.el7.noarch.rpm 210.98K 100% 844.42kB/s 0:00:00 (xfr#21, to-chk=3/25) rpms_db/samba-common-libs-4.8. 3-4.el7.x86_64.rpm 167.51K 100% 667.70kB/s 0:00:00 (xfr#22, to-chk=2/25) rpms_db/samba-common-tools-4.8.3-4.el7 .x86_6 4.rpm 458.38K 100% 1.77MB/s 0:00:00 (xfr#23, to-chk=1/25)rpms_db/samba-libs-4.8.3-4.el7.x86_64.rpm 282.33K 100% 1,09MB/s 0:00:00 (xfr#24, to-chk=0/25)dikirim 484 byte diterima 16,38M byte 3,64M byte/ukuran sektor 16,37M percepatan 1,00[[dilindungi email] ~]#Baca Juga : 14 Contoh Perintah SCP untuk Mentransfer File dengan Aman di Linux
Contoh:8) Salin struktur direktori tanpa menyalin file
Ada beberapa skenario di mana kita ingin menyalin struktur direktori dengan melewatkan file hanya dari mesin lokal ke remote atau sebaliknya.
Misalkan kita ingin menyalin struktur direktori “/home/pkumar” dari mesin lokal ke mesin jarak jauh (192.168.1.29) di bawah folder /opt.
[email protected] ~]# rsync -av -f"+ */" -f"- *" /home/pkumar [email protected]:/opt/[email protected]'s password:building file list . .. selesai………………………………………………pkumar/dikirim 43 byte diterima 19 byte 17.71 byte/ukuran sektor adalah 0 percepatan adalah 0.00[[email protected] ~]#Contoh:9) Lanjutkan transfer file besar setelah gagal di scp
Ada beberapa skenario di profil admin linux di mana kami mulai menyalin file yang lebih besar menggunakan perintah scp, tetapi file tersebut dihentikan di tengah dan kami tidak dapat mulai menyalinnya lagi menggunakan scp karena ukurannya yang besar dan konsumsi waktu.
Jadi dalam situasi ini perintah rsync dapat digunakan karena dapat mulai menyalin file dari tempat ditinggalkan atau dihentikan, atau dengan kata lain rsync dapat mentransfer file yang sebagian disalin menggunakan perintah scp. Contoh ditunjukkan di bawah ini,
[[email protected] ~]# scp [email protected]:/root/ubuntu-18.04-desktop-amd64.iso /opt[email protected]'s password:ubuntu-18.04-desktop-amd64.iso 28% 526MB 61.5MB/s 00:21 ETA^CDiisi oleh sinyal 2.[[email protected] ~]#[[email protected] ~]# rsync -P --rsh=ssh [email protected]:/root/ubuntu-18.04 -desktop-amd64.iso /opt[email protected]'s password:ubuntu-18.04-desktop-amd64.iso 1.921.843.200 100% 18.47MB/s 0:01:39 (xfr#1, to-chk=0/1) [[dilindungi email] ~]#Contoh:10) Hapus file di tujuan jika tidak ada di sumber (–hapus)
Jika Anda telah menyinkronkan file dari sumber ke tujuan dan dari sumber Anda telah menghapus file maka Anda dapat memaksa perintah rsync untuk menghapus file di tujuan menggunakan opsi –delete, contoh ditunjukkan di bawah ini
[[email protected] ~]# rsync -avz --delete /opt/rpms_db [email protected]:/tmp/rpms_db[email protected] kata sandi:mengirim daftar file tambahan menghapus rpms_db/apr-util-1.5. 2-6.el7.x86_64.rpmmenghapus rpms_db/apr-1.4.8-3.el7_4.1.x86_64.rpmrpms_db/sent 862 byte diterima 105 byte 276.29 byte/ukuran sectotal 15.947.152 percepatan 16.491.37[[]email protected] #Contoh:11) Batasi ukuran transfer file (–max-size)
Jika Anda tidak ingin mentransfer atau menyalin file besar menggunakan rsync, gunakan opsi ‘–max-size={specify-size-here}’ , anggap saja kita tidak ingin mentransfer file yang ukurannya lebih dari 500K,
Catatan:Untuk menentukan ukuran dalam MB gunakan M dan untuk GB gunakan G.
[[email protected] ~]# rsync -avz --max-size='500K' /opt/rpms_db [email protected]:/tmpContoh:12) Jangan sinkronkan/salin file yang dimodifikasi di tempat tujuan
Ada beberapa skenario di mana kami memodifikasi file di tujuan dan kami tidak ingin menimpa file yang dimodifikasi dari sumber saat menyinkronkan, jadi ini dapat dengan mudah dicapai menggunakan -u opsi dalam perintah rsync
[[email protected] ~]# rsync -avzu [email protected]:/opt/techi /home/pkumar/techi[email protected]'s password:menerima daftar file tambahan, 37 byte, menerima 4.960 byte, 1.427,71 byte/sectotal ukuran 37.771.649 percepatan adalah 7.558.87[[email protected] ~]#Contoh:13) Hapus file dari sumber setelah sinkronisasi (–remove-source-files)
Misalkan Anda ingin menghapus file dari sumber setelah sinkronisasi selesai menggunakan perintah rsync. Pada contoh di bawah ini, folder dari sistem lokal “/home/pkumar/techi.tgz ” disinkronkan ke sistem jarak jauh (192.168.1.29), setelah sinkronisasi selesai, file akan dihapus dari sumber.
[[email protected] ~]# rsync --remove-source-files -zvh /home/pkumar/techi.tgz [email protected]:/opt[email protected]'s password:techi.tgzsent 597 bytes diterima 43 byte 182,86 byte/ukuran sektor adalah 518 percepatan adalah 0,81[[email protected] ~]#[[email protected] ~]# ls -l /home/pkumar/techi.tgzls:tidak dapat mengakses /home/pkumar/techi.tgz :Tidak ada file atau direktori seperti itu[[email protected] ~]#Contoh:14) Keringkan perintah rsync sebelum sinkronisasi sebenarnya
Mungkin ada beberapa situasi di mana kita bukan tentang perilaku perintah rsync jadi dalam kasus seperti itu lebih baik melakukan dry run rsync
[[email protected] ~]# rsync --dry-run --remove-source-files -zvh /home/pkumar/projects.tar [email protected]:/opt[email protected]'s password:projects .tarsent 51 byte diterima 19 byte 7.37 byte/ukuran sektor 981.24M percepatan 14.017.682,29 (DRY RUN)[[email protected] ~]#Contoh:15) Sertakan dan Kecualikan file selama sinkronisasi dengan rsync
Ada beberapa situasi di mana kita ingin menyalin atau menyinkronkan file &direktori jenis tertentu dan ingin mengecualikan file atau direktori jenis tertentu. Perintah Rsync mendukung opsi penyertaan dan pengecualian.
Pada contoh di bawah ini ingin menyalin file jenis pdf dan rpm dan mengecualikan jenis file png.
[[email protected] ~]# rsync -avz -e ssh --include '*.pdf *.rpm' --exclude '*.png' /home/pkumar/techi [email protected]:/opt[ kata sandi yang dilindungi email:mengirim file tambahan listtechi/techi/OpenStack-Networking.pdftechi/httpd-2.4.6-88.el7.centos.x86_64.rpmtechi/httpd-tools-2.4.6-88.el7.centos. x86_64.rpmtechi/postfix-2.10.1-7.el7.x86_64.rpmsent 9.469.912 byte menerima 96 byte 2.705.716.57 byte/ukuran sectotal 11.647.907 percepatan 1,23[[email protected] ~]#Contoh:16) Membatasi kecepatan transfer data di rsync (–bwlimit=
) Dalam perintah rsync kita dapat mengatur batas bandwidth untuk transfer data dari satu mesin ke mesin lainnya, gunakan ‘–bwlimit=
' dalam perintah rsync untuk membatasi kecepatan transfer data. Mari kita asumsikan kita ingin mengatur kecepatan transfer data maksimum (kecepatan) adalah 600 KB/s dengan rsync, contoh ditunjukkan di bawah ini
[[email protected] ~]# rsync -avz --progress --bwlimit=600 /home/pkumar/techi [email protected]:/opt[email protected] kata sandi:mengirim file tambahan listtechi/techi/ OpenStack-Networking.pdf6,153,239 100% 910.02kB/s 0:00:06 (xfr#1, to-chk=6/8)techi/httpd-2.4.6-88.el7.centos.x86_64.rpm2.844.028 100% 615.28kB/s 0:00:04 (xfr#2, to-chk=5/8)techi/httpd-tools-2.4.6-88.el7.centos.x86_64.rpm92.504 100% 507.51kB/ s 0:00:00 (xfr#3, to-chk=4/8)techi/pkumar-2.png0 100% 0.00kB/s 0:00:00 (xfr#4, to-chk=3/8) techi/pkumar-3.png0 100% 0.00kB/s 0:00:00 (xfr#5, to-chk=2/8)techi/pkumar.png0 100% 0.00kB/s 0:00:00 (xfr# 6, to-chk=1/8)techi/postfix-2.10.1-7.el7.x86_64.rpm2,558,136 100% 594.80kB/s 0:00:04 (xfr#7, to-chk=0/8 ) terkirim 9.470.087 byte menerima 153 byte 485.653.33 byte/ukuran sektoral adalah 11.647.907 percepatan adalah 1,23[[email protected] ~]#Contoh:17) Lihat perbedaan file &direktori antara sumber dan tujuan
Gunakan “-i ” dalam perintah rsync untuk membuat daftar perbedaan dalam file dan direktori antara sumber dan tujuan. Contoh ditunjukkan di bawah ini
[[email protected]teway ~]# rsync -avzi /home/pkumar/techi [email protected]:/opt[email protected]'s password:sending inkremental file list.d..t..... . techi/Sesuai output perintah di atas, ada perbedaan dalam file yang disebut "projects.txt" di tempat tujuan. Berikut adalah arti dari kata kunci pada output di atas,
- d:menunjukkan perubahan pada file tujuan
- f:menunjukkan file
- t:menunjukkan perubahan stempel waktu
- s:menunjukkan perubahan ukuran
Itu saja dari tutorial ini, jika contoh ini Anda memahami perintah rsync lebih efisien, silakan bagikan umpan balik dan komentar Anda
Baca Juga : 17 perintah tar yang berguna dengan contoh praktis di Linux
Baca Juga :Cara Memutar dan Mengompresi File Log di Linux dengan Logrotate
18 Contoh perintah 'lsof' cepat untuk Linux Geeks Cara Menginstal EndeavourOS Langkah demi Langkah dengan Tangkapan LayarLinux