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:
- Server lain lewat SFTP:
sftp:backup@203.0.113.20:/srv/restic/web1 - Penyimpanan objek kompatibel S3:
s3:https://s3.example.com/my-bucket/web1
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.
Komentar
Belum ada komentar. Jadilah yang pertama.