−25%

untuk Windows tahunan, hingga 31 Okt. Lihat paket

EQVPS
Mulai

Cara mem-backup VPS dengan restic (terenkripsi, di luar server)

Backup VPS terenkripsi dan terdeduplikasi dengan restic: repositori di penyimpanan kompatibel S3 atau server lain, timer systemd, retensi, dan uji pemulihan.

Semua orang punya backup sampai mereka mencoba memulihkannya. Foldernya ternyata kosong, cron job-nya mati sejak Maret, atau arsipnya ada di disk yang sama yang baru saja rusak. restic menyelesaikan sebagian besar masalah itu: mengenkripsi di sisi Anda, menyimpan setiap potongan data sekali, dan membuat pemulihan satu file semudah mem-backup seluruh server.

Berikut penyiapan yang benar-benar kami percayai, di Ubuntu atau Debian.

1. Instal restic

apt update && apt install -y restic
restic self-update

Paket distribusi sering tertinggal; self-update menarik rilis terkini.

2. Pilih tempat untuk repositori

Repositori tidak boleh berada di server yang sedang Anda lindungi. Dua pilihan umum:

3. Simpan kredensial

Taruh semuanya di satu file yang hanya bisa dibaca root, supaya timer dan shell Anda memakai pengaturan yang sama:

cat > /root/.restic-env <<'EOF'
export RESTIC_REPOSITORY="s3:https://s3.example.com/my-bucket/web1"
export RESTIC_PASSWORD_FILE="/root/.restic-pass"
export AWS_ACCESS_KEY_ID="your-key-id"
export AWS_SECRET_ACCESS_KEY="your-secret"
EOF
openssl rand -base64 32 > /root/.restic-pass
chmod 600 /root/.restic-env /root/.restic-pass

Sekarang salin isi /root/.restic-pass ke pengelola kata sandi Anda. Tanpa itu, backup tidak bisa didekripsi — baik oleh Anda maupun orang lain.

4. Inisialisasi dan jalankan backup pertama

source /root/.restic-env
restic init
restic backup /etc /home /root /srv /var/www \
  --exclude-caches --exclude '/root/.cache'
restic snapshots

Sesuaikan path dengan lokasi data Anda yang sebenarnya. Volume Docker ada di /var/lib/docker/volumes; data aplikasi sering di /srv atau /opt.

5. Database: dump dulu, baru backup

Jangan backup file mentah database yang sedang berjalan. Buat dump tepat sebelum backup:

mkdir -p /var/backups/db
sudo -u postgres pg_dump -Fc mydb > /var/backups/db/mydb.dump

Tambahkan /var/backups/db ke path backup. Panduan PostgreSQL kami membahas dump lebih lanjut.

6. Jadwalkan dengan systemd

Di sini timer lebih baik daripada cron: ia mencatat ke journal dan mengejar jadwal yang terlewat kalau server sedang mati saat itu.

# /etc/systemd/system/restic-backup.service
[Unit]
Description=restic backup

[Service]
Type=oneshot
ExecStart=/bin/bash -c 'source /root/.restic-env && restic backup /etc /home /root /srv /var/www /var/backups/db --exclude-caches && restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune'
# /etc/systemd/system/restic-backup.timer
[Unit]
Description=Daily restic backup

[Timer]
OnCalendar=*-*-* 03:30:00
Persistent=true

[Install]
WantedBy=timers.target
systemctl daemon-reload
systemctl enable --now restic-backup.timer
systemctl list-timers restic-backup.timer

forget --prune menyimpan 7 snapshot harian, 4 mingguan, dan 6 bulanan, lalu menghapus sisanya. Kalau Anda punya langkah dump database, taruh di baris ExecStartPre=.

7. Benar-benar pulihkan sesuatu

Langkah inilah yang mengubah "kami punya backup" menjadi fakta. Tarik kembali satu direktori ke folder sementara lalu lihat isinya:

source /root/.restic-env
restic restore latest --target /tmp/restore-test --include /etc/nginx
ls -la /tmp/restore-test/etc/nginx
restic check

Lakukan sekali sekarang, lalu ulangi setiap beberapa bulan. restic check memverifikasi struktur repositori; pemulihan membuktikan datanya benar-benar ada.

restic dan Managed Backups

Keduanya tidak bersaing. Managed Backups membuat titik pemulihan harian untuk seluruh server yang bisa Anda kembalikan dari dasbor — solusi cepat setelah upgrade yang gagal. Biayanya $2 per bulan dan gratis di setiap paket tahunan. restic memberi salinan tingkat file di luar server, di penyimpanan yang Anda kendalikan — penting saat masalahnya file yang terhapus Selasa lalu, atau saat Anda ingin salinan yang sepenuhnya berada di luar infrastruktur kami.

Kalau Anda menyimpan data sensitif, padukan ini dengan enkripsi disk penuh, atau lihat kasus penggunaan penyimpanan terenkripsi untuk menjalankan tujuan backup sendiri. Paket Micro sudah cukup untuk sebagian besar server kecil beserta tugas backup-nya.

FAQ

Apa yang terjadi kalau kata sandi restic hilang?

Backup hilang selamanya. restic mengenkripsi semuanya di sisi klien dan tidak ada kunci pemulihan. Simpan kata sandinya di pengelola kata sandi, bukan hanya di server yang Anda backup.

Di mana repositori sebaiknya disimpan?

Di mana saja kecuali di server itu sendiri: penyimpanan objek kompatibel S3, VPS lain lewat SFTP, atau mesin di rumah. Backup di disk yang sama ikut mati bersama disk itu.

Bagaimana cara mem-backup database dengan restic?

Buat dump dulu lalu backup dump-nya — untuk PostgreSQL 'pg_dump -Fc', untuk MySQL 'mysqldump --single-transaction'. Menyalin file database yang sedang berjalan bisa menghasilkan backup yang tidak mau menyala.

Berapa banyak ruang yang dipakai backup?

Lebih sedikit dari dugaan Anda. restic memecah file menjadi potongan dan menyimpan setiap potongan sekali, jadi snapshot harian server yang jarang berubah hanya menambah data yang berubah.

Apakah saya masih perlu Managed Backups?

Keduanya menyelesaikan masalah yang berbeda. Managed Backups memberi titik pemulihan harian untuk seluruh server yang bisa Anda kembalikan dari dasbor. restic memberi salinan tingkat file di luar server yang Anda kendalikan. Banyak orang memakai keduanya.

Komentar

Belum ada komentar. Jadilah yang pertama.

Tinggalkan komentar

Komentar dimoderasi sebelum muncul.