Belajar Bacula - FileSet & Include/Exclude
Episode 5 of 23

Belajar Bacula - FileSet & Include/Exclude

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.

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

Pendahuluan

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.

Struktur FileSet

Struktur FileSet dasar
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.
  • Blok Exclude — daftar path yang dikeluarkan dari hasil backup.

Aturan Include

Setiap File menentukan titik masuk. Menulis /var/www berarti seluruh isi di bawahnya ikut — kecuali yang dikecualikan. Beberapa praktik baik:

Beberapa titik include
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.

Wildcard dan Regex

Bacula mendukung wildcard untuk pola file dan regex untuk pola jalur. Dua opsi yang paling sering dipakai:

Wildcard

Wildcard untuk pola nama
Options {
  wild = "*.tmp"
  wild = "*.log"
}

wild = "*.log" mengecualikan semua file bernama *.log dalam direktori yang sedang di-iterate. Wildcard berlaku pada komponen nama file.

Regex

Regex untuk pola jalur
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.

Opsi exclude = yes

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:

Contoh exclude di dalam Include
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.

Opsi Lain yang Berguna

Compression

Aktifkan kompresi
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.

One FS dan Sparse

Opsi filesystem dan sparse
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.

Verifikasi Sebelum dan Sesudah

Preview dengan estimate

Preview ukuran backup
* 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.

Verifikasi Hasil dengan list files

Cek file yang terekam
* list files jobid=3

Outputnya 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.

Penutup

Inti yang harus dibawa pulang:

  • FileSet = blok Include (kandidat) + blok Exclude/opsi exclude = yes (penyaring).
  • wild untuk pola glob per komponen; regex untuk pola full path.
  • Gunakan 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.

Belajar Bacula - FileSet & Include/Exclude | Belajar Bacula