Episode ini membedah arsitektur Bacula: Director sebagai pengontrol job, Storage Daemon sebagai pengelola media, File Daemon sebagai agen client, dan Catalog sebagai database metadata. Kalian juga mengenal komponen bacula-dir, bacula-sd, bacula-fd, bconsole, konfigurasi di /etc/bacula/, serta peran resource Job/Client/FileSet/Pool/Schedule/Storage.

Di episode 1 kita memahami sejarah dan alasan Bacula ada. Sekarang saatnya membedah anatomi sistemnya: apa saja komponen yang hidup di sebuah deployment Bacula, bagaimana mereka berbicara satu sama lain, dan di mana konfigurasi disimpan. Tanpa peta mental ini, setiap error Failed to connect atau Authorization problem akan terasa seperti teka-teki.
Di episode 2 kita menjawab tiga pertanyaan: siapa melakukan apa, apa yang dikirim antar komponen, dan bagaimana resource di /etc/bacula/ mengikat semuanya menjadi satu kebijakan backup.
Bacula memisahkan tugas menjadi empat peran yang berjalan sebagai daemon terpisah:
+----------+ command +----------+
| bconsole| ------------->| Director|--> Catalog (DB)
+----------+ +----+-----+
| schedule/job
v
+----------+ data push +----------+
| File | ------------> | Storage |
| Daemon |<---- control--| Daemon |
+----------+ +----------+Alur backup sederhananya: Director menjadwalkan job dan memberitahu File Daemon dan Storage Daemon apa yang harus dikerjakan; File Daemon membaca file di client lalu mengirim data ke Storage Daemon; saat selesai, Director mencatat metadata ke Catalog.
Director adalah otak sistem. Ia membaca konfigurasi bacula-dir.conf, menjadwalkan job, memutuskan volume mana yang dipakai, dan mengoordinasikan seluruh proses. Director tidak pernah menyentuh data backup secara langsung — ia hanya mengirim instruksi. Jika Director mati, backup terjadwal berhenti, tetapi data yang sudah ada di media tetap aman.
Storage Daemon adalah tangan yang menyentuh media. Ia bertanggung jawab menulis dan membaca data ke device — bisa direktori di disk, tape, atau autoloader. Konfigurasinya ada di bacula-sd.conf. Setiap SD punya satu atau lebih Device resource yang mendeskripsikan media fisik dan cara mengaksesnya.
File Daemon adalah mata dan telinga di sisi client. Ia berjalan di setiap mesin yang dibackup, membaca file berdasarkan FileSet, dan mengirimkan data ke Storage Daemon atas perintah Director. Karena FD harus berjalan di mesin yang sama dengan data, setiap client — termasuk server Bacula itu sendiri — butuh FD sendiri.
Catalog adalah ingatan Bacula: database berisi metadata setiap file yang pernah dibackup (nama, ukuran, checksum, lokasi di volume), riwayat job, dan status media. Dukungan database di Community: PostgreSQL, MySQL, dan SQLite. Metadata ini yang memungkinkan bconsole melakukan restore file tunggal tanpa tahu persis di volume mana file itu berada.
Note
Catalog menyimpan metadata, bukan salinan data. Data asli berada di volume media; jika Catalog rusak, kalian masih punya data di media tapi harus melakukan catalog recovery (episode 16) agar bisa di-restore per file.
Satu instalasi Bacula menghasilkan beberapa binary:
bacula-dir — daemon Director; port default 9101.bacula-sd — daemon Storage; port default 9102.bacula-fd — daemon File; port default 9103.bconsole — konsol interaktif untuk mengendalikan Director.Ketiga daemon dan bconsole berkomunikasi menggunakan password bersama yang didefinisikan di tiap file konfigurasi — inilah sistem autentikasinya (dibahas di episode 12).
Semua konfigurasi diletakkan di direktori /etc/bacula/. Standarnya:
/etc/bacula/
├── bacula-dir.conf # Director: Job, Client, FileSet, Pool, Schedule, Catalog
├── bacula-sd.conf # Storage Daemon: Device, Storage
└── bacula-fd.conf # File Daemon: Client, DirectorBacula mengenali dua direktif utama: Director (alur ke Director) dan Director {} sebagai resource. Jangan tertukar — Director di bacula-fd.conf dan bacula-sd.conf adalah resource yang mendefinisikan siapa yang boleh terhubung ke daemon tersebut, sedangkan di bacula-dir.conf resource Director {} mendefinisikan siapa yang boleh mengakses Director.
Seluruh kebijakan backup diekspresikan lewat resource. Enam resource paling inti:
Mendefinisikan pekerjaan: client apa, FileSet apa, pool apa, schedule apa, dan job type apa.
Job {
Name = "BackupClient"
Type = Backup
Client = client-fd
FileSet = "Set Web"
Schedule = "WeeklyCycle"
Storage = FileStorage
Pool = FilePool
}Mengidentifikasi satu File Daemon yang bisa di-backup — dengan alamat dan password-nya.
Client {
Name = client-fd
Address = 10.0.0.12
FDPort = 9103
Password = "rahasia-fd"
}Mendefinisikan file apa saja yang di-backup dan aturan include/exclude-nya (episode 5).
Kumpulan volume tempat data ditulis, lengkap dengan retention dan label (episode 6).
Aturan kapan job berjalan — full mingguan, incremental harian, dst (episode 7).
Menghubungkan Director ke Storage Daemon tertentu.
Storage {
Name = FileStorage
Address = 127.0.0.1
SDPort = 9102
Password = "rahasia-sd"
Device = "FileStorage"
MediaType = File
}Saat sebuah job Backup dijalankan, urutan kerjanya kira-kira:
Rangkaian ini terjadi untuk setiap job — dan menjelaskan mengapa autentikasi antar daemon harus benar, karena ketiganya saling terhubung langsung.
Important
Ingat arah datanya: File Daemon mengirim data ke Storage Daemon, bukan Director yang menarik. Director hanya pengatur lalu lintas. Ini berarti bandwidth backup terjadi antara client dan storage — pastikan rute jaringan keduanya tidak melewati bottleneck yang tidak perlu.
Inti yang harus dibawa pulang:
/etc/bacula/: bacula-dir.conf, bacula-sd.conf, bacula-fd.conf.Di episode 3 selanjutnya kita akan menginstall Bacula 15.0.4 dan menulis konfigurasi minimal — memasang paket bacula-*, membuat database catalog, menjalankan tiga daemon, lalu memvalidasi bacula-dir.conf dengan bacula-dir -t. Inilah momen pertama sistem backup kalian benar-benar hidup!