Panel

3-2-1 kuralı ve restic ile şifreli sunucu yedeği

Sunucunuzdaki verileri istemci tarafında şifreleyip S3 uyumlu bir depolamaya sürümlü olarak yedeklemenin adım adım kurulumu. Zamanlama, saklama politikası ve geri dönüş testi dahil.

3-2-1 kuralı: verinin en az üç kopyası, iki farklı ortamda, bir kopyası farklı bir konumda. Bu rehberde restic ile şifreli, sürümlü ve otomatik bir yedekleme kurup ikinci ortamı oluşturuyoruz.

Neden restic

  • Veriyi istemci tarafında şifreler; depolama sağlayıcısı içeriği göremez.
  • Tekrarlanan blokları bir kez saklar; günlük yedekler az yer kaplar.
  • S3, SFTP ve yerel disk hedeflerini destekler.
  • Tek bir çalıştırılabilir dosyadır.

Kurulum

apt install restic
restic version

Depoyu hazırlayın

Erişim bilgilerini yalnızca root'un okuyabileceği bir dosyaya yazın:

install -m 600 /dev/null /root/.restic-env

Dosyanın içeriği:

export AWS_ACCESS_KEY_ID="ERISIM_ANAHTARI"
export AWS_SECRET_ACCESS_KEY="GIZLI_ANAHTAR"
export RESTIC_REPOSITORY="s3:https://s3.ornek-depolama.com/sunucu-yedek"
export RESTIC_PASSWORD_FILE="/root/.restic-parola"

Şifreleme parolasını üretin ve bir kopyasını sunucu dışında, güvenli bir yerde saklayın. Bu parola olmadan yedeklerinizi kimse açamaz; siz dahil.

openssl rand -base64 32 > /root/.restic-parola
chmod 600 /root/.restic-parola
source /root/.restic-env
restic init

İlk yedek

restic backup /etc /var/www /home --exclude-caches --exclude "/var/www/*/cache"

Veritabanlarını dosya olarak kopyalamak tutarsız yedek üretir. Önce döküm alın:

mysqldump --single-transaction --all-databases | restic backup --stdin --stdin-filename tum-veritabanlari.sql

Zamanlama

/usr/local/sbin/yedekle.sh dosyası:

#!/bin/sh
set -eu
. /root/.restic-env
mysqldump --single-transaction --all-databases | restic backup --stdin --stdin-filename tum-veritabanlari.sql --tag db
restic backup /etc /var/www /home --exclude-caches --tag dosya
restic forget --keep-daily 14 --keep-weekly 8 --keep-monthly 6 --prune
chmod 700 /usr/local/sbin/yedekle.sh
crontab -e

Cron satırı:

30 3 * * * /usr/local/sbin/yedekle.sh >> /var/log/yedekle.log 2>&1

forget komutundaki saklama politikası 14 günlük, 8 haftalık ve 6 aylık kopya tutar.

Geri dönüş testi

Test edilmemiş yedek, yedek değildir. Ayda bir şu adımları uygulayın:

restic snapshots
restic restore latest --target /tmp/geri-donus-testi --include /etc/hostname
cat /tmp/geri-donus-testi/etc/hostname
restic check --read-data-subset=5%

restic check, depodaki verinin bütünlüğünü doğrular. --read-data-subset her seferinde verinin bir kısmını gerçekten okuyarak kontrol eder.

Üçüncü kopya

Bu kurulum sunucudaki veri ve S3'teki yedek ile iki kopya sağlar. Üçüncü kopya için aynı depoyu restic copy ile farklı bir sağlayıcıya veya ofisinizdeki bir depolama birimine kopyalayabilirsiniz. Böylece tek bir sağlayıcıdaki sorun tüm yedeklerinizi etkilemez.

Bu yazıyla ilgili hizmetler

İlgili yazılar