Perintah rsync pada linux
Rsync adalah tool untuk
transfer dan sinkronisasi file atau tree (struktur direktori dan file)
secara satu arah, baik transfer lokal (di sistem yang sama) maupun
remote (jaringan/internet). Fungsi rsync mirip/identik dengan tool-tool
ini: cp, mv, scp, FTP client. Rsync biasanya digabungkan dengan SSH
sebagai metode transpor remotenya, walaupun dapat juga disetup untuk
menjadi daemon sehingga tidak membutuhkan SSH. Dalam kasus-kasus
tertentu rsync juga dapat digunakan menggantikan HTTP client (seperti
wget)
sintaks dasarnya
1
| rsync -av PATHSUMBER/ PATHTUJUAN/ |
Menghapus berkas di /tujuan/ yang tidak ada di /sumber/ gunakan:
1
| rsync -av --delete /PATHSUMBER/ /PATHTUJUAN/ |
Jika penghapusan hanya boleh setelah penyalinan sukses:
1
| rsync -av --delete --delete-after /PATHSUMBER/ /PATHTUJUAN/ |
jika ada file yang tidak ingin di copy
1
| rsync -av --exclude 'namafile.txt' /PATHSUMBER/ /PATHTUJUAN/ |
Untuk transfer lokal ke lokal
1
| rsync -av -P PATHSUMBER PATHTUJUAN |
Untuk transfer lokal ke remote melalui ssh
1
| rsync -e ssh -av -P -z PATHSUMBER USER@HOST:PATHTUJUAN |
Untuk transfer remote ke lokal melalui ssh, cukup kebalikan perintah sebelumnya:
1
| rsync -e ssh -av -P -z USER@HOST:PATHSUMBER PATHTUJUAN |
a: (archive) adalah untuk mensinkronkan segala sesuatu, termasuk file/direktori secara rekursif dan metadata (seperti tanggal, kepemilikan, permission) dan file-file spesial seperti link simbolik
v: (verbose) memperlihatkan ke layar nama-nama file yang sedang ditransfer
z : (zip) membuat rsync mengkompresi data yang ditransfer
P: selain memperlihatkan ke layar nama-nama file yang sedang ditransfer juga menampilkan progres/persentasi saat sebuah file sedang ditransfer.
–version : melihat versi rsync
Jika kita menggunakan rsync dalam skrip noninteraktif, bisa jadi output yang dihasilkan terlalu banyak. Maka dalam kasus tersebut kita dapat menghilangkan opsi -v dan -P.
Akhiran garis miring
Keberadaan garis miring di akhir path sumber berarti menghindari pembentukan level direktori tambahan
misalnya
rsync -av /home/user/tempatnya/ /home/userhasil/backup/ maka file hasil akan tercopy di /home/userhasil/backup/ tapi jika garis miring tidak ditambah diakhir skrip sumber akibatnya terjadi pembuatan direktory misalnya rsync -av /home/user/tempatnya /home/userhasil/backup/ maka akan terbentuk file hasil akan tercopy di /home/userhasil/backup/tempatnya (terbentuk direktori bernama tempatnya yang berisi file file hasil sinkronisasi)
Keunggulan Rsync :
Hemat bandwidth dan Mendukung Resume.
Jika di sisi penerima, file yang ingin dikirimkan sudah ada, tapi belum
tentu sama (misalnya ukurannya lebih kecil/besar atau terdapat
perbedaan karena versinya lebih lama), maka rsync dapat melakukan
serangkaian pengecekan perbandingan checksum terhadap blok-blok dalam
file di kedua sisi, untuk meminimalisasi jumlah data yang harus
ditransfer. Algoritma ini disebut algoritma rsync. Bahkan sebetulnya
rsync bermula dari sebuah paper yang menjelaskan algoritma ini.Jadi,
misalnya Anda memiliki 2 buah versi file berukuran kurang lebih 100MB di
dua tempat, dengan rsync Anda mungkin Anda hanya membutuhkan transfer
data sebesar 50MB, 10MB, atau bahkan di bawah 1MB untuk menyamakan kedua
buah versi file ini, bergantung pada seberapa mirip kedua file tersebut
sebelumnya.Atau, misalnya Anda sedang mentransfer file besar lalu putus
di tengah jalan. Anda dapat menjalankan kembali rsync dan rsync akan
melanjutkan kembali transfer dari posisi putus dan memastikan hasil
akhirnya nanti sama.
Cepat. Rsync cepat salah
satunya karena algoritma rsync yang disebutkan di atas. Selain itu rsync
dapat melakukan kompresi data saat transfer. Dibandingkan FTP pun rsync
lebih cepat karena dapat melakukan pipelining, sementara transfer
menggunakan FTP boros koneksi TCP/IP untuk setiap file yang ditransfer.
Ini akan semakin kentara untuk tree berisi file kecil-kecil yang
jumlahnya banyak (misalnya file-file website yang umumnya berisi banyak
file HTML dan gambar), di mana rsync dapat beberapa kali hingga belasan
kali lebih cepat dari FTP.
Fleksibel. Rsync tidak
hanya bisa mentransfer file tunggal, tapi juga direktori dan tree secara
rekursif. Anda bisa memilih untuk menghapus file/direktori yang sudah
tidak ada dari sisi pengirim tapi masih ada di sisi penerima. Anda juga
bisa memilih untuk melakukan proses sinkronisasi metadata file seperti
permission, kepemilikan, tanggal, ACL, dll. Rsync dapat menangani link
simbolik, hardlink, device, dll. Selain opsi tersebut, masih banyak opsi
lainnya, termasuk yang sering juga dijumpai di tool lain seperti tar,
cp, dll.
Keterbatasan rsync
Meskipun merupakan swiss-army knife dalam urusan transfer dan sinkronisasi tree, namun rsync tidaklah sempurna. Dua kelemahan utama rsync adalah sifat sinkronisasi yang 1 arah dan lambat jika ukuran tree sudah terlalu besar.Hanya 1 arah. Sinkronisasi rsync hanya bersifat satu arah, dari pengirim (P1) ke penerima (P2). Jika misalnya baik tree di P1 maupun di P2 berubah secara independen oleh pihak ketiga, lalu P1 dan P2 ingin bertukar perubahan secara 2 arah, maka rsync tidak dapat digunakan. Ada opsi -u untuk melewati file-file di P2 yang lebih baru daripada P1, Anda bisa menggunakan opsi ini pada kasus-kasus tertentu, tapi secara umum, untuk melakukan sinkronisasi 2 arah, sebaiknya digunakan tool lain seperti unison (atau mungkin Anda butuh tool version control seperti subversion atau git).
Lambat untuk tree superbesar. Cara kerja rsync adalah dengan mula-mula membangun daftar file lengkap baik di sisi pengirim maupun penerima untuk kemudian dibandingkan. Untuk tree yang sudah amat besar proses ini akan memakan waktu dan juga memori amat besar. Misalnya direktori backup lokal di beberapa server shared hosting di tempat kerja saya yang isinya lebih dari 20 juta file, karena berisi histori backup menggunakan hardlink. Meng-rsync tree ini sekaligus membuat proses rsync memakan memori lebih dari 2-3GB untuk menyusun daftar file, sehingga menghabiskan memori dan mengganggu proses lain.
Kebutuhan memori dalam pembangunan daftar file lengkap di awal proses rsync ini juga membuat para penyedia situs mirror agak enggan menyediakan layanan via rsync. Atau setidaknya membatasi jumlah koneksi simultan rsync, misalnya hanya 1-5.
Diharapkan revisi program dan/atau algoritma rsync berikutnya dapat membuat inovasi dalam hal sinkronisasi tree superbesar, misalnya dengan membentuk daftar file secara paralel atau sambil jalan.