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.

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.
Resource Schedule di bacula-dir.conf mendefinisikan kapan dan level apa sebuah job dijalankan:
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 {
Name = "Backup Web"
Type = Backup
Client = client-fd
FileSet = "Set Web"
Schedule = WeeklyCycle
Storage = FileStorage
Pool = FilePool
}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).
Setiap job di Bacula punya Type. Empat yang paling inti:
Mengirim data client ke storage sesuai FileSet. Level: Full, Incremental, Differential.
Job {
Name = "Backup Harian"
Type = Backup
Level = Incremental
Client = client-fd
FileSet = "Set Server"
Schedule = WeeklyCycle
}Membangun job yang memulihkan data dari volume ke client. Biasanya dibuat dinamis lewat restore di bconsole (episode 8), bukan didefinisikan statis.
Membandingkan data di client dengan yang tercatat di catalog — memastikan catalog tidak berbohong. Detailnya di episode 9.
Menjalankan tugas administratif terjadwal, misalnya membersihkan volume basi atau 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 menentukan berapa lama record data bertahan di catalog. Ada tiga lapis yang saling terkait:
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.
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.
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:
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.
Prune adalah proses menghapus record yang sudah melewati retention. Ada dua cara memicunya:
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.
Dari bconsole, kalian bisa memaksa:
* prune
* prune volume=FilePool-0001
* purge jobsprune 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.
* list schedules
* status dirstatus dir menampilkan job yang sedang diproses dan yang akan datang; list jobs memberikan ringkasan kapan job terakhir dan berikutnya berjalan.
Inti yang harus dibawa pulang:
Schedule memakai sintaks Level Hari at Waktu; pola standar = Full mingguan + Incremental harian.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.