Perintah dasar:
rsync fileSumber FolderTujuan rsync -avz FolderSumber/ FolderTujuan/Perintah pertama akan mengcopy file 'fileSumber' kedalam 'FolderTujuan', sedang perintah kedua akan mensinkronkan file-file didalam 'FolderSumber' kedalam 'FolderTujuan'. Jika tidak ada slash di argumen pertama ('FolderSumber') maka 'FolderSumber' akan dicopy (bukan hanya file-filenya, tapi foldernya) didalam 'FolderTujuan'. Jika ada slash ('FolderSumber/') maka yang dicopy hanya file-filenya saja (bukan foldernya). Opsi -avz adalah archieve, verbose dan compress artinya rsync dilakukan secara rekursif (isi folder), menampilkan informasi sinkronisasi dan mengkompress saat pengiriman.
Skenario 1: Anda punya dua direktori/folder/drive yang akan anda sinkron-kan, misal namanya adalah tes1 dan tes2. Di dalam tes1 ada beberapa file, sedang tes2 masih kosong. Simply speaking, anda ingin memback-up atau mengcopy paste isi file didalam folder tes1 ke dalam folder tes2.
Kondisi 0:
tes1 +--- file1 +--- file2 +--- file3 tes2Perintah:
Buat folder dan file1..3 dalam folder tes1 $ cd /tmp $ mkdir -p tes1 && cd $_ $ touch file{1..3} $ mkdir ../tes2Dengan perintah diatas skenario kondisi 0 tercapai, kita mempunyai tiga file dalam folder tes1 dan nol file dalam tes2. Sekarang saatnya memback-up atau copy paste dengan rsync,
$ pwd tes1 $ rsync -avz --update ./ ../tes2
Maka kita akan memperoleh kondisi 1 sbb:
tes1 +--- file1 +--- file2 +--- file3 tes2 +--- file1 +--- file2 +--- file3Sekarang kita buat sedikit modifikasi
$ pwd tes1 $ rm ../tes2/file3Hasilnya:
tes1 +--- file1 +--- file2 +--- file3 tes2 +--- file1 +--- file2Kita modifikasi dan sinkronkan lagi,
$ pwd tes1 $ echo "ini adalah file1" >> file1 $ rsync -avz --update ./ ../tes2/Hasilnya:
tes1 +--- file1 (ini adalah file1) +--- file2 +--- file3 tes2 +--- file1 (ini adalah file1) +--- file2 +--- file3
rsync --existing vs rsync --ignore-existing
Sejauh ini kita telah berkenalan dengan
rsync --avz --update
yang berfungsi untuk mengupdate file-file di tujuan agar sesuai/terupdate dengan file-file yang ada di sumber. Selain opsi --update
ada opsi lainnya yakni: --existing
untuk menskip mencopy/membuat file jika file tsb sudah ada di folder tujuan dan --ignore-existing
untuk menskip mengupdate file-file di folder tujuan
--update skip creating new files on receiver --ignore-existing skip updating files that exist on receiver --existing skip creating new files on receiverMaka jika kita hanya ingin mengupdate file-file yang exist saja tanpa mengcopy file baru (file yang belum ada di folder tujuan) perintahnya,
rsync -avz -u --existing tes1/ tes2/Namun jika kita juga ingin mengupdate file yang belum ada dan tidak mengupdate file yang sudah ada, maka perintahnya adalah:
rsync -avz -u --ignore-existing tes1/ tes2/
rsync --exclude
Ada kalanya kita tidak ingin memasukkan beberapa file/folder ke dalam back-up kita, maka perintah --exclude bisa digunakan untuk keperluan ini. Berikut perintah dasarnya,rsync -avz --update --exclude='file3' . ../tes2Maka kedua folder, tes1 dan tes2, akan disinkronkan tanpa mengikutkan file3 didalam folder tes1.
rsync --info=progress2
Untuk sinkronisasi file dalam jumlah yang sangat besar, kita ingin tahu seberapa progress copy-paste/sinkronisasi tersebut. Untuk tujuan ini kita bisa menggunakan argumen --proress atau yang lebih baru --info=progress2 untuk menampilkan persentasi dari progress tersebut.rsync -avz -u --progress tes1/ tes2/Sayangnya, baik argumen --progress ataupun --info=progress2 hanya berlaku secara lokal, artinya kita tidak bisa mengetahui progress secara keseluruhan/total.
rsync -aP
Jika --progress adalah sama dengan argumen --info=progress2 maka -aP adalah kepanjangan dari --partial --progress. Argumen ini berguna untuk transfer file dalam jumlah besar.Contoh,
rsync -aP /usr/share/doc/ /tmp/test/
Rsync beda IP address
Kita juga bisa meng-rsync antar komputer atau antar IP address. Misalnya dari IP saat ini ke 150.83.228.180 dalam direktori tertentu. Contoh berikut mensinkronkan direktori "research" di home dengan direktori "research" di /media/bagustris/atmaja/onedriveITS/ di IP 150.83.228.180. Ingat direktori "research" tidak perlu ditulis ulang di IP tujuan.rsync -a ~/research 150.82.228.180:/media/bagustris/atmaja/onedriveITS/
synch.sh
Langkah terakhir, jika anda sudah cukup familiar atau bahkan sudah expert menggunakan perintah rsync, anda bisa menuliskannya dalam bash file alih-alih mengetikkannya di terminal secara panjang. Anda juga bisa memback-up secara terjadwal dengan bantuan crontab
. Contoh berikut adalah bash file yang saya berinama synch.sh yang saya gunakan untuk mengcopy file di server (hp83-inf-39) ke dalam current directory saya saat ini (dimana file synch.sh berada).
#!/usr/bin/bash rsync -avz --update batmaja@hp83-inf-39:/scratch/batmaja/WORLD . chmod go-w -R .
Selamat mencoba!