Episode ini mengajarkan penyusunan FileSet Bacula: memilih direktori yang di-backup, aturan include/exclude dengan wildcard dan regex, opsi exclude = yes, serta verifikasi hasil lewat list files jobid=... dan preview dengan estimate sebelum job dijalankan.

Di episode 4, backup pertama berjalan dengan FileSet sederhana. Tapi di dunia nyata, "backup semuanya" hampir tidak pernah benar: ada cache yang harus dilewati, direktori sementara yang membesar, dan file log yang tak berguna dipulihkan. Di episode 5 kita membuat backup menjadi presisi dengan FileSet — resource yang menjawab satu pertanyaan: file apa saja yang termasuk? Jawabannya diekspresikan lewat blok Include dan Options — dan kesalahan kecil di sini bisa berarti data penting tidak pernah di-backup.
FileSet {
Name = "Set Web"
Include {
Options {
signature = MD5
exclude = yes
}
File = /var/www
File = /etc/nginx
}
Exclude {
File = /var/www/cache
File = /var/www/.tmp
}
}Ada dua lapisan filtering, yang sering dipakai bersama: blok Exclude untuk path tetap, dan opsi exclude = yes di dalam Options untuk pola yang berlaku pada direktori tertentu.
File di dalam Include — daftar direktori/file yang masuk sebagai kandidat backup.Exclude — daftar path yang dikeluarkan dari hasil backup.Setiap File menentukan titik masuk. Menulis /var/www berarti seluruh isi di bawahnya ikut — kecuali yang dikecualikan. Beberapa praktik baik:
FileSet {
Name = "Set Server"
Include {
Options { signature = SHA1 }
File = /etc
File = /home
File = /var/lib/postgresql
}
}Include yang terlalu luas (misal / seluruh filesystem) akan membuat job lama dan volume besar. Selektiflah — pahami apa yang harus bisa dipulihkan, bukan apa yang kebetulan ada di disk.
Bacula mendukung wildcard untuk pola file dan regex untuk pola jalur. Dua opsi yang paling sering dipakai:
Options {
wild = "*.tmp"
wild = "*.log"
}wild = "*.log" mengecualikan semua file bernama *.log dalam direktori yang sedang di-iterate. Wildcard berlaku pada komponen nama file.
Options {
regex = "/var/www/[^/]+/cache/"
regex = "\.pid$"
}regex dicocokkan terhadap full path file. \.pid$ mengecualikan file yang diakhiri .pid; [^/]+/cache/ mengecualikan direktori cache di kedalaman mana pun di bawah /var/www.
Note
Perbedaan penting: wild memakai glob (*, ?, []) dan dicocokkan per komponen, sedangkan regex memakai regular expression dan dicocokkan pada keseluruhan path. Untuk pola sederhana pakai wild; untuk kontrol penuh pakai regex.
Blok Options berlaku pada semua File di dalam blok Include yang sama. Dengan exclude = yes, hasil matching dari wild/regex/File menjadi daftar yang dikecualikan, bukan di-backup. Pola umum yang membingungkan pemula:
FileSet {
Name = "Set Aplikasi"
Include {
Options {
signature = MD5
exclude = yes
}
File = /opt/myapp/cache
File = /opt/myapp/tmp
}
File = /opt/myapp
}Pendekatan ini menambahkan file path yang harus dikecualikan di dalam blok Include, yang kadang lebih mudah dibaca daripada blok Exclude terpisah. Pilih satu gaya dan konsisten.
Options {
signature = MD5
compression = GZIP
}Kompresi memperkecil volume tapi memakan CPU baik di sisi FD (kompres) maupun SD (dekompresi). Untuk data teks besar, sangat efektif; untuk file media yang sudah terkompresi, buang-buang CPU.
Options {
onefs = yes
sparse = yes
}onefs = yes mencegah Bacula keluar dari satu filesystem (penting saat include /var di mana ada mount /var/lib/docker terpisah). sparse = yes menangani file sparse secara efisien — sangat membantu untuk file disk image VM.
* estimate job="Backup Web"Bacula menghitung file sesuai FileSet dan menampilkan jumlah file dan bytes — cara termurah menemukan FileSet yang salah, misalnya tiba-tiba menghitung jutaan file cache.
* list files jobid=3Outputnya menampilkan setiap file yang berhasil dibackup. Cocokkan dengan ekspektasi: apakah /var/www/cache benar-benar tidak muncul? Apakah /etc/nginx/nginx.conf masuk? Audit cepat ini sebaiknya dilakukan setiap kali FileSet berubah.
Important
FileSet yang salah arah tidak akan terlihat dari log job — job tetap melaporkan Backup OK meskipun file penting tidak diikutkan. Selalu verifikasi dengan list files atau estimate setelah mengubah FileSet. Back up the right files, not just any files.
Inti yang harus dibawa pulang:
Include (kandidat) + blok Exclude/opsi exclude = yes (penyaring).wild untuk pola glob per komponen; regex untuk pola full path.onefs untuk membatasi lintas filesystem dan compression untuk menghemat ruang.estimate memberikan preview ukuran sebelum job berjalan.list files jobid=... adalah bukti bahwa file yang benar benar-benar di-backup.Di episode 6 selanjutnya kita akan mengelola Pool, Volume, dan Storage — bagaimana data backup dikelompokkan ke pool, ukuran volume, retention dengan Recycle dan AutoPrune, jenis device storage (File dan Tape), serta operasi label/mount untuk media. Inilah fondasi manajemen media Bacula.