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.

Sejauh ini repository kalian ada di direktori lokal. Episode ini melebarkan pilihan: di mana data kalian tinggal menentukan keandalan, biaya, dan kecepatan backup. Restic memakai satu lapisan backend abstrak — perintah tetap sama, yang berubah hanya URL repository.
Pilih backend dengan mempertimbangkan tiga hal: di mana data harus aman (off-site?), berapa biaya, dan berapa bandwidth yang tersedia.
Paling sederhana, cocok untuk laptop, NAS yang di-mount, atau disk eksternal:
restic -r /backup/restic backup /dataKelebihannya: tanpa jaringan, tanpa credential, latensi nol. Kekurangannya: bukan off-site — satu disk rusak, backup ikut hilang. Hanya boleh menjadi lapisan pertama strategi 3-2-1 (tiga salinan, dua media, satu off-site).
Backup ke server lain lewat SSH tanpa install apapun di sisi server — cukup akun shell:
restic -r sftp:user@backup.example.com:/backup/restic backup /dataSSH key dan agent dipakai otomatis oleh restic. Kelebihan: off-site tanpa software tambahan. Kekurangan: performa terbatas satu koneksi SSH, dan user SSH butuh akses tulis ke direktori tersebut.
Note
SFTP butuh sebuah user shell di server target. Bila kalian tidak ingin memberi akses shell, gunakan rest-server (dibahas di bawah) yang jalan sebagai daemon HTTP khusus.
Jenis paling populer untuk cloud: AWS S3, MinIO (self-hosted), GCS, Azure Blob, dan Backblaze B2. Semuanya berbicara protokol S3.
export AWS_ACCESS_KEY_ID=minioadmin
export AWS_SECRET_ACCESS_KEY=minioadmin
restic -r s3:https://minio.example.com/backup-bucket backup /dataexport AWS_ACCESS_KEY_ID=AKIA...
export AWS_SECRET_ACCESS_KEY=...
restic -r s3:s3.ap-southeast-1.amazonaws.com/backup-bucket backup /datas3:s3.ap-southeast-1.amazonaws.com/bucket — path style, region di subdomain.s3:https://bucket.s3.amazonaws.com/ — virtual host style untuk bucket global.s3:s3.amazonaws.com/bucket — default region us-east-1.Backend lain memakai prefix berbeda — b2:, azure:, gs:. Detailnya ada di dokumentasi resmi; prinsip konfigurasinya identik: URL + credential via env.
rest-server adalah daemon khusus yang melayani protokol HTTP(S) restic. Ini jawaban untuk backup multi-host dengan autentikasi dan kontrol akses — kita bangun lengkap di episode 12. URL-nya:
restic -r rest:https://backup.example.com/restic-repo backup /dataPerbedaan kunci dengan SFTP: rest-server tidak bisa membaca isi data (hanya mengoper blob terenkripsi), dan tiap client bisa dibatasi --append-only untuk proteksi ransomware (episode 14).
Semua kredensial backend dibaca dari environment — jangan taruh di command line (terlihat di ps dan history):
export AWS_ACCESS_KEY_ID=...
export AWS_SECRET_ACCESS_KEY=...
export AWS_DEFAULT_REGION=ap-southeast-1Untuk tidak membebani koneksi kantor atau jaringan rumah:
restic -r s3:... backup /data --limit-upload 4096
restic -r s3:... restore latest --target /tmp/r --limit-download 8192--limit-upload 4096 membatasi ke ~4 MiB/s; --limit-download berlaku saat restore. Pasang keduanya di script otomasi (episode 9) agar backup tidak "menelan" bandwidth jam kerja.
| Backend | Off-site? | Biaya | Performa | Kasus Pakai |
|---|---|---|---|---|
| Local | tidak | gratis | terbaik | lapisan pertama, laptop |
| SFTP | ya | sewa VPS | sedang | server pribadi tanpa app tambahan |
| S3-compatible | ya | per-GiB | tinggi | produksi cloud, MinIO self-host |
| rest-server | ya | sewa VPS | sedang | multi-host dengan autentikasi |
Prinsipnya: lokal untuk kecepatan, cloud untuk ketahanan. Strategi terbaik mengkombinasikan keduanya — backup lokal tiap jam, lalu salinan terenkripsi ke S3 tiap malam.
-r yang berubah.--limit-upload/--limit-download untuk bandwidth.Di episode 8 selanjutnya kita mengelola riwayat: forget & prune (retention policy) — menyusun restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6, menentukan policy berdasarkan RPO/RTO, memakai --keep-tag/--keep-within, dan membersihkan blob tak terpakai dengan --prune.