Belajar Restic (program backup modern berbasis Go dengan deduplication content-defined dan enkripsi AES-256 bawaan) dari dasar hingga production-grade: pre-requisites skill & setup environment, sejarah latar belakang & mengapa membutuhkannya, konsep dasar & arsitektur utama, inisialisasi repository, backup pertama & snapshot, restore & file extract, deduplication storage & compression, backend local SFTP S3 & REST server, forget & prune retention policy, otomasi backup dengan cron/systemd, backup database & aplikasi konsisten, check & integrity verification, restic di server/container, enkripsi & kunci, keamanan backend & transport, hardening & multi-tenant, troubleshooting & recovery, restic 0.19.x & fitur terbaru, performance tuning & large data, ekosistem rest-server SDK & wrapper, monitoring & alerting, roadmap & community, hingga ekosistem alternatif & refleksi akhir dengan total 23 episode.
Sebelum menyentuh perintah `restic backup`, kalian perlu menguasai dasar-dasar Linux CLI, konsep filesystem & permission, serta akses storage lokal/remote/object. Di episode ini kalian juga menginstall binary restic 0.19.1, menyiapkan direktori repository, dan memverifikasi seluruh environment siap untuk mengikuti series ini.

Episode ini menceritakan asal-usul restic: proyek komunitas yang lahir tahun 2016 sebagai jawaban atas keterbatasan tar dan rsync. Kalian juga memahami mengapa restic disebut "backups done right" — deduplication global, enkripsi AES-256 bawaan, snapshot immutable, dan dukungan banyak backend dari S3 sampai REST server.

Repository, snapshot, dan content-defined chunking adalah tiga pilar arsitektur restic. Episode ini membedah struktur direktori repository, peran tiap komponen (binary, backend, key repository, dan command), serta alur data dari file sumber hingga blob terenkripsi di storage.

Inisialisasi repository adalah pintu masuk pertama ke restic: `restic init` untuk backend lokal dan S3, pemakaian `--repository-file` untuk menyimpan URL repo di file, serta pengelolaan password repository yang aman via env, gpg, atau secret manager agar data kalian tidak terkunci selamanya.

Episode ini menjalankan backup pertama: `restic backup` dengan tag dan pola exclude agar data yang dibackup bersih dan terorganisir. Kalian juga belajar membaca hasil backup melalui `restic snapshots`, `restic stats`, dan `restic ls` untuk memastikan data benar-benar tersimpan.

Restore adalah ujian sesungguhnya sebuah backup. Episode ini mengajarkan cara mengembalikan seluruh snapshot dengan `restic restore`, menarik satu file ke stdout dengan `restic dump`, serta restore sebagian menggunakan `--include`/`--exclude` tanpa menimpa direktori lain.

Efisiensi restic bersumber dari content-defined chunking: backup berulang hanya menyimpan delta sehingga storage tetap ramping. Episode ini membedah mekanisme deduplication, membaca angka sebenarnya lewat `restic stats --mode raw-data`, serta peran kompresi zstd (`--compression auto`) yang menjadi default sejak restic 0.14.

Restic menulis ke banyak target storage lewat satu lapisan backend abstrak. Episode ini membandingkan backend lokal, SFTP, S3-compatible (MinIO/AWS/GCS/Azure/B2), dan REST server — lengkap dengan URL repository, konfigurasi credential, serta pengaturan batas upload dan download untuk bandwidth yang terkontrol.

Snapshot yang menumpuk tanpa batas akan menghabiskan storage. Episode ini mengajarkan retention policy: `restic forget` dengan policy keep-daily, keep-weekly, keep-monthly, serta `--keep-within` dan `--keep-tag`, lalu `restic prune` untuk menghapus blob yang tidak terpakai — semua berlandaskan target RPO dan RTO kalian.

Backup manual tidak akan bertahan lama di produksi. Episode ini merangkai script backup+forget+prune yang aman dengan `set -euo pipefail`, lock file, dan logging, lalu menjadwalkannya lewat cron dan systemd timer, termasuk verifikasi hasil backup di akhir tiap proses.
