OffshoreVps
Keamanan8 Okt 20268 menit bacaOleh tim OffshoreVps

Cara Mencadangkan VPS dengan restic: Otomatis dan Terenkripsi

Aturan 3-2-1, apa yang perlu dicadangkan, penyiapan restic terenkripsi, skrip cron, dan alasan Anda harus menguji pemulihan. Snapshot dari penyedia saja tidak cukup.

VPS bisa gagal, terhapus karena kesalahan, atau rusak oleh pembaruan yang buruk. Satu-satunya perlindungan adalah backup yang sudah Anda uji. Panduan ini menyiapkan backup terenkripsi yang sederhana dan otomatis dengan alat gratis.

Jendela terminal di VPS yang menampilkan perintah untuk mencadangkan VPS, diawali dengan “sudo apt install -y restic”
Jenis perintah yang akan Anda jalankan di server dalam panduan ini.

Aturan 3-2-1

Simpan 3 salinan data Anda, pada 2 jenis penyimpanan yang berbeda, dengan 1 salinan di tempat lain sama sekali. Untuk VPS, itu biasanya berarti data aktif, snapshot lokal, dan salinan off-site di penyedia lain atau di negara lain.

Apa yang perlu dicadangkan

  • File situs web dan unggahan (/var/www).
  • Database, di-dump ke file lebih dulu (jangan pernah menyalin file database yang sedang berjalan).
  • Konfigurasi: /etc/nginx, perubahan di /etc, file dan volume Docker Compose.
  • Cron job dan skrip khusus apa pun.

Anda bisa menginstal ulang sistem operasi dalam hitungan menit. Yang tidak bisa diinstal ulang adalah data dan pengaturan Anda.

Gunakan restic untuk backup terenkripsi dan terdeduplikasi

sudo apt install -y restic
export RESTIC_REPOSITORY=sftp:backup@other-server:/backups/vps1
export RESTIC_PASSWORD_FILE=/root/.restic-pass
restic init

Buat file password dengan string acak yang panjang dan simpan salinannya di tempat aman. Jika Anda kehilangan password ini, backup tidak dapat dibuka. restic juga mendukung penyimpanan yang kompatibel dengan S3, sehingga Anda bisa mengirim ke object store mana pun.

Langkah-langkah panduan ini secara berurutan: 1. Aturan 3-2-1; 2. Apa yang dicadangkan; 3. Gunakan restic untuk cadangan terenkripsi dan terdeduplikasi; 4. Skrip cadangan; 5. Uji pemulihan; 6. Snapshot membantu, tetapi tidak cukup
Langkah-langkah dalam panduan ini, secara berurutan.

Skrip backup

#!/bin/bash
set -e
export RESTIC_REPOSITORY=sftp:backup@other-server:/backups/vps1
export RESTIC_PASSWORD_FILE=/root/.restic-pass

mysqldump --single-transaction --all-databases | gzip > /var/backups/db.sql.gz
restic backup /var/www /etc /var/backups/db.sql.gz
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune

Simpan sebagai /usr/local/bin/backup.sh, jadikan dapat dieksekusi, lalu jadwalkan:

sudo chmod +x /usr/local/bin/backup.sh
echo "30 3 * * * root /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1" | sudo tee /etc/cron.d/backup

Uji pemulihan

restic snapshots
restic restore latest --target /tmp/restore-test --include /etc/nginx

Backup yang belum pernah dipulihkan hanyalah harapan. Uji sekali per kuartal, dan selalu setelah mengubah apa pun.

Snapshot membantu, tetapi tidak cukup

Snapshot dari penyedia cepat dan praktis sebelum perubahan berisiko, tetapi berada di penyedia dan akun yang sama. Anggap itu sebagai kemudahan dan simpan salinan off-site independen.