Episode ini membedah cara kerja Borg: repository sebagai tempat penyimpanan data dan index, archive sebagai snapshot dataset per waktu, chunker content-defined sebagai kunci deduplication, serta peran binary borg, lokasi repo, dan key. Kalian juga mendapat peta subcommand yang menjadi alur hidup backup.

Di episode 1 kita tahu mengapa Borg ada dan mengapa dedup penting. Sekarang waktunya memahami bagaimana Borg bekerja di bawah kap: apa itu repository, apa itu archive, dan bagaimana chunker content-defined menghasilkan deduplication yang efisien. Pemahaman ini bukan sekadar teori — saat backup kalian bermasalah di episode 16, kalian akan kembali ke bab ini.
Repository adalah lokasi penyimpanan (lokal atau remote via SSH) yang menampung seluruh data Borg. Secara internal, repository berisi:
borg check di episode 12.Archive adalah "snapshot" satu dataset pada satu waktu — hasil dari satu perintah borg create. Satu repository bisa berisi ratusan archive dari hari, minggu, bahkan tahun yang berbeda. Setiap archive menyimpan metadata file lengkap (nama, permission, timestamp, daftar chunk) dan referensi ke chunk data.
Kuncinya: dua archive yang berisi file sama akan berbagi chunk yang sama. Menambahkan satu file ke archive kedua tidak menyimpan data file itu lagi — itulah sumber efisiensi Borg.
Untuk memecah file menjadi chunk, Borg memakai content-defined chunking (CDC) dengan algoritma buzhash. Karena batas chunk ditentukan oleh pola isi, bukan posisi byte, data yang bergeser tidak membuat semua chunk berubah. Default-nya rata-rata chunk sekitar 2 MiB, dan parameter ini bisa dituning untuk dataset tertentu (episode 18).
borgborg adalah satu binary Python berisi banyak subcommand. Seluruh operasi — dari membuat repo hingga memeriksa integritas — dilakukan lewat subcommand ini. Tidak ada daemon, tidak ada database eksternal; cukup binary dan filesystem.
Repo ditulis sebagai path lokal (/backup/borg) atau remote (user@backup-host:/backup/borg). Borg mendeteksi pola user@host: dan otomatis memakai SSH — termasuk memanggil borg serve di sisi server, seperti yang kita bangun di episode 11.
Enkripsi Borg bergantung pada key. Ada dua gaya utama: repokey (key disimpan di dalam repository, dilindungi passphrase) dan keyfile (key di file terpisah). Tanpa key atau passphrase yang benar, repository tidak terbaca — bahkan oleh pemilik data aslinya. Detail lengkap di episode 7.
borg init # buat repository
borg create # buat archive (backup)
borg list # daftar archive di repo
borg info # detail archive/repo
borg extract # restore dari archive
borg mount # mount archive via FUSE
borg prune # hapus archive lama (retention)
borg compact # reclaim ruang segmen
borg check # verifikasi integritas repoUrutan peta ini adalah alur hidup backup: init → create (diulang berkali-kali) → prune + compact → check. Kita ikuti alur itu persis dari episode 3 sampai 12.
borg createKonsekuensi penting dari langkah ke-5: menghapus archive tidak langsung mengosongkan ruang. Chunk yang tidak lagi direferensikan baru benar-benar dibuang saat borg compact dijalankan — kita bahas di episode 8.
Tip
Karena index bisa dibangun ulang dari segmen, "kehilangan index" bukan akhir dunia — borg check akan merekonstruksinya. Yang benar-benar bernilai adalah segmen data dan key enkripsi. Jaga keduanya, dan backup kalian selamat.
borg, lokasi repo (lokal/SSH), key, dan subcommand.init → create → prune/compact → check.borg compact.Di episode 3 kita menjalankan perintah nyata pertama: inisialisasi repository dengan borg init, memilih mode enkripsi repokey vs keyfile vs authenticated, dan mengatur BORG_REPO serta BORG_PASSPHRASE/BORG_PASSCOMMAND dengan benar.