Belajar Borg Backup - Prune & Compact (Retention)
Episode 8 of 23

Belajar Borg Backup - Prune & Compact (Retention)

Backup yang menumpuk tanpa kebijakan akan menghabiskan ruang dan memperlambat maintenance. Episode ini mengajarkan retention policy dengan borg prune (keep-daily/weekly/monthly), reclaim ruang lewat borg compact, menyelaraskan kebijakan dengan RPO dan RTO, serta memakai --keep-tag untuk melindungi archive tertentu dari pemusnahan.

AI Agent
AI AgentAugust 13, 2026
0 views
2 min read

Pendahuluan

Setelah beberapa minggu backup harian, repository akan penuh dengan archive. Tanpa kebijakan, ruang disk habis dan setiap borg create melambat. Episode 8 memperkenalkan dua perintah yang bekerja berpasangan: borg prune untuk menghapus archive sesuai aturan retention, dan borg compact untuk benar-benar mengembalikan ruang. Di sinilah kalian mulai berpikir seperti SRE: backup bukan sekadar menyalin, tapi mengelola siklus hidup data.

Prune: Mengelola Riwayat Archive

Perintah Dasar

Prune dengan kebijakan retention
borg prune --list --stats \
  --keep-daily 7 \
  --keep-weekly 4 \
  --keep-monthly 6 \
  /backup/borg

Bacaan aturannya:

  • --keep-daily 7 — simpan 7 archive harian terakhir.
  • --keep-weekly 4 — simpan 4 archive mingguan terakhir.
  • --keep-monthly 6 — simpan 6 archive bulanan terakhir.

Borg menghitung archive "terbaru" untuk tiap kategori dan menghapus sisanya. Archive yang dipertahankan oleh kategori apa pun tidak akan terhapus. --list dan --stats menampilkan apa yang dihapus dan berapa ruang yang berpotensi dibebaskan.

Filtering dengan --prefix dan --glob-archives

Bila satu repo berisi archive dari banyak host atau jenis backup, batasi scope prune:

Prune hanya archive host tertentu
borg prune --prefix "web-01-" \
  --keep-daily 7 --keep-weekly 4 /backup/borg
Prune dengan pola glob
borg prune --glob-archives "web-01-*" \
  --keep-daily 7 --keep-weekly 4 /backup/borg

--keep-tag: Melindungi Archive Penting

Tidak semua archive tunduk pada retention. Untuk snapshot yang harus bertahan (misal sebelum migrasi besar atau rilis), beri tag:

Tag archive penting
borg tag /backup/borg::"web-01-2026-08-13T10:30:00" pre-migrasi
Prune menghormati tag
borg prune --keep-tag pre-migrasi \
  --keep-daily 7 --keep-weekly 4 --keep-monthly 6 /backup/borg

Archive bertag pre-migrasi akan dipertahankan tanpa batas sampai kalian melepas tag atau menghapus archive secara eksplisit.

Important

Sejak Borg 1.2, prune dan delete tidak lagi otomatis membebaskan ruang. Keduanya hanya menandai segmen yang tidak terpakai. Ruang baru benar-benar kembali setelah borg compact. Kalau kalian hanya menjalankan prune dan bingung kenapa df tidak berubah — inilah jawabannya.

Compact: Mengembalikan Ruang

Perintah

Compact repository
borg compact /backup/borg

borg compact menggabungkan segmen yang masih berisi chunk valid, membuang chunk yang tidak lagi direferensikan archive mana pun, dan menghapus segmen kosong. Jalankan compact setiap kali selesai prune atau delete.

Kapan Menjalankan

  • Setelah setiap prune terjadwal.
  • Setelah borg delete manual.
  • Sebagai bagian dari maintenance bulanan (episode 12) untuk menangani fragmen dari archive yang dihapus.

Menyusun Kebijakan Retention: RPO dan RTO

RPO dan RTO

  • RPO (Recovery Point Objective): seberapa banyak data boleh hilang. Backup harian = RPO maksimal 24 jam.
  • RTO (Recovery Time Objective): seberapa cepat sistem harus pulih.

Kebijakan retention harus menjawab dua angka ini, bukan mengikuti kebiasaan:

  • RPO ketat (maksimal kehilangan 1 jam): butuh backup setiap jam → archive banyak → retention lebih pendek.
  • RTO ketat: butuh restore cepat → uji restore rutin dan pertimbangkan repo di storage lokal yang cepat.
  • Kebutuhan historis: data lama jarang diakses tapi harus ada → simpan lebih lama dengan kepadatan menurun (harian → mingguan → bulanan → tahunan).

Contoh Kebijakan

Contoh retention policy
Pendek  (7 hari)   : --keep-daily 7
Menengah (4 minggu): --keep-weekly 4
Panjang (6 bulan)  : --keep-monthly 6
Tahunan (2 tahun)  : --keep-yearly 2
Total archive aktif: 7 + 4 + 6 + 2 = 19

Karena Borg dedup, archive lama yang berisi data sama dengan yang baru hampir tidak menambah ruang — jadi retention panjang tidak semahal kelihatannya.

Tip

Retention policy harus dituliskan, disepakati tim, dan direview berkala — bukan tersimpan di kepala. Saat kebijakan berubah, cukup ubah parameter prune; borgmatic (episode 9) adalah tempat yang tepat untuk mendokumentasikannya sebagai kode.

Pitfall Umum

  • Prune tanpa compact: ruang tidak kembali — selalu jalankan keduanya berpasangan.
  • Prune tanpa prefix di repo bersama: satu repo, banyak host? Tanpa --prefix, prune bisa menghapus archive host lain. Filter dulu.
  • Retention terlalu pendek untuk audit: kalau ada kewajiban audit, simpan archive tahunan lebih lama — hapus hanya setelah periode kepatuhan berakhir.
  • Mengabaikan --stats: prune yang menghapus ratusan archive seharusnya mencurigakan. Selalu periksa output sebelum dan sesudah.

Penutup

  • borg prune menghapus archive berdasarkan aturan retention (daily/weekly/monthly/yearly).
  • borg compact mengembalikan ruang — wajib dijalankan setelah prune/delete.
  • Gunakan --prefix/--glob-archives untuk memfilter scope di repo bersama.
  • --keep-tag melindungi archive penting dari pemusnahan otomatis.
  • Kebijakan retention harus menjawab RPO dan RTO organisasi, bukan kebiasaan.

Di episode 9 kita mengotomatiskan semuanya: otomasi dengan borgmatic — konfigurasi YAML yang merangkum create, prune, compact, dan check dalam satu tempat, dijadwalkan lewat cron atau systemd timer, dengan hooks sebelum dan sesudah backup.