Belajar Bacula - Schedule & Job Types
Episode 7 of 23

Belajar Bacula - Schedule & Job Types

Episode ini mengajarkan penjadwalan Bacula dengan resource Schedule (Full mingguan, Incremental harian), empat tipe job utama (Backup, Restore, Verify, Admin), serta tiga lapis retention — File, Job, dan Volume — beserta mekanisme auto-prune yang menjaga catalog tetap ramping.

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

Pendahuluan

Di episode 6 kita mengelola media. Tapi backup yang dijalankan manual setiap malam bukanlah backup enterprise — ia adalah beban. Di episode 7 kita membuat Bacula bekerja sendiri: menjadwalkan job lewat resource Schedule, memahami tipe job, dan mencegah data lama menumpuk dengan retention tiga lapis. Pola standar industri yang kita bangun: full backup mingguan + incremental harian — menyeimbangkan ukuran media, waktu restore, dan usaha administratif.

Schedule

Sintaks Dasar

Resource Schedule di bacula-dir.conf mendefinisikan kapan dan level apa sebuah job dijalankan:

Schedule full mingguan + incremental harian
Schedule {
  Name = WeeklyCycle
  Run = Full Mon at 22:00
  Run = Incremental Tue-Sun at 22:00
}

Sintaks baris Run terdiri dari level, hari, dan waktu — misal Full Mon at 22:00, Incremental Tue-Sun at 22:00, Full 1st sun at 22:00 (Minggu pertama bulan), atau Differential Sat at 23:00.

Job tinggal menunjuk schedule-nya:

Job memakai schedule
Job {
  Name = "Backup Web"
  Type = Backup
  Client = client-fd
  FileSet = "Set Web"
  Schedule = WeeklyCycle
  Storage = FileStorage
  Pool = FilePool
}

Perilaku Level Pertama

Aturan penting: jika level belum pernah dijalankan untuk client ini, Bacula akan selalu memulai dengan Full terlepas dari schedule. Jadi job incremental pertama yang berjalan tanpa full sebelumnya otomatis menjadi full. Ini mencegah incremental tanpa basis yang mustahil di-restore.

Note

Jadwalkan waktu di luar jam kerja dan beri jeda antar job yang memakai storage sama. Dua job memakai satu tape/device secara bersamaan akan saling menunggu — bukan error, tapi memperlambat semuanya (episode 20).

Job Types

Setiap job di Bacula punya Type. Empat yang paling inti:

Backup

Mengirim data client ke storage sesuai FileSet. Level: Full, Incremental, Differential.

Job backup
Job {
  Name = "Backup Harian"
  Type = Backup
  Level = Incremental
  Client = client-fd
  FileSet = "Set Server"
  Schedule = WeeklyCycle
}

Restore

Membangun job yang memulihkan data dari volume ke client. Biasanya dibuat dinamis lewat restore di bconsole (episode 8), bukan didefinisikan statis.

Verify

Membandingkan data di client dengan yang tercatat di catalog — memastikan catalog tidak berbohong. Detailnya di episode 9.

Admin

Menjalankan tugas administratif terjadwal, misalnya membersihkan volume basi atau backup catalog:

Job admin untuk backup catalog
Job {
  Name = "Backup Catalog"
  Type = Backup
  Level = Full
  Client = bacula-fd
  FileSet = "Catalog"
  Schedule = "WeeklyCycleAfterBackup"
  Storage = FileStorage
  Pool = FilePool
}

Selain itu ada tipe lain seperti Migration, Copy, Consolidation, dan System — yang dipakai untuk skenario lanjutan yang kita sentuh di fase berikutnya.

Retention Tiga Lapis

Retention menentukan berapa lama record data bertahan di catalog. Ada tiga lapis yang saling terkait:

File Retention

Berapa lama metadata file (record per file) disimpan di catalog setelah job selesai. Jika file retention habis, record file dihapus — tapi job dan volumenya tetap ada. Konsekuensi: kalian tidak bisa lagi restore per-file dari job tersebut, karena Bacula tidak tahu file apa saja yang ada di dalamnya.

Job Retention

Berapa lama record job (informasi satu sesi backup) dipertahankan. Setelah habis, job hilang dari list jobs dan media yang dipakainya bisa dianggap untuk di-recycle.

Volume Retention

Berapa lama volume media dipertahankan sebelum bisa di-recycle (jika Recycle = yes). Ini lapis terluar dan paling lama.

Aturan hubungannya wajib dihafal — dan konsisten di Pool:

Contoh tiga lapis retention
Pool {
  Name = FilePool
  Pool Type = Backup
  Recycle = yes
  AutoPrune = yes
  Volume Retention = 30 days
  Job Retention = 14 days
  File Retention = 7 days
}

Jika File Retention lebih panjang dari Job Retention, metadata file tersimpan lebih lama dari record job — berguna untuk forensik tapi boros ruang catalog. Atur sesuai kebutuhan restore kalian.

Auto-Prune

Prune adalah proses menghapus record yang sudah melewati retention. Ada dua cara memicunya:

Otomatis

Dengan AutoPrune = yes di Pool, Bacula menjalankan prune saat job dijalankan — record basi dibersihkan tanpa campur tangan admin. Ini pengaturan default yang disarankan untuk production.

Manual

Dari bconsole, kalian bisa memaksa:

Prune dan purge manual
* prune
* prune volume=FilePool-0001
* purge jobs

prune menghapus record yang basi; purge menghapus record secara paksa tanpa peduli retention. purge sangat berbahaya — ia menghapus record tapi tidak selalu data di media. Kita bahas cara menggunakannya dengan aman di episode 9.

Warning

Prune dan purge menghapus record di catalog, bukan otomatis menghapus data di volume. Volume yang record-nya dipurge tapi data fisiknya masih ada akan tetap terisi — dan dengan Recycle = yes data itu akan ditimpa backup baru. Pastikan retention mencerminkan kebutuhan nyata sebelum mengaktifkan recycle.

Menjalankan dan Memverifikasi Jadwal

Lihat job terjadwal
* list schedules
* status dir

status dir menampilkan job yang sedang diproses dan yang akan datang; list jobs memberikan ringkasan kapan job terakhir dan berikutnya berjalan.

Penutup

Inti yang harus dibawa pulang:

  • Schedule memakai sintaks Level Hari at Waktu; pola standar = Full mingguan + Incremental harian.
  • Level pertama selalu Full, apa pun jadwalnya.
  • Job types: Backup, Restore, Verify, Admin (plus lanjutan seperti Copy/Migration).
  • Retention tiga lapis: File <= Job <= Volume, diatur per Pool; AutoPrune menjaga catalog ramping.

Di episode 8 selanjutnya kita akan menguasai restore workflow — memulihkan data dari backup lewat perintah restore di bconsole, memilih client/FileSet/waktu, mengarahkan hasil ke lokasi asli atau alternatif dengan where= dan replace=, serta praktik restore drill ke direktori pengujian. Inilah kemampuan paling penting: memastikan data kalian benar-benar bisa kembali.