Cara Backup Seluruh Server Linux dengan Restic
Panduan restic untuk backup seluruh server Linux: repositori terenkripsi, pengecualian folder, backup database, jadwal otomatis, dan restore.
Jawaban singkat
Restic membackup server Linux ke repositori terenkripsi dengan deduplikasi. Alurnya: buat repositori di server atau storage lain, backup / dengan --one-file-system dan daftar pengecualian, dump database terpisah, jadwalkan lewat systemd timer, lalu rapikan dengan forget --prune dan uji restore.
Daftar isi
- Sebelum mulai, apa yang perlu disiapkan?
- Langkah memasang dan menjalankan restic
- 1. Pasang restic
- 2. Simpan kata sandi dan alamat repositori di file
- 3. Buat repositori
- 4. Tentukan folder yang dikecualikan
- 5. Jalankan backup pertama
- 6. Backup database dengan benar
- 7. Atur masa simpan snapshot
- 8. Jadwalkan dengan systemd timer
- 9. Coba restore
- Ringkasan perintah penting
- Pertanyaan yang sering diajukan
- Checklist singkat
Mau backup seluruh isi server Linux dengan satu alat yang gratis, terenkripsi, dan hemat ruang? Restic adalah salah satu pilihan paling praktis. Ia berupa satu program, menyimpan data dalam repositori yang dienkripsi sejak di sisi server, dan hanya mengirim bagian file yang berubah, sehingga backup harian berikutnya jauh lebih cepat dari yang pertama.
Panduan ini memakai Ubuntu atau Debian, tetapi perintah restic-nya sama di AlmaLinux dan Rocky Linux. Per 6 November 2026, rilis terbaru restic di halaman GitHub resminya adalah versi 0.19.1.
Sebelum mulai, apa yang perlu disiapkan?
- Server yang akan dibackup dengan akses root atau sudo.
- Tempat menyimpan repositori di luar server itu. Bisa server lain lewat SFTP, atau object storage yang kompatibel S3. Backup di disk yang sama tidak menolong saat disk rusak atau server diretas.
- Kata sandi repositori yang panjang. Tanpa kata sandi ini, data tidak bisa dibuka sama sekali, termasuk olehmu.
Langkah memasang dan menjalankan restic
1. Pasang restic
sudo apt update
sudo apt install restic
restic version
Di AlmaLinux atau Rocky Linux, paket restic tersedia lewat repositori EPEL. Paket distro kadang tertinggal beberapa versi. Kalau butuh versi terbaru, unduh binary resmi dari halaman rilis restic di GitHub.
2. Simpan kata sandi dan alamat repositori di file
Supaya bisa dijadwalkan tanpa mengetik, simpan pengaturan di folder yang hanya bisa dibaca root:
sudo mkdir -p /etc/restic
sudo sh -c 'openssl rand -base64 32 > /etc/restic/password'
sudo chmod 600 /etc/restic/password
Lalu buat /etc/restic/env:
RESTIC_REPOSITORY=sftp:backup@10.0.0.20:/srv/restic/web01
RESTIC_PASSWORD_FILE=/etc/restic/password
Contoh di atas memakai server backup lewat SFTP, dengan login kunci SSH untuk user backup. Untuk S3, formatnya berbeda dan dibahas di cara simpan backup server ke object storage S3.
3. Buat repositori
sudo -i
set -a; . /etc/restic/env; set +a
restic init
Perintah set -a membuat variabel dari file env otomatis diekspor ke perintah restic. Repositori yang baru dibuat sudah terenkripsi. Kenapa ini penting dijelaskan di enkripsi backup.
4. Tentukan folder yang dikecualikan
Buat /etc/restic/excludes:
/tmp/*
/var/tmp/*
/var/cache/*
/var/lib/docker/overlay2
/swapfile
/home/*/.cache
Folder virtual seperti /proc, /sys, /dev, dan /run tidak perlu ditulis bila kamu memakai --one-file-system, karena opsi itu membuat restic tidak masuk ke filesystem lain, termasuk filesystem virtual dan disk yang di-mount ke /mnt atau /media. Kalau ada disk data terpisah, misalnya /data, sebutkan sebagai sumber tambahan.
5. Jalankan backup pertama
restic backup / --one-file-system \
--exclude-file=/etc/restic/excludes \
--exclude-caches --tag full
Backup pertama paling lama karena semua data dikirim. Setelah itu, restic hanya mengirim potongan data yang baru. Lihat hasilnya dengan restic snapshots.
6. Backup database dengan benar
Menyalin file mentah database yang sedang berjalan bisa menghasilkan backup tidak konsisten. Lebih aman, dump database langsung ke restic:
restic backup --stdin-filename semua-db.sql \
--stdin-from-command -- mysqldump --single-transaction --all-databases
Kalau mysqldump gagal (kode keluar bukan nol), restic membatalkan backup dan tidak membuat snapshot, jadi kamu tidak tertipu oleh dump yang setengah jadi. Untuk PostgreSQL, ganti perintahnya dengan pg_dumpall yang dijalankan sebagai user postgres. Bila user root belum bisa login ke MySQL tanpa kata sandi, simpan kredensialnya di /root/.my.cnf dengan izin 600.
7. Atur masa simpan snapshot
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
Perintah ini menyimpan 7 snapshot harian, 4 mingguan, dan 6 bulanan terakhir, lalu menghapus data yang tidak dipakai lagi. Sesuaikan angkanya dengan kebutuhan dan ruang yang tersedia.
8. Jadwalkan dengan systemd timer
Buat skrip /usr/local/bin/restic-backup.sh:
#!/bin/bash
set -euo pipefail
set -a; . /etc/restic/env; set +a
restic backup / --one-file-system --exclude-file=/etc/restic/excludes --exclude-caches --tag full
restic backup --stdin-filename semua-db.sql --stdin-from-command -- mysqldump --single-transaction --all-databases
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
restic check
Beri izin eksekusi dengan chmod 700. Lalu buat /etc/systemd/system/restic-backup.service:
[Unit]
Description=Backup restic
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/restic-backup.sh
Dan /etc/systemd/system/restic-backup.timer:
[Unit]
Description=Jadwal backup restic harian
[Timer]
OnCalendar=*-*-* 02:00:00
RandomizedDelaySec=15m
Persistent=true
[Install]
WantedBy=timers.target
Aktifkan dengan systemctl daemon-reload lalu systemctl enable --now restic-backup.timer. Hasil setiap jalannya bisa dibaca dengan journalctl -u restic-backup.service. Kalau lebih nyaman memakai cron, caranya ada di cara membuat cron job di Linux.
9. Coba restore
Ambil satu folder dari snapshot terbaru ke lokasi sementara:
restic restore latest --target /root/uji-restore --include /etc/nginx
Untuk membuka-buka isi snapshot seperti folder biasa, jalankan restic mount /mnt/restic (butuh FUSE). Ingat, restic membackup file, bukan image disk. Untuk memulihkan server sepenuhnya, pasang sistem operasi baru yang sama versinya, pasang restic, lalu pulihkan folder yang diperlukan dan database dari dump. Latih prosesnya secara berkala seperti dijelaskan di uji restore backup berkala.
Ringkasan perintah penting
| Perintah | Fungsi |
|---|---|
restic init | Membuat repositori terenkripsi baru |
restic backup / --one-file-system | Membackup sistem tanpa masuk ke filesystem lain |
restic snapshots | Menampilkan daftar snapshot |
restic forget ... --prune | Menerapkan masa simpan dan membuang data lama |
restic check | Memeriksa keutuhan repositori |
restic restore latest --target DIR | Memulihkan snapshot terbaru ke folder |
Pertanyaan yang sering diajukan
Apakah restic bisa membuat image disk untuk bare-metal restore?
Tidak. Restic membackup file dan folder. Untuk pemulihan penuh, pasang sistem operasi baru lalu pulihkan file dan database dari repositori.
Berapa besar ruang yang dibutuhkan repositori?
Tergantung data dan seberapa sering berubah. Berkat deduplikasi dan kompresi, snapshot berikutnya biasanya hanya menambah ukuran sebesar data yang berubah. Pantau dengan restic stats.
Apakah restic check perlu dijalankan setiap hari?
restic check biasa cukup ringan untuk rutin. Untuk memeriksa isi data sesungguhnya, jalankan sesekali dengan --read-data-subset, misalnya --read-data-subset=5%, karena membaca semua data memakan waktu dan bandwidth.
Bolehkah dua server memakai satu repositori yang sama?
Boleh, dan deduplikasinya ikut berlaku antar server. Namun server yang diretas bisa menghapus snapshot server lain, jadi untuk keamanan lebih baik satu repositori per server.
Checklist singkat
- Repositori ada di luar server yang dibackup.
- Kata sandi repositori tersimpan juga di luar server.
- Backup / memakai
--one-file-systemdan daftar pengecualian. - Database dibackup lewat dump, bukan file mentah.
- Timer systemd aktif dan log-nya diperiksa.
forget --prunedancheckberjalan rutin, restore diuji berkala.


