Home Tutorial Apa itu Rsync? Panduan Menggunakan Command Rsync

Apa itu Rsync? Panduan Menggunakan Command Rsync

150
0
Rsync logo with tech symbols
Rsync logo with tech symbols (AI Generated)

Rsync atau yang biasa dikenal Remote Sync adalah command yang paling sering digunakan untuk mengcopy dan menyinkronkan file dan direktori secara jarak jauh (remote) maupun secara lokal di sistem berbasis Linux/Unix. Hampir mayoritas systen administrator dan DevOps engineer bergantung pada tool Rsync dan menjadi alat penting bagi mereka, tidak peduli apapun distronya entah itu RHEL, Debian, Ubuntu maupun CentOS, Rsync tetap jadi idola.

Dalam tutorial kali ini, Anda akan saya ajari bagaimana cara mengcopy, menyinkronkan, mem-backup dan menstransfer file secara lokal maupun remote menggunakan 16 command Rsync yang berguna dengan contoh sederhana. Dengan memanfaatkan command Rsync, Anda bisa menyalin dan menyinkronkan data server Anda secara jarak jauh (remote) maupun di sistem lokal di seluruh direktori, storage, disk dan network, kemudian juga melakukan backup data yang efisien, serta melakukan mirroring antara dua sistem mesin Linux.

Keunggulan Command Rsync

Command Rsync menawarkan beberapa kelebihan dan keunggulan, termasuk:

Transfer File yang Efisien – Rsync menggunakan algoritma transfer delta, yang berarti hanya mentransfer perbedaan / diferensiasi antara file sumber dan tujuan / destinasi, yang secara signifikan mengurangi jumlah data yang ditransfer, sehingga sangat efisien untuk sinkronisasi file atau direktori besar antara dua server atau mesin Linux.

Sinkronisasi File Jarak Jauh – Rsync mendukung transfer file lokal dan jarak jauh melalui koneksi SSH atau Secure Shell, yang memungkinkan sinkronisasi antara sistem lokal dan jarak jauh atau mirroring direktori di beberapa mesin Linux yang berbeda.

Backup Inkremental – Rsync sangat cocok untuk backup inkremental, karena membuat dan memperbarui backup secara efisien dengan hanya mentransfer file baru atau file yang telah dimodifikasi.

Mempertahankan Izin File (File Permission) – Rsync dapat mempertahankan berbagai atribut file, seperti izin, kepemilikan, stempel waktu, dan tautan simbolik, yang memastikan bahwa file yang disalin mempertahankan karakteristik aslinya di sistem tujuan / destinasi.

Kontrol Bandwidth – Rsync memungkinkan Anda untuk membatasi penggunaan bandwidth selama proses transfer file, karena menggunakan metode kompresi dan dekompresi saat mengirim dan menerima data di kedua ujung akhir.

Transfer Lebih Cepat – Rsync bisa menyalin data lebih cepat dibandingkan dengan SCP (Secure Copy) untuk mentransfer file, terutama saat menyinkronkan direktori besar atau saat menangani file yang sudah sebagian ditransfer atau sudah ada di server tujuan.

Command Syntax Rsync

Perintah rsync mengikuti sintaks berikut:

$ rsync [OPTIONS] SOURCE DESTINATION

Berikut penjelasan tentang berbagai komponen dan opsi yang digunakan dengan perintah rsync:

-v – Output verbose, menampilkan informasi detail tentang proses 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 koneksi jaringan internet.
-h – Mudah dibaca, menampilkan angka dalam format yang mudah dibaca.
-P – Menampilkan progress selama transfer.

SOURCE – Menentukan file atau direktori sumber yang akan ditransfer, yang dapat berupa lokasi lokal atau jarak jauh.
DESTINATION – Menentukan jalur tujuan tempat file atau direktori akan disalin. Mirip dengan server sumber, ini dapat berupa jalur lokal atau lokasi jarak jauh alias remote.

Panduan Install Rsync di Sistem Linux

Anda dapat menginstal Rsync dengan bantuan paket manajer berikut ini sesuai dengan sistem distribusi Linux Anda.

# Debian, Ubuntu & Linux Mint
$ sudo apt install rsync
# RHEL/CentOS/Fedora dan Rocky/AlmaLinux
$ sudo yum install rsync
# Gentoo Linux
$ sudo emerge -a sys-apps/rsync
# Alpine Linux
$ sudo apk add rsync
# Arch Linux
$ sudo pacman -S rsync
# OpenSUSE
$ sudo zypper install rsync
1. Menyalin/Menyinkronkan File Secara Lokal

Untuk menyalin atau menyinkronkan file secara lokal, Anda dapat menggunakan perintah berikut ini yang akan menyinkronkan satu file pada mesin lokal dari satu lokasi ke lokasi lain.

Sebagai contoh, file bernama backup.tar perlu dicopy atau disinkronkan ke folder /tmp/backups/.

$ 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

Dalam contoh di atas, Anda dapat melihat bahwa jika folder destinasi belum ada, maka Rsync akan membuat direktori secara otomatis untuk destinasi tersebut.

2. Menyalin/Menyinkronkan Direktori Secara Lokal

Command berikut ini akan mentransfer atau menyinkronkan semua file dari satu direktori ke direktori lain di sistem Linux yang sama.

Dalam contoh ini, direktori /root/rpmpkgs berisi beberapa file paket rpm dan Anda ingin direktori tersebut disalin ke dalam folder /tmp/backups/.

$ 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. Menyalin Direktori dari Server Lokal ke Server Jarak Jauh (Remote Server)

Untuk menyalin direktori dari server lokal ke server jarak jauh, Anda dapat menggunakan perintah berikut ini, yang akan menyinkronkan direktori dari server lokal ke server jarak jauh.

Misalnya, jika ada folder di komputer lokal Anda “rpmpkgs” yang berisi beberapa paket RPM dan jika Anda ingin konten direktori lokal tersebut dikirim ke server jarak jauh, Anda dapat menggunakan perintah berikut ini.

$ 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
4. Menyalin Direktori dari Server Jarak Jauh ke Server Lokal

Command berikut ini akan membantu Anda menyinkronkan direktori server jarak jauh ke direktori lokal. Sebagai contoh, direktori /root/rpmpkgs yang berada di server remote disalin ke komputer lokal Anda di folder /tmp/myrpms.

$ 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
5. Rsync Melalui SSH

Dengan Rsync, kita dapat menggunakan SSH (Secure Shell) untuk melakukan transfer data. Dengan menggunakan protokol SSH, saat mentransfer data, Anda dapat yakin bahwa data Anda ditransfer melalui koneksi yang aman dengan enkripsi sehingga tidak ada yang dapat membaca data Anda saat ditransfer melalui internet.

Selain itu, saat menggunakan rsync, kita perlu memberikan kata sandi pengguna/root untuk menyelesaikan tugas tersebut. Oleh karena itu, menggunakan opsi SSH akan mengirimkan login Anda secara terenkripsi sehingga password Anda dijamin aman.

Untuk menggunakan Rsync melalui SSH, Anda dapat menggunakan opsi -e untuk menentukan command shell jarak jauh, yang biasanya adalah SSH seperti yang ditunjukkan.

$ rsync [OPTIONS] -e ssh /path/to/source user@remote:/path/to/destination
6. Menyalin File dari Remote Server ke Server Lokal dengan SSH

Untuk menyinkronkan file dari server jarak jauh ke server lokal, Anda dapat menentukan protokol dengan Rsync menggunakan opsi “-e” dengan nama protokol yang ingin Anda gunakan.

Di contoh ini, kita akan menggunakan “SSH” dengan opsi “-e” dan melakukan transfer data.

$ 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
7. Menyalin File dari Server Lokal ke Server Jarak Jauh dengan SSH

Untuk menyinkronkan file dari server lokal ke server jarak jauh menggunakan SSH, Anda dapat memanfaatkan perintah berikut seperti yang saya tunjukkan.

$ 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
8. Menampilkan Progress Saat Mentransfer Data dengan Rsync

Untuk menampilkan progress saat mentransfer data dari satu mesin ke mesin lain, kita dapat menggunakan opsi ‘–progress’, yang menampilkan file dan waktu yang tersisa untuk menyelesaikan proses transfer.

$ 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
9. Menyertakan 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 di atas, Rsync hanya akan menyertakan file dengan ekstensi .txt dari direktori /path/to/source/ selama proses transfer.

10. Mengecualikan 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 di atas, Rsync akan mengecualikan file dengan ekstensi yang ditentukan (*.ext) selama proses transfer data, sementara Rsync juga akan menyertakan semua file dan direktori lainnya.

11. Menyertakan dan Mengecualikan 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 kita untuk menyertakan dan mengecualikan file dengan menentukan parameter. Opsi ini membantu kita 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 protected]:/var/lib/rpm/ /root/rpm
12. Penggunaan Opsi –delete dengan Rsync

Jika sebuah file atau direktori tidak ada di server sumber, tetapi sudah ada di server tujuan, Anda mungkin ingin menghapus file/direktori yang sudah ada tersebut di server target saat sinkronisasi.

Anda dapat menggunakan opsi ‘–delete’ untuk menghapus file yang tidak ada di direktori server sumber.

Server sumber dan target sudah tersinkronisasi. Sekarang buat file baru test.txt di server target.

[root@srv:~]# cd /root/rpm/
[root@srv:~/rpm]# touch test.txt
[root@srv:~/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

Server target kini memiliki file baru bernama test.txt ketika sinkronisasi dengan sumber dengan opsi ‘–delete‘, file test.txt dihapus.

13. Mengatur Batas Transfer File dengan Rsync

Anda dapat menentukan ukuran file maksimum yang akan ditransfer atau disinkronkan. Anda dapat melakukannya dengan opsi “–max-size”. Dalam contoh ini, ukuran file maksimum adalah 200k, sehingga perintah ini hanya akan mentransfer file yang ukurannya sama dengan atau lebih kecil dari 200k.

$ 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
14. Menghapus File Sumber Secara Otomatis Setelah Proses Transfer

Sekarang, misalkan Anda memiliki web server utama dan server backup data, Anda telah membuat backup harian dan menyinkronkannya dengan server backup Anda, tetapi sekarang Anda tidak ingin menyimpan salinan lokal backup tersebut di web server Anda.

Jadi, apakah Anda akan menunggu proses transfer selesai dan kemudian menghapus file backup lokal tersebut secara manual? Tentu saja TIDAK. Karena penghapusan otomatis ini dapat dilakukan menggunakan opsi ‘–remove-source-files‘.

$ 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
15. Lakukan Uji Coba dengan Rsync

Jika Anda pemula dalam menggunakan Rsync dan tidak tahu persis apa yang akan dilakukan oleh command Anda. Rsync dapat benar-benar mengacaukan hal-hal di folder server tujuan Anda dan kemudian melakukan undo bisa menjadi pekerjaan yang melelahkan.

Penggunaan opsi ini tidak akan membuat perubahan apa pun pada file dan menampilkan output perintah. Jika output menunjukkan persis seperti yang Anda inginkan, Anda dapat menghapus opsi ‘–dry-run’ dari perintah Anda dan menjalankannya di terminal.

$ 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)
16. Mengatur Batas Bandwidth dan Mentransfer File dengan Rsync

Anda dapat mengatur batas bandwidth saat mentransfer data dari satu server ke server lain dengan bantuan opsi ‘–bwlimit‘. Opsi ini membantu kita membatasi bandwidth I/O.

$ 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

Selain itu, secara default Rsync hanya menyinkronkan blok dan byte yang berubah, jika Anda secara eksplisit ingin menyinkronkan seluruh file, Anda dapat menggunakan opsi ‘-W‘.

KESIMPULAN

Demikianlah rangkuman saya mengenai penggunaan Rsync dan kegunaannya. Untuk eksplorasi lebih lanjut mengenai berbagai opsi dan fungsinya, Anda bisa merujuk ke halaman manual yang tersedia.

Sumber: techmint.com

LEAVE A REPLY

Please enter your comment!
Please enter your name here