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