Restic adalah program backup open-source yang modern, cepat, dan aman, ditulis menggunakan bahasa pemrograman Go. Restic menjadi solusi backup yang fleksibel karena mendukung berbagai layanan cloud maupun penyimpanan lokal tanpa konfigurasi yang rumit.
Fitur Utama Restic:
-
Keamanan dan Enkripsi Restic mengenkripsi seluruh data secara lokal menggunakan AES-256 dalam mode counter serta autentikasi Poly1305-AES sebelum data dikirim ke media penyimpanan. Dengan pendekatan ini, data tetap aman dan tidak dapat dibaca oleh pihak lain, termasuk administrator server penyimpanan, apabila terjadi kebocoran data atau akses tidak sah ke backend penyimpanan.
-
Deduplikasi dan Backup Incremental Restic menggunakan metode content-defined chunking untuk memecah file menjadi bagian-bagian kecil (blob).
- Deduplikasi: Jika file atau bagian file yang sama sudah pernah dibackup sebelumnya, Restic tidak akan menyimpannya kembali sehingga penggunaan ruang penyimpanan menjadi lebih efisien.
- Incremental Backup: Hanya data baru atau data yang berubah yang akan ditransfer pada proses backup berikutnya. Hal ini membuat proses backup jauh lebih cepat dibandingkan full backup.
-
Dukungan Backend Penyimpanan yang Luas Restic mendukung berbagai jenis backend penyimpanan sebagai repository backup, seperti:
- Penyimpanan lokal
- SFTP
- Amazon S3 / MinIO
- Berbagai backend lain menggunakan rclone
-
Manajemen Snapshot Setiap proses backup akan menghasilkan sebuah snapshot yang dapat dilacak, diberi tag, dan dipulihkan secara individual.
-
Verifikasi dan Retensi Backup Restic menyediakan perintah
restic checkuntuk memverifikasi integritas repository dan memastikan data dapat dipulihkan dengan baik. Selain itu, pengguna dapat mengatur kebijakan retensi backup menggunakan perintahrestic forgetdanrestic prune.
Instalasi #
Restic dapat diinstal melalui package manager sistem operasi atau dengan mengunduh binary resmi dari GitHub.
Debian/Ubuntu #
sudo apt install resticRHEL/Rocky/AlmaLinux #
sudo dnf install resticBinary Resmi #
Unduh binary terbaru melalui GitHub:
Setelah diunduh, ekstrak file dan pindahkan binary ke direktori /usr/local/bin.
Backup dan Restore Data #
Inisialisasi Repository #
Buat direktori untuk menyimpan backup, misalnya backup-repo, kemudian inisialisasi repository Restic.
mkdir -p /path/to/backup-repo
restic init -r /path/to/backup-repoRestic akan meminta password untuk enkripsi repository. Simpan password tersebut dengan aman karena repository tidak dapat diakses kembali apabila password hilang.
enter password for new repository:
enter password again:
created restic repository 356f054845 at backup_sql/
Please note that knowledge of your password is required to access
the repository. Losing your password means that your data is
irrecoverably lost.Backup Data #
Misalnya ingin membackup seluruh data pada direktori /home/user/public_html/file_upload, gunakan perintah berikut:
restic -r /path/to/backup-repo backup /home/user/public_html/file_upload--exclude untuk mengabaikan file atau direktori tertentu, misalnya: --exclude node_modules
Setiap kali backup dijalankan, Restic akan membuat snapshot baru dengan ID unik. Karena Restic menggunakan mekanisme incremental backup, proses backup berikutnya akan berjalan lebih cepat dan lebih hemat ruang penyimpanan.
Menampilkan Snapshot #
Gunakan perintah berikut untuk melihat daftar snapshot yang tersedia:
restic -r /path/to/backup-repo snapshotsAnda juga dapat menggunakan perintah diff untuk membandingkan dua snapshot dan melihat perubahan file yang ditambahkan, dihapus, atau dimodifikasi.
restic -r /path/to/backup-repo diff 7457d80e 963d4de3Restore Data #
Untuk mengembalikan data dari snapshot tertentu, gunakan perintah berikut:
restic -r /path/to/backup-repo restore latest --target /path/to/restore/locationlatest dengan ID snapshot tertentu apabila ingin memulihkan versi backup yang spesifik.
Anda juga dapat mengembalikan file tertentu dari sebuah snapshot:
restic -r /path/to/backup-repo restore 7457d80e --target ~/mydata --include file.jsonMount Repository #
Restic memungkinkan repository dimount sebagai filesystem biasa sehingga Anda dapat menelusuri isi backup tanpa melakukan proses restore penuh.
mkdir -p /mnt/restic-mount
restic -r /path/to/backup-repo mount /mnt/restic-mountSetelah proses mount berhasil, isi backup dapat diakses melalui direktori:
/mnt/restic-mount/snapshotsDengan metode ini, Anda dapat menyalin file tertentu secara manual langsung dari repository backup.
Menghapus Snapshot #
Gunakan perintah restic forget untuk menghapus snapshot tertentu:
restic -r /path/to/backup-repo forget 963d4de3Setelah itu, jalankan restic prune untuk membersihkan data yang sudah tidak lagi direferensikan oleh snapshot mana pun.
restic -r /path/to/backup-repo pruneIncluding Files #
Restic menyediakan beberapa metode untuk menentukan file atau direktori yang akan dibackup.
1. --files-from
#
Opsi ini digunakan untuk membaca daftar pola (glob pattern) dari sebuah file.
restic -r /path/to/backup-repo backup --files-from /tmp/glob-patternFungsi:
Memerintahkan Restic untuk membaca daftar pola dari file /tmp/glob-pattern dan memasukkan file atau direktori yang cocok ke dalam backup.
Contoh isi /tmp/glob-pattern:
/home/user/*.pdf
/var/log/**/*.log
/etc/**/config*2. --files-from-raw
#
Opsi ini digunakan untuk membaca daftar path absolut secara langsung tanpa interpretasi pola glob.
restic -r /path/to/backup-repo backup --files-from-raw /tmp/generated-listFungsi: Sangat berguna untuk path yang mengandung karakter spesial, spasi, atau karakter lain yang berpotensi disalahartikan sebagai pola glob.
Contoh isi /tmp/generated-list:
/home/user/dokumen penting.pdf
/tmp/file dengan [spasi].txt
/opt/aplikasi/data.dbTag pada Backup #
Memberikan tag pada snapshot sangat disarankan untuk mempermudah pengelolaan, filtering, dan penerapan kebijakan retensi backup.
Contoh Penggunaan Tag #
# Backup harian
restic -r /path/to/backup-repo backup \
--tag daily \
/home/user/public_html/file_upload
# Backup mingguan (misalnya setiap Senin)
restic -r /path/to/backup-repo backup \
--tag weekly \
/home/user/public_html/file_upload
# Backup bulanan (misalnya setiap tanggal 1)
restic -r /path/to/backup-repo backup \
--tag monthly \
/home/user/public_html/file_uploadMenampilkan Snapshot Berdasarkan Tag #
Gunakan perintah berikut untuk melihat snapshot dengan tag tertentu:
restic -r /path/to/backup-repo snapshots --tag dailyMenghapus Snapshot Lama Berdasarkan Kebijakan Retensi #
Contoh berikut akan:
- menyimpan 7 backup harian,
- 4 backup mingguan,
- 3 backup bulanan,
- dan 2 backup tahunan.
Snapshot di luar kebijakan tersebut akan dihapus.
restic -r /path/to/backup-repo forget \
--tag daily \
--keep-daily 7 \
--keep-weekly 4 \
--keep-monthly 3 \
--keep-yearly 2 \
--prunePenggunaan opsi --prune akan langsung membersihkan data yang sudah tidak lagi direferensikan setelah proses forget selesai.
Skrip Otomatisasi #
Berikut contoh skrip sederhana untuk menjalankan backup harian beserta rotasi snapshot otomatis menggunakan Restic.
#!/usr/bin/env bash
set -euo pipefail
# Konfigurasi repository
RESTIC_REPOSITORY="/path/to/backup-repo"
# Jalankan backup dengan tag daily
restic -r "${RESTIC_REPOSITORY}" backup \
--tag daily \
--files-from /tmp/glob-pattern \
--files-from-raw /tmp/generated-list \
/tmp/some_additional_file
echo "Backup harian berhasil."
# Terapkan kebijakan retensi snapshot
restic -r "${RESTIC_REPOSITORY}" forget \
--tag daily \
--keep-daily 7 \
--keep-weekly 4 \
--keep-monthly 3 \
--prune
echo "Retensi snapshot berhasil diterapkan."