---
title: "Cara Backup Seluruh Server Linux dengan Restic"
description: "Panduan restic untuk backup seluruh server Linux: repositori terenkripsi, pengecualian folder, backup database, jadwal otomatis, dan restore."
url: "https://nivelva.com/insight/cara-backup-seluruh-server-linux-restic"
category: "Server \u0026 Infrastruktur"
tags: ["restic","backup","linux","server","systemd"]
author: "Theresia Candiawan"
published: "2026-11-07T02:30:00+07:00"
updated: "2026-11-07T02:30:00+07:00"
language: "id"
publisher: "Nivelva (https://nivelva.com)"
---

# Cara Backup Seluruh Server Linux dengan Restic

> **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.

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](https://nivelva.com/insight/cara-simpan-backup-server-object-storage-s3).

> **Salin kata sandinya ke tempat lain:**
>
> Simpan salinan isi `/etc/restic/password` di pengelola kata sandi atau tempat aman di luar server. Kalau server hilang beserta file itu, repositori tidak bisa dibuka dan seluruh backup tidak berguna.

### 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](https://nivelva.com/insight/enkripsi-backup-salinan-data-juga-perlu-dikunci).

### 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](https://nivelva.com/insight/cron-job-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](https://nivelva.com/insight/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-system` dan daftar pengecualian.
- Database dibackup lewat dump, bukan file mentah.
- Timer systemd aktif dan log-nya diperiksa.
- `forget --prune` dan `check` berjalan rutin, restore diuji berkala.

## Sumber

- <https://restic.readthedocs.io/en/stable/>
- <https://restic.readthedocs.io/en/stable/040_backup.html>
- <https://github.com/restic/restic/releases>

---

Diterbitkan oleh Nivelva Insight (https://nivelva.com/insight/). Artikel ini: https://nivelva.com/insight/cara-backup-seluruh-server-linux-restic
Kontak Nivelva: WhatsApp https://wa.me/6285111245007, email hello@nivelva.com
