Berbagai cara saya coba untuk melakukannya dengan benar namun tidak ada
satupun yang membuktikan cara yang efektif, sampai akhirnya saya
menemukan sebuah cara yang mungkin cukup jarang orang melakukannya
dengan ini untuk urusan transfer file biasa. Entahlah, pada awalnya saya
hanya tau bahwa rsync adalah
salah satu perintah linux yang diidentikan dengan mirroring file pada
server (CMIIW). Setelah menemukan beberapa referensi untuk dipelajari,
pada artikel ini saya akan sedikit membagikan knowledge saya mengenai cara cepat mentransfer atau mengcopy file menggunakan rsync di linux kepada anda.
[ Rsync adalah . . . ]
Rsync adalah tool untuk melakukan transfer atau sinkronisasi file atau
tree (struktur direktori beserta semua isinya) secara satu arah, baik
transfer lokal (di pc yang sama) maupun remote (jaringan). Fungsi rsync
mirip dengan tools seperti scp, mv, cp, ftp client. Rsync
biasanya digabungkan dengan SSH sebagai metode transfer remotenya,
walaupun dapat juga diatur untuk menjadi daemon sehingga tidak
memerlukan SSH. Untuk kasus-kasus tertentu rsync juga dapat digunakan
menggantikan HTTP Client (seperti wget).
[ Kenapa harus rsync . . . ? ]
Jika pertanyaan ini yang ada dibenak anda jawabannya adalah, pertama kecepatan,
rsync dapat melakukan kompresi data saat transfer. Dibandingkan dengan
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, dimana rsync dapat beberapa kali hingga belasan
kali lebih cepat dibandingkan FTP maupun SCP.
Kedua, jika metode ini dilakukan dalam jaringan internet maka irit bandwidth.
jika dii sisi penerima file yang ingin dikirimkan sudah ada, tapi belum
tentu sama (misalnya ukurannya lebih kecil atau lebih 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 meminimalisir jumlah data yang
harus di transfer. Algoritma ini disebut algoritma rsync. Bahkan
sebetulnya rsync berawal dari sebuah paper yang menjelaskan algoritma
ini. Jadi, misalnya anda memiliki 2 buah versi file berukuran kurang
lebih 500 MB di dua tempat, dengan rsync anda mungkin hanya membutuhkan
transfer data sebesar 50 MB, 10 MB atau bahkan dibawah 50, itu
tergantung seberapa berbedanya file dari kedua sisi.
Ketiga, dibandingkan dengan metode lain rsync jauh lebih fleksibel.
Rsync tidak hanya bisa mentransfer file tunggal, tapi juga direktori
beserta sub direktori dan beserta seluruh file yang berada disana. Anda
bisa memilih untuk menghapus file/direktori yang sudah tidak ada dari
sisi pengirim tapi masih ada di sisi penerima, anda bisa memilih untuk
mensinkronisasi juga metadata file seperti permission, owner, date
created, ACL, dll. Rsync dapat menangani link simbolik, hardlink,
device, dll. Dan ada banyak options lainnya, termasuk yang sering
dijumpai di tool lain seperti tar, cp, dll.
[ Cara penggunaan ]
Pada
umumnya perintah-perintah ini yang sering digunakan. Untuk transfer
lokal ke lokal (di pc yang sama) bisa dengan melakukan perintah ini :
# rsync -av -P /path/sumber /path/tujuan
Untuk transfer lokal ke remote :
# rsync -e ssh -av -P -z /path/sumber user@host:/path/tujuan
Untuk transfer remote ke lokal :
# rsync -e ssh -av -P -z user@host:/path/sumber /path/tujuan
Keterangan :
Parameter -a (archive)
adalah untuk mensinkronkan segala sesuatu, termasuk file / direktori
secara rekursif dan metada dan file-file spesial seperti link simbolik.
Umumnya ini yang kita mau, tapi dalam kasus-kasus tertentu dimana anda
tidak ingin rekursif atau tidak ingin mensinkronkan salah satu dari
tanggal atau owner atau yang lain, parameter ini dapat dihilangkan dan
diganti dengan parameter lain seperti -r, -g, -o.
Parameter -v
(verbose) membuat rsync memperlihatkan ke layar nama-nama file yang
sedang ditransfer. Parameter ini membuat rsync lebih verbose lagi, yaitu
menampilkan juga proses transfer. Jika menggunakan rsync dalam script
non interaktif bisa jadi output yang dihasilkan terlalu banyak, maka
dalam kasus tersebut kita dapat menghilangkan parameter ini dan -P.
Parameter -z
(compress) membuat rsync mengkompress data yang akan ditransfer. Inilah
sebabnya saya menganggap ini irit bandwidth. Untuk transfer remote,
gunakan parameter lain, kecuali jika anda berada di internet yang amat
cepat bahkan lebih cepat dari bandwidth harddisk (misalnya gigabit
ethernet).
[ Akhiran garis miring ]
Ini benar-benar perlu saya ingatkan kepada anda yang menggunakan rsync, karena
seringkali menjebak dan membuat bingung, rsync membedakan keberadaan garis miring penutup dalam
spesifikasi path.
Garis miring diakhir path sumber berarti menghindari pembentukan level direktori tambahan.
Saya rasa sudah cukup untuk penjelasannya, jika anda ingin bertanya silahkan posting dikomentar. Semoga bermanfaat untuk anda,
Semoga bermanfaat,
Salam penguin! :)
# rsync -av /home/apocalypsix/data/debian /backup/Maka hasilnya adlaah /home/apocalypsix/data/debian karena path sumber tidak diakhiri garis miring. Tapi jika kita menambahkan garis miring :
# rsync -av /home/apocalypsix/data/debian/ /backup/maka isi dari direktori debian-lah yang akan tersalin ke /backup/ (kemungkinan ini bukan hal yang Anda inginkan, karena direktori /backup/ mungkin saja berisi hal-hal lain). Jika Anda ingin mengganti nama debian di path tujuan, maka sintaks berikut ini yang benar:
# rsync -av /home/apocalypsix/data/debian/ /backup/mirror-debian
Saya rasa sudah cukup untuk penjelasannya, jika anda ingin bertanya silahkan posting dikomentar. Semoga bermanfaat untuk anda,
Semoga bermanfaat,
Salam penguin! :)