16 Contoh Praktis Perintah Rsync di Linux
Rsync (Remote Sync) adalah perintah yang paling umum digunakan untuk menyalin dan menyinkronkan file dan direktori dari jarak jauh serta lokal di sistem Linux/Unix.
Dengan bantuan perintah rsync, Anda dapat menyalin dan menyinkronkan data Anda secara jarak jauh dan lokal di seluruh direktori, disk, dan jaringan, melakukan pencadangan data, dan melakukan mirroring antara dua mesin Linux.
Artikel ini menjelaskan 16 penggunaan dasar dan lanjutan dari perintah rsync untuk mentransfer file Anda secara jarak jauh dan lokal di mesin berbasis Linux. Anda tidak perlu menjadi pengguna root untuk menjalankan perintah rsync.
Keuntungan dari Perintah Rsync
Ini menawarkan beberapa keuntungan, termasuk:
- Transfer File Efisien – rsync menggunakan algoritme transfer delta, yang berarti rsync hanya mentransfer perbedaan antara file sumber dan tujuan, yang secara signifikan mengurangi jumlah data yang ditransfer, sehingga efisien untuk menyinkronkan file atau direktori besar.
- Sinkronisasi File Jarak Jauh – rsync mendukung transfer file lokal dan jarak jauh melalui SSH, yang memungkinkan sinkronisasi antara sistem lokal dan jarak jauh atau mencerminkan direktori di beberapa mesin.
- Pencadangan Tambahan – rsync sangat cocok untuk pencadangan tambahan, karena rsync membuat dan memperbarui cadangan secara efisien dengan hanya mentransfer file baru atau yang dimodifikasi.
- Mempertahankan Izin File – rsync dapat mempertahankan berbagai atribut file, seperti izin, kepemilikan, stempel waktu, dan tautan simbolik, yang memastikan bahwa file yang disalin tetap mempertahankan karakteristik aslinya di tujuan.
- Kontrol Bandwidth – rsync memungkinkan Anda membatasi penggunaan bandwidth selama transfer file, karena rsync menggunakan metode kompresi dan dekompresi saat mengirim dan menerima data di kedua ujungnya.
- Lebih cepat – rsync bisa lebih cepat daripada scp (Secure Copy) untuk mentransfer file, terutama ketika menyinkronkan direktori besar atau ketika menangani file yang telah ditransfer sebagian atau ada di tujuan.
Sintaks Perintah Rsync
Perintah rsync mengikuti sintaks berikut:
rsync [OPTIONS] SOURCE DESTINATION
Berikut penjelasan berbagai komponen dan opsi yang digunakan dengan perintah rsync:
-v
– Output verbose, menampilkan informasi detail tentang transfer.-r
– menyalin data secara rekursif (tetapi tidak mempertahankan stempel waktu dan izin saat mentransfer data.-a
– mode arsip, yang memungkinkan penyalinan file secara rekursif dan juga mempertahankan tautan simbolik, izin file, kepemilikan pengguna & grup, dan stempel waktu.-z
– Kompres file selama transfer untuk mengurangi penggunaan jaringan.-h
– angka keluaran yang dapat dibaca manusia dalam format yang dapat dibaca manusia.-P
– Menampilkan kemajuan selama transfer.SOURCE
– Menentukan file sumber atau direktori yang akan ditransfer, yang dapat berupa lokasi lokal atau jarak jauh.DESTINATION
– Menentukan jalur tujuan di mana file atau direktori akan disalin. Mirip dengan sumbernya, ini bisa berupa jalur lokal atau lokasi jauh.
Instal Rsync di Sistem Linux
Kami dapat menginstal paket rsync dengan bantuan manajer paket berikut sesuai distribusi Linux Anda.
sudo apt install rsync [On Debian, Ubuntu and Mint]
sudo yum install rsync [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/rsync [On Gentoo Linux]
sudo apk add rsync [On Alpine Linux]
sudo pacman -S rsync [On Arch Linux]
sudo zypper install rsync [On OpenSUSE]
1. Salin/Sinkronkan File Secara Lokal
Untuk menyalin atau menyinkronkan file secara lokal, Anda dapat menggunakan perintah berikut yang akan menyinkronkan satu file di mesin lokal dari satu lokasi ke lokasi lain.
Di sini, di contoh ini, nama file backup.tar perlu disalin atau disinkronkan ke folder /tmp/backups/.
[root@tecmint]# rsync -zvh backup.tar.gz /tmp/backups/
created directory /tmp/backups
backup.tar.gz
sent 224.54K bytes received 70 bytes 449.21K bytes/sec
total size is 224.40K speedup is 1.00
Pada contoh di atas, Anda dapat melihat bahwa jika tujuan belum ada, rsync akan membuat direktori secara otomatis untuk tujuan tersebut.
2. Salin/Sinkronkan Direktori Secara Lokal
Perintah berikut akan mentransfer atau menyinkronkan semua file dari satu direktori ke direktori berbeda di mesin yang sama.
Di sini, di contoh ini, /root/rpmpkgs berisi beberapa file paket rpm dan Anda ingin direktori tersebut disalin ke dalam folder /tmp/backups/.
[root@tecmint]# rsync -avzh /root/rpmpkgs /tmp/backups/
sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm
sent 3.47M bytes received 96 bytes 2.32M bytes/sec
total size is 3.74M speedup is 1.08
3. Salin Direktori dari Server Lokal ke Server Jarak Jauh
Untuk menyalin direktori dari server lokal ke server jauh, Anda dapat menggunakan perintah berikut, yang akan menyinkronkan direktori dari mesin lokal ke mesin jarak jauh.
Misalnya, jika ada folder di komputer lokal Anda “rpmpkgs ” yang berisi beberapa paket RPM dan jika Anda ingin konten direktori lokal tersebut dikirimkan ke server jauh, Anda dapat menggunakan perintah berikut.
rsync -avzh /root/rpmpkgs [email :/root/
The authenticity of host '192.168.0.141 (192.168.0.141)' can't be established.
ED25519 key fingerprint is SHA256:bH2tiWQn4S5o6qmZhmtXcBROV5TU5H4t2C42QDEMx1c.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.0.141' (ED25519) to the list of known hosts.
[email 's password:
sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm
sent 3.74M bytes received 96 bytes 439.88K bytes/sec
total size is 3.74M speedup is 1.00
4. Salin Direktori dari Remote ke Server Lokal
Perintah ini akan membantu Anda menyinkronkan direktori jarak jauh ke direktori lokal. Di sini, dalam contoh ini, direktori /root/rpmpkgs yang ada di server jauh sedang disalin ke komputer lokal Anda di /tmp/myrpms.
rsync -avzh [email :/root/rpmpkgs /tmp/myrpms
[email 's password:
receiving incremental file list
created directory /tmp/myrpms
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm
sent 104 bytes received 3.49M bytes 997.68K bytes/sec
total size is 3.74M speedup is 1.07
5. Sinkronisasi Melalui SSH
Dengan rsync, kami dapat menggunakan SSH (Secure Shell) untuk transfer data, menggunakan protokol SSH saat mentransfer data kami, Anda dapat yakin bahwa data Anda ditransfer dalam koneksi yang aman dengan enkripsi sehingga tidak ada yang bisa membaca data Anda saat sedang ditransfer melalui kabel di internet.
Juga ketika kita menggunakan rsync kita perlu memberikan kata sandi pengguna/root untuk menyelesaikan tugas tersebut, jadi gunakan SSH akan mengirimkan login Anda secara terenkripsi sehingga kata sandi Anda akan aman.
Untuk menggunakan rsync melalui SSH, Anda dapat menggunakan opsi -e
untuk menentukan perintah shell jarak jauh, yang biasanya ssh seperti yang ditunjukkan.
rsync [OPTIONS] -e ssh /path/to/source user@remote:/path/to/destination
6. Salin File dari Server Jarak Jauh ke Server Lokal dengan SSH
Untuk menyinkronkan file dari server jauh ke server lokal, Anda dapat menentukan protokol dengan rsync menggunakan opsi “-e ” dengan nama protokol yang ingin Anda gunakan.
Di sini, di contoh ini, Kami akan menggunakan “ssh ” dengan opsi “-e ” dan melakukan transfer data.
rsync -avzhe ssh [email :/root/anaconda-ks.cfg /tmp
[email 's password:
receiving incremental file list
anaconda-ks.cfg
sent 43 bytes received 1.10K bytes 325.43 bytes/sec
total size is 1.90K speedup is 1.67
7. Salin File dari Server Lokal ke Server Jarak Jauh dengan SSH
Untuk menyinkronkan file dari server lokal ke server jauh menggunakan SSH, Anda dapat memanfaatkan perintah berikut seperti yang ditunjukkan.
rsync -avzhe ssh backup.tar.gz [email :/backups/
[email 's password:
sending incremental file list
created directory /backups
backup.tar.gz
sent 224.59K bytes received 66 bytes 64.19K bytes/sec
total size is 224.40K speedup is 1.00
8. Tampilkan Kemajuan Saat Mentransfer Data dengan Rsync
Untuk menunjukkan kemajuan saat mentransfer data dari satu mesin ke mesin lain, kita dapat menggunakan opsi ‘--progress'
, yang menampilkan file dan waktu yang tersisa untuk menyelesaikan transfer.
rsync -avzhe ssh --progress /root/rpmpkgs [email :/root/rpmpkgs
[email 's password:
sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
1.47M 100% 31.80MB/s 0:00:00 (xfr#1, to-chk=3/5)
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
138.01K 100% 2.69MB/s 0:00:00 (xfr#2, to-chk=2/5)
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
2.01M 100% 18.45MB/s 0:00:00 (xfr#3, to-chk=1/5)
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm
120.48K 100% 1.04MB/s 0:00:00 (xfr#4, to-chk=0/5)
sent 3.74M bytes received 96 bytes 1.50M bytes/sec
total size is 3.74M speedup is 1.00
9. Sertakan File dengan Ekstensi Tertentu dengan Rsync
Untuk menyertakan file atau pola tertentu selama operasi rsync, Anda dapat menggunakan opsi --include
dengan ekstensi yang cocok dengan semua file.
rsync -avz --include='*.txt' /path/to/source/ user@remote:/path/to/destination/
Dalam contoh yang diberikan, rsync hanya akan menyertakan file dengan ekstensi .txt
dari direktori /path/to/source/ selama transfer.
10. Kecualikan File dengan Ekstensi Tertentu dengan Rsync
Demikian pula, untuk mengecualikan ekstensi tertentu selama operasi rsync, Anda dapat menggunakan opsi --exclude
dengan pola wildcard.
rsync -avz --exclude='*.ext' /path/to/source/ user@remote:/path/to/destination/
Dalam contoh yang diberikan, rsync akan mengecualikan file dengan ekstensi (*.ext)
yang ditentukan selama transfer, sekaligus menyertakan semua file dan direktori lainnya.
11. Sertakan dan Kecualikan File dengan Rsync
Untuk menyertakan dan mengecualikan file atau pola tertentu selama operasi rsync, Anda dapat menggunakan opsi --include
dan --exclude
dengan pola wildcard yang sesuai.
Kedua opsi ini memungkinkan kami untuk menyertakan dan mengecualikan file dengan menentukan parameter. Opsi ini membantu kami menentukan file atau direktori yang ingin Anda sertakan dalam sinkronisasi dan mengecualikan file dan folder yang tidak ingin Anda transfer.
Dalam contoh ini, perintah rsync hanya akan menyertakan file dan direktori yang dimulai dengan 'R'
dan mengecualikan semua file dan direktori lainnya.
rsync -avze ssh --include 'R*' --exclude '*' [email :/var/lib/rpm/ /root/rpm
12. Penggunaan Opsi –delete dengan Rsync
Jika file atau direktori tidak ada di sumbernya, namun sudah ada di tujuan, Anda mungkin ingin menghapus file/direktori yang ada di target saat menyinkronkan.
Kita dapat menggunakan opsi '--delete
' untuk menghapus file yang tidak ada di direktori sumber.
Sumber dan target sinkron. Sekarang buat file baru test.txt pada target.
[root@tecmint:~]# cd /root/rpm/
[root@tecmint:~/rpm]# touch test.txt
[root@tecmint:~/rpm]# rsync -avz --delete [email :/var/lib/rpm/ /root/rpm/
[email 's password:
receiving incremental file list
deleting test.txt
./
.dbenv.lock
.rpm.lock
Basenames
Conflictname
Dirnames
Enhancename
Filetriggername
Group
Installtid
Name
Obsoletename
Packages
Providename
Sha1header
Sigmd5
Suggestname
Supplementname
Transfiletriggername
Triggername
__db.001
__db.002
__db.003
sent 445 bytes received 18,543,954 bytes 2,472,586.53 bytes/sec
total size is 71,151,616 speedup is 3.84
Target memiliki file baru bernama test.txt saat menyinkronkan dengan sumber dengan opsi '–delete
', maka file test.txt dihapus .
13. Tetapkan Batas Transfer File dengan Rsync
Anda dapat menentukan ukuran file Maks yang akan ditransfer atau disinkronkan. Anda dapat melakukannya dengan opsi “--max-size
”. Dalam contoh ini, ukuran file Maks adalah 200k, jadi perintah ini hanya akan mentransfer file yang sama atau lebih kecil dari 200k.
rsync -avzhe ssh --max-size='200k' /var/lib/rpm/ [email :/root/tmprpm
[email 's password:
sending incremental file list
created directory /root/tmprpm
./
.dbenv.lock
.rpm.lock
Conflictname
Enhancename
Filetriggername
Group
Installtid
Name
Obsoletename
Recommendname
Requirename
Sha1header
Sigmd5
Suggestname
Supplementname
Transfiletriggername
Triggername
__db.002
sent 129.52K bytes received 396 bytes 28.87K bytes/sec
total size is 71.15M speedup is 547.66
14. Secara Otomatis Menghapus File Sumber Setelah Transfer
Sekarang, misalkan Anda memiliki server web utama dan server cadangan data, Anda membuat cadangan harian dan menyinkronkannya dengan server cadangan Anda, namun sekarang Anda tidak ingin menyimpan salinan cadangan lokal tersebut di server web Anda.
Jadi, apakah Anda akan menunggu hingga transfer selesai dan kemudian menghapus file cadangan lokal tersebut secara manual? Tentu tidak. Penghapusan otomatis ini dapat dilakukan menggunakan opsi '--remove-source-files
'.
rsync --remove-source-files -zvh backup.tar.gz [email :/tmp/backups/
[email 's password:
backup.tar.gz
sent 795 bytes received 2.33K bytes 894.29 bytes/sec
total size is 267.30K speedup is 85.40
[root@tecmint:~]# ls -l backup.tar.gz
ls: cannot access 'backup.tar.gz': No such file or directory
15. Lakukan Lari Kering dengan Rsync
Jika Anda seorang pemula yang menggunakan rsync dan tidak tahu persis apa yang akan dilakukan perintah Anda. Rsync benar-benar dapat mengacaukan hal-hal di folder tujuan Anda dan kemudian melakukan pembatalan dapat menjadi pekerjaan yang membosankan.
Penggunaan opsi ini tidak akan membuat perubahan apa pun pada file dan menampilkan keluaran perintah, jika keluaran menunjukkan persis sama seperti yang ingin Anda lakukan maka Anda dapat menghapus '--dry-run
' opsi dari perintah Anda dan jalankan di terminal.
rsync --dry-run --remove-source-files -zvh backup.tar.gz [email :/tmp/backups/
[email 's password:
backup.tar.gz
sent 50 bytes received 19 bytes 19.71 bytes/sec
total size is 267.30K speedup is 3,873.97 (DRY RUN)
16. Rsync Mengatur Batas Bandwidth dan Transfer File
Anda dapat mengatur batas bandwidth saat mentransfer data dari satu mesin ke mesin lain dengan bantuan opsi '--bwlimit
'. Opsi ini membantu kami membatasi bandwidth I/O.
rsync --bwlimit=100 -avzhe ssh /var/lib/rpm/ [email :/root/tmprpm/
[email 's password:
sending incremental file list
sent 324 bytes received 12 bytes 61.09 bytes/sec
total size is 38.08M speedup is 113347.05
Selain itu, secara default sinkronisasi rsync hanya mengubah blok dan byte, jika Anda secara eksplisit ingin menyinkronkan seluruh file maka Anda menggunakan opsi '-W' dengannya.
rsync -zvhW backup.tar /tmp/backups/backup.tar
backup.tar
sent 14.71M bytes received 31 bytes 3.27M bytes/sec
total size is 16.18M speedup is 1.10
Kesimpulan
Sekianlah ringkasan kami tentang rsync dan kemampuannya. Untuk eksplorasi lebih lanjut mengenai pilihan dan fungsinya yang luas, saya mendorong Anda untuk merujuk pada halaman manual komprehensif (halaman manual) yang tersedia.