Backup data server dan personal

Saya sudah pernah mengalami masalah kehilangan data: komputer dicuri (waktu jaman kuliah), harddisk rusak, server cloud yang harddisknya rusak. Saya juga pernah memiliki masalah dengan account google, jadi saya tidak pernah percaya 100% dengan layanan cloud.

Saya pernah menulis tentang pentingnya backup untuk solusi ransomware. Di tulisan ini isinya lebih teknis, tentang berbagai software yang saya pakai untuk backup saat ini (rsync, rclone, borg backup, syncthing, seafile dan git).

NAS saat ini (Sudah saya bahas di posting ini)

Inspirasi membuat tulisan ini adalah karena salah satu dedicated server yang saya pakai harddisknya tiba-tiba rusak. Saya sudah menduga hal ini suatu saat akan terjadi karena 4 tahun yang lalu saya mendapatkan servernya dengan harga promo, dan saya cek umur harddisknya sudah cukup tua ketika menerima server tersebut.

Sebagai catatan: servernya hanya saya pakai untuk kegiatan pentest karena penyedia jasanya tidak memfilter paket dan tidak memberi warning jika ada kegiatan scanning dari server di sana. Saya pernah mencoba beberapa hosting yang akan langsung mematikan server dan mengemail saya, memberi tahu bahwa host Anda mungkin kena malware dan mencoba menyerang host lain (padahal ini scanning). Karena itu saya tidak keberatan jika data server ini hilang, tapi bayangkan jika ini terjadi di server Anda.

Pesan dari customer service

Backup yang baik

Dengan memiliki backup, kita berharap data kita aman. Jadi sebaiknya:

  • backup tidak hanya di satu tempat. Bagaimana jika Anda kehilangan akses ke satu tempat itu
  • backup memiliki history, jadi kita seharusnya bisa mengakses backup dari hari sebelumnya atau seminggu sebelumnya. Ini sangat penting jika komputer kena ransomware, karena jika sistem backup hanya menyalin versi terakhir, maka versi yang terenkripsi ransomware yang justru dibackup
  • backup harus dilakukan otomatis, karena biasanya akan lupa jika harus manual
  • backup tidak memakan banyak space (ada fitur deduplikasi dan kompresi). Ini berhubungan dengan history: jika kita menyimpan file yang tidak berubah, jangan menyimpan duplikat file
  • backup tidak memakai bandwidth besar. Jika proses backup memakai bandwidth besar, kemungkinan data belum terbackup akan semakin besar (karena butuh waktu lama untuk membackup data)
  • backup untuk data penting dienkrip
  • backup perlu bisa diverifikasi (tidak ada yang bisa sembarangan mengubah backup, dan kita bisa tahu jika backup ternyata rusak/corrupt).

Sayangnya tidak ada satu solusi backup yang ideal (menurut saya) jadi sering kali beberapa solusi perlu dipakai.

Umur Harddisk

Meski sekarang SSD/NVME sudah cukup lazim, tapi backup data besar biasanya tetap dilakukan di harddisk. Harddisk ini suatu saat akan gagal/rusak baik parsial ataupun total. Sebaiknya gunakan tool untuk memeriksa status SMART harddisk berkala. Di Linux saya memakai smartmontools yang bisa secara otomatis memberi peringatan jika harddisk akan gagal.

Contoh peringatan yang pernah saya terima

Jika menggunakan server dedicated (bukan virtual server/VPS), cek umur harddisk dengan smartctl (lihat berapa jam masa online harddisk tersebut). Jika ingin memilih harddisk mana yang akan dibeli, Backblaze (layanan penyedia backup online) membuat statistik harddisk dan umurnya dari pengalaman mereka.

RAID bukanlah metode backup

Memakai RAID bukanlah solusi backup. RAID (redundant array of inexpensive disk) adalah cara untuk memakai banyak disk (harddisk/SSD) agar terlihat seperti 1 disk. Untuk RAID level 0, tujuannya adalah supaya beberapa disk terlihat jadi 1 disk besar. Untuk RAID Level 1/2/dst, akan menduplikasi data, supaya jika ada disk yang rusak, maka masih bisa direcover.

RAID (level 1 ke atas) akan membantu jika ada masalah dengan disk. Jika masalahnya adalah: kebakaran, atau ada error di power supply sehingga semua komponen komputer rusak, maka RAID sama sekali tidak membantu.

Kasus ketika salah satu harddisk RAID mati

Karena sifatnya menduplikasi data secara realtime, jika ada data terhapus, atau tertimpa, maka akan tertimpa di semua disk. Tapi saya sangat menyarankan agar Anda memakai RAID untuk menyimpan backup secara lokal. Sudah beberapa kali saya mengalami satu harddisk error dan perlu membeli harddisk baru. Saya biasanya mengganti semua harddisk dalam RAID array jika ada satu yang error, karena kemungkinan harddisk yang lain akan segera menyusul error juga.

rsync dan rdiff-backup

Untuk sinkronisasi data sederhana dari server ke server, saya memakai rsync. Rsync bisa menyalin data dengan cepat dan hanya mengirimkan file yang berubah saja (tidak memakai bandwidth besar).

Rsync ini hanya bisa dari host ke host yang memakai rsync (tidak bisa misalnya dari komputer ke google drive). Rsync juga tidak memiliki fitur history, walau bisa diakali dengan menggunakan hard link.

rdiff-backup dibuat dengan memakai protokol rsync dan bisa memiliki history. Tapi kelemahannya: rdiff-backup ini lambat, dan juga memiliki batasan seperti rsync (host ke host, dan keduanya perlu software rdiff-backup). Saya akhirnya tidak lagi memakai ini karena prosesnya sangat lambat dibandingkan dengan borg backup.

rsync dan rdiff-backup juga tidak memiliki fitur deduplikasi, jadi kalau ada n file yang isinya sama akan disimpan n kali. Kelebihan rsync adalah: sangat sederhana, hanya menyalin file dari asal ke tujuan. Proses menyalin file bisa menggunakan enkripsi dan kompresi, tapi hasil salinan di tujuan hanyalah file biasa yang sama persis dengan di komputer sumber data.

rclone

rclone dapat dipakai untuk menyalin data dari “manapun” ke “manapun”. Ini termasuk juga dari: lokal ke berbagai layanan cloud , dari cloud ke lokal, dan cloud ke cloud. Layanan cloud dan remote server yang didukung juga sangat banyak: Google drive, One drive, Dropbox, Amazon S3 (dan semua layanan cloud yang kompatibel dengan protokol S3), FTP, bahkan google photos.

Rclone tidak memiliki fitur kompresi, enkripsi dsb. Tool ini biasanya menjadi jembatan backup lokal ke layanan remote. Tool ini juga sangat praktis, karena kita bisa menamai tujuan (misalnya “remotebackup”) dan mengeset tujuan itu ke satu layanan cloud, dan jika kita pindah layanan, maka kita cukup mengedit konfigurasi “remotebackup”, dan tidak perlu mengubah skrip yang sudah kita buat.

Borg backup

Borg backup bisa digunakan untuk membuat backup lokal dan remote (via SSH). Kelebihan borg adalah: memiliki fitur kompresi, enkripsi dan deduplikasi. Tentunya jika data dienkripsi dan dikompresi, maka kemungkinan recovery jika terjadi error cukup kecil (walau borg punya fitur repair).

Data 264GB hanya butuh disk 21 GB dengan borg

Untuk membuat backup dengan borg, kita perlu membuat dulu repository backup. Setelah itu kita bisa melakukan operasi terhadap repository tersebut (menyalin file ke repository, melihat isi repository, extract file, dsb). Bisa dibayangkan bahwa repository borg ini seperti sebuah file ZIP, dan kita bisa menambah file ke dalamnya.

Sebuah repository bisa diset enkripsi, autentikasi dan kompresinya. Kita bisa juga mematikan kompresi dan hanya memakai autentikasi, untuk memastikan backup tidak diubah oleh orang lain.

Kita bisa menggabungkan borgbackup dengan rclone supaya data di repository borg bisa dikirimkan ke layanan cloud yang tidak didukung oleh borg

Syncthing

Syncthing merupakan aplikasi sinkronisasi peer to peer. Artinya ini tidak butuh server. Ini bisa dipakai misalnya untuk sinkronisasi folder di laptop dan desktop tanpa butuh server. Sangat praktis untuk kerja di laptop agar tersinkronisasi dengan desktop. Masalah dengan syncthing adalah: kedua device harus menyala agar proses backup bisa dilakukan.

Syncthing

Apa kelebihannya jika dibandingkan memakai Dropbox/Google Drive/One Drive? kita tidak perlu membayar berapapun kapasitas yang kita pakai dan hanya dibatasi oleh kapasitas harddisk kita. Layanan ini juga sifatnya private, jadi data tidak bisa diakses oleh penyedia layanan.

Dibandingkan solusi backup lain, Syncthing ini perlu dikonfigurasi dengan seksama. Misalnya apakah sinkronisasi dilakukan dua arah atau searah. Konfigurasi juga agak rumit jika melibatkan banyak device.

Salah satu layanan backup cloud yang saya pakai adalah backblaze. Ini akan membackup seluruh isi komputer (semua harddisk di komputer saat ini), kita membayar per komputer, tidak peduli sebesar apapun data di komputer tersebut. Saya hanya membayar layanan ini untuk Desktop PC saya. Dengan Syncthing, data dari laptop bisa otomatis dicopy ke desktop dan akan ikut terbackup ke backblaze.

Seafile

Berbeda dengan Syncthing yang tidak butuh server, SeaFile butuh server (mirip seperti Dropbox). Ini cocok untuk menggantikan Dropbox atau layanan sejenis dengan memakai server kita sendiri.

Tampilan Seafile

Jika butuh lebih dari sekedar sinkronisasi file, Nextcloud bisa dipakai. Nextcloud memiliki fitur seperti: kalender, contacts, dsb. Saya sendiri tidak memakai fitur-fitur ini, jadi lebih memilih Seafile. Saya khawatir justru dengan banyaknya fitur di Nextcloud malah bisa membuat masalah baru.

Git

Git adalah tools standard yang dipakai para programmer. Ini biasanya dipakai untuk managemen versi source code, tapi berbagai pekerjaan yang sebagian besar hanya butuh file teks biasa bisa dibackup dengan git. Sebenarnya git juga bisa mendukung file biner (image, video, dsb), tapi jika filenya besar dan banyak, maka penyimpanannya tidak efisien (walau memakai plugin seperti git-fat atau git-lfs).

Solusi Saya Saat Ini

Untuk backup data server, saya memakai kombinasi:

  • borg backup untuk membuat backup
  • rsync untuk membuat salinan ke server remote dari borg backup
  • rclone untuk membuat salinan dari borg backup ke Google Drive (enterprise, unlimited storage, ini yang resmi dari Google, bukan account abal-abal yang dijual di berbagai tempat)

Dan untuk di PC:

  • Syncthing untuk sinkronisasi laptop ke desktop
  • Onedrive + Google Photos untuk backup photo
  • Dropbox (dibutuhkan untuk beberapa pekerjaan)
  • Seafile untuk sebagian data saya
  • Backblaze untuk membackup seluruh harddisk PC

Masalah backup cloud: saya memakai beberapa untuk redundansi. Sedangkan syncthing dan seafile saya pakai untuk dua hal berbeda: syncthing untuk hal-hal personal dan Seafile untuk pekerjaan security. Sebenarnya bisa saja keduanya memakai Seafile/syncthing, tapi lebih mudah bagi saya untuk memisahkan backup dengan memakai tool yang berbeda sehingga risiko file tercampur akan lebih kecil.

Penutup

Bagi saya, data adalah sesuatu yang sangat penting, karena memang tuntutan pekerjaan. Jika saya kehilangan data, saya akan kehilangan uang dan juga waktu. Jadi bagi saya data adalah salah satu harta yang perlu saya jaga.

Perlu dicatat juga: apa yang saya tuliskan di sini bukanlah sesuatu yang lengkap dan terbaik. Beberapa orang memilih teknologi lain untuk backup, atau memakai filesystem ZFS/btrfs yang mendukung kompresi dan deduplikasi. Sebenarnya saya sudah mencobanya (misalnya pernah saya sebut ketika memakai FreeBSD di posting tahun 2019), tapi karena berbagai alasan, saya masih belum memakainya untuk sehari-hari.

Tips tambahan: jika memang memiliki waktu dan kemampuan, sebaiknya mensetup server NAS sendiri. Atau jika ingin memakai NAS komersial, jangan dihubungkan ke internet. Ada kasus di mana NAS dari western digital yang sudah tidak disupport lagi, tapi memiliki bug, hasilnya: data user dihapus oleh hacker. Suatu hari NAS merk apapun tidak akan diupdate lagi softwarenya, tapi jika kita memakai server standard (misalnya dengan Linux/FreeBSD), kita bisa selalu mengupgrade softwarenya.

Untuk Anda yang merasa memiliki data penting, backuplah data Anda.

Satu tanggapan pada “Backup data server dan personal”

  1. Dan aku kepikirnya back up data itu cukup ke USB aja. Ha….ha…. amatiran.

Tinggalkan Balasan

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.