Belajar Restic - Konsep Dasar & Arsitektur Utama
Episode 2 of 23

Belajar Restic - Konsep Dasar & Arsitektur Utama

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.

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

Pendahuluan

Di episode 1 kalian memahami mengapa restic ada. Sekarang saatnya membedah bagaimana ia bekerja. Episode ini adalah fondasi untuk seluruh series: begitu memahami repository, snapshot, dan chunking, semua perintah di episode 3–22 hanyalah variasi dari tiga konsep ini.

Arsitektur Tiga Pilar

Repository

Repository adalah kumpulan data terenkripsi yang menyimpan semua snapshot. Ia bisa berada di direktori lokal, server SFTP, bucket S3, atau rest-server. Di dalamnya, data dipecah menjadi blob-blob kecil yang terenkripsi — tidak ada yang bisa dibaca tanpa kunci.

Snapshot

Snapshot adalah state direktori (atau kumpulan direktori) pada titik waktu tertentu. Analogikan seperti foto ber-resolusi penuh: ia mencatat isi file, metadata, dan relasi antar file pada saat diambil. Snapshot tidak menyimpan salinan fisik file — ia menyimpan referensi ke blob-blob yang membentuk isi file tersebut. Inilah yang membuat snapshot restic efisien dan immutable.

Content-Defined Chunking

Agar dedup bekerja, file dipecah menjadi chunk menggunakan algoritma content-defined chunking: batas antar-chunk ditentukan oleh isi data (rolling hash), bukan posisi byte. Akibatnya:

  • File yang sama selalu menghasilkan chunk yang sama → disimpan sekali.
  • File yang sama dengan satu byte ditambahkan di awal hanya menghasilkan satu chunk baru → sisanya tetap.
  • File yang dipindahkan tetap ter-dedup karena chunk-nya identik.

Chunk kemudian di-compress, dienkripsi, dan disimpan sebagai blob di repository.

Struktur Repository

Mari intip isi repository yang sudah di-init:

Struktur repository restic
/backup/restic/
├── config
├── data/
├── index/
├── keys/
└── snapshots/
  • config — versi repository dan parameter kriptografi (contoh: version: 2).
  • data/ — blob terenkripsi, dipecah ke banyak sub-direktori.
  • index/ — katalog blob: file mana berisi blob apa.
  • keys/ — kunci terenkripsi (satu per password repository).
  • snapshots/ — metadata snapshot dalam bentuk file kecil.

Komponen Sistem

Binary restic

Program tunggal (single binary) tanpa runtime dependency — salah satu alasan restic mudah diinstall, disalin antar server, dan di-container-kan.

Backend

Lapisan penyimpanan abstrak: local, SFTP, S3-compatible, B2, Azure, GCS, dan REST server. Perintah yang sama bekerja di semua backend — hanya URL repository (-r) yang berubah. Episode 7 mengupas tuntas.

Key Repository (Password)

Password repository dipakai untuk mendekripsi kunci yang menyimpan master key. Tanpa password ini, repository mustahil diakses — karena itu penyimpanannya harus aman (episode 3 dan 13).

Command Set Inti

Command inti restic
restic init      # buat repository baru
restic backup    # simpan snapshot baru
restic restore   # kembalikan file dari snapshot
restic check     # verifikasi integritas repository
restic forget    # hapus snapshot sesuai policy
restic prune     # hapus blob yang tak terpakai

Alur Data Backup

Ketika restic backup /data dijalankan:

  1. Scan: restic membaca direktori dan membangun pohon file beserta metadata.
  2. Chunking: setiap file dipecah menjadi chunk berbasis isi.
  3. Deduplication: chunk yang sudah ada di repository dilewati.
  4. Kompresi & Enkripsi: chunk baru di-compress (zstd) lalu dienkripsi (AES-256).
  5. Indexing: blob baru dicatat di index.
  6. Snapshot: metadata pohon file + daftar blob disimpan sebagai snapshot.

Perhatikan poin 3: inilah mengapa backup kedua dan seterusnya terasa jauh lebih cepat — hanya delta yang diunggah.

Note

Backup restic bukan mirror — ia menyimpan versi. Konsekuensinya, ruang storage bertumbuh seiring riwayat snapshot, dan pengelolaannya butuh policy retention (restic forget --prune) yang dibahas di episode 8.

Penutup

  • Repository = kumpulan blob terenkripsi; snapshot = state direktori pada suatu waktu.
  • Content-defined chunking membuat dedup berbasis isi: hanya delta yang disimpan.
  • Struktur repository: config, data/, index/, keys/, snapshots/.
  • Komponen sistem: binary, backend, password/key, dan command set inti.
  • Alur backup: scan → chunking → dedup → kompresi & enkripsi → index → snapshot.

Di episode 3 selanjutnya kita mengeksekusi hal pertama di repository sungguhan: inisialisasi repositoryrestic init untuk backend lokal dan S3, pengelolaan password dengan aman, serta kesalahan-kesalahan yang harus kalian hindari sejak awal.