Rsync (Remote Sync) adalah perintah yang paling umum digunakan untuk menyalin dan menyinkronkan file dan direktori dari jarak jauh maupun secara lokal di sistem Linux/Unix.
Dengan bantuan perintah rsync, Anda dapat menyalin dan menyinkronkan data Anda dari jarak jauh dan lokal di seluruh direktori, disk, dan jaringan, melakukan pencadangan data, dan mirror antara dua mesin Linux.
Artikel ini menjelaskan 10 penggunaan dasar dan lanjutan dari perintah rsync untuk mentransfer file Anda dari jarak jauh dan lokal di mesin berbasis Linux. Anda tidak perlu menjadi pengguna root untuk menjalankan perintah rsync.
Beberapa Keuntungan dan Fitur Perintah Rsync
- Ini secara efisien menyalin dan menyinkronkan file ke atau dari sistem jarak jauh.
- Mendukung penyalinan tautan, perangkat, pemilik, grup, dan izin.
- Ini lebih cepat daripada scp (Salin Aman) karena rsync menggunakan protokol pembaruan jarak jauh yang memungkinkan transfer hanya perbedaan antara dua set file. Pertama kali, ia menyalin seluruh isi file atau direktori dari sumber ke tujuan tetapi dari waktu berikutnya, ia hanya menyalin blok dan byte yang diubah ke tujuan.
- Rsync mengkonsumsi lebih sedikit pemanfaatan bandwidth karena menggunakan metode kompresi dan dekompresi saat mengirim dan menerima data di kedua ujungnya.
Sintaks dasar dari perintah rsync
# rsync options source destination
Beberapa opsi umum yang digunakan dengan perintah rsync
-v : verbose
-r : menyalin data secara rekursif (tetapi jangan pertahankan cap 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 cap waktu.
-z : kompres data file.
-h : dapat dibaca manusia, angka keluaran dalam format yang dapat dibaca manusia.
Instal Rsync di Sistem Linux
$ sudo apt-get install rsync [Di Debian/Ubuntu & Mint] $ pacman -S rsync [Di Arch Linux] $ emerge sys-apps/rsync [Di Gentoo] $ sudo dnf install rsync [Di Fedora/CentOS/RHEL and Rocky Linux/AlmaLinux] $ sudo zypper install rsync [Di openSUSE]
Salin/Sinkronkan File dan Direktori Secara Lokal
Perintah berikut akan menyinkronkan satu file pada mesin lokal dari satu lokasi ke lokasi lain. Di sini, dalam contoh ini, nama file backup.tar perlu disalin atau disinkronkan ke folder /tmp/backups/.
[root@malhuda]# 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 tujuan secara otomatis.
Salin/Sinkronkan Direktori di Komputer Lokal
Perintah berikut akan mentransfer atau menyinkronkan semua file dari satu direktori ke direktori lain di mesin yang sama. Di sini, dalam contoh ini, /root/rpmpkgs berisi beberapa file paket rpm dan Anda ingin direktori tersebut disalin ke dalam folder /tmp/backups/.
[root@malhuda]# 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
Salin/Sinkronkan File dan Direktori ke atau Dari Server
Perintah ini akan menyinkronkan direktori dari mesin lokal ke mesin jarak jauh. Misalnya, ada folder di komputer lokal Anda "rpmpkgs" yang berisi beberapa paket RPM dan Anda ingin konten direktori lokal itu dikirim ke server jarak jauh, Anda dapat menggunakan perintah berikut.
[root@malhuda:~]# rsync -avzh /root/rpmpkgs [email protected]:/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 protected]'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
Salin/Sinkronkan Direktori Jarak Jauh ke Mesin 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 di komputer lokal Anda di /tmp/myrpms.
[root@malhuda:~]# rsync -avzh [email protected]:/root/rpmpkgs /tmp/myrpms [email protected]'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
Rsync Melalui SSH
Dengan rsync, kami dapat menggunakan SSH (Secure Shell) untuk transfer data, menggunakan protokol SSH saat mentransfer data kami, Anda dapat memastikan bahwa data Anda ditransfer dalam koneksi yang aman dengan enkripsi sehingga tidak ada yang dapat membaca data Anda saat sedang ditransfer melalui kabel di internet.
Juga ketika kami menggunakan rsync, kami perlu memberikan kata sandi pengguna/root untuk menyelesaikan tugas tertentu, jadi menggunakan opsi SSH akan mengirim login Anda dengan cara terenkripsi sehingga kata sandi Anda akan aman.
Salin File dari Server Jarak Jauh ke Server Lokal dengan SSH
Untuk menentukan protokol dengan rsync Anda perlu memberikan opsi "-e" dengan nama protokol yang ingin Anda gunakan. Di sini, dalam contoh ini, Kami akan menggunakan "ssh" dengan opsi "-e" dan melakukan transfer data.
[root@malhuda:~]# rsync -avzhe ssh [email protected]:/root/anaconda-ks.cfg /tmp [email protected]'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
Salin File dari Server Lokal ke Server Jarak Jauh dengan SSH
[root@malhuda:~]# rsync -avzhe ssh backup.tar.gz [email protected]:/backups/ [email protected]'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
Tampilkan Kemajuan Saat Mentransfer Data dengan rsync
Untuk menunjukkan kemajuan saat mentransfer data dari satu mesin ke mesin yang berbeda, kita dapat menggunakan opsi '–progress'. Ini menampilkan file dan waktu yang tersisa untuk menyelesaikan transfer.
[root@malhuda:/]# rsync -avzhe ssh --progress /root/rpmpkgs [email protected]:/root/rpmpkgs [email protected]'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
Penggunaan Opsi –include dan –exclude
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 'R' dan mengecualikan semua file dan direktori lainnya.
[root@malhuda:/]# rsync -avze ssh --include 'R*' --exclude '*' [email protected]:/var/lib/rpm/ /root/rpm [email protected]'s password: receiving incremental file list created directory /root/rpm ./ Requirename sent 61 bytes received 273,074 bytes 60,696.67 bytes/sec total size is 761,856 speedup is 2.79
Penggunaan Opsi -delete
Jika file atau direktori tidak ada di sumber, tetapi 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 test.txt baru di target.
[root@malhuda:~]# cd /root/rpm/ [root@malhuda:~/rpm]# touch test.txt [root@malhuda:~/rpm]# rsync -avz --delete [email protected]:/var/lib/rpm/ /root/rpm/ [email protected]'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', file test.txt dihapus.
Atur Ukuran Maksimum File yang Akan Ditransfer
Anda dapat menentukan ukuran file Max yang akan ditransfer atau disinkronkan. Anda dapat melakukannya dengan opsi '–max-size'. Di sini, dalam contoh ini, ukuran file Max adalah 200k, jadi perintah ini hanya akan mentransfer file-file yang sama dengan atau lebih kecil dari 200k.
[root@malhuda:~]# rsync -avzhe ssh --max-size='200k' /var/lib/rpm/ [email protected]:/root/tmprpm [email protected]'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
Secara Otomatis Hapus File sumber Setelah Transfer Berhasil
Sekarang, misalkan Anda memiliki server web utama 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'.
[root@malhuda:~]# rsync --remove-source-files -zvh backup.tar.gz [email protected]:/tmp/backups/ [email protected]'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
Lakukan Dry Run dengan rsync
Jika Anda seorang pemula 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 undo bisa menjadi pekerjaan yang membosankan.
Penggunaan opsi ini tidak akan membuat perubahan apa pun pada file dan menunjukkan output dari perintah, jika output menunjukkan persis sama yang ingin Anda lakukan maka Anda dapat menghapus opsi '–dry-run' dari perintah Anda dan jalankan di terminal.
[root@malhuda:~]# rsync --dry-run --remove-source-files -zvh backup.tar.gz [email protected]:/tmp/backups/ [email protected]'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)
Rsync Atur 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 kita membatasi bandwidth I/O.
[root@malhuda]# rsync --bwlimit=100 -avzhe ssh /var/lib/rpm/ [email protected]:/root/tmprpm/ [email protected]'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
Juga, secara default rsync menyinkronkan blok dan byte yang diubah saja, jika Anda ingin secara eksplisit ingin menyinkronkan seluruh file maka Anda menggunakan opsi '-W' dengannya.
[root@malhuda]# 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
Itu saja dengan rsync sekarang, Anda dapat melihat 'man pages' untuk opsi lainnya. Tetap terhubung dengan malhuda.com untuk tutorial yang lebih seru dan menarik di masa mendatang. Jangan tinggalkan komentar dan saran Anda.