−25%

yıllık Windows ödemesinde, 31 Ekim'e kadar. Paketlere git

EQVPS

restic ile VPS yedekleme (şifreli, sunucu dışında)

restic ile şifreli ve tekilleştirilmiş VPS yedekleri: S3 uyumlu depolamada veya başka bir sunucuda repository, systemd zamanlayıcı, saklama kuralları ve geri yükleme testi.

Herkesin yedeği vardır, ta ki birini geri yüklemeye çalışana kadar. Klasör boş çıkar, cron görevi mart ayında ölmüştür ya da arşiv az önce bozulan diskin üzerindedir. restic bunların çoğunu çözer: sizin tarafınızda şifreler, her veri parçasını bir kez saklar ve tek bir dosyayı geri yüklemeyi tüm sunucuyu yedeklemek kadar kolaylaştırır.

İşte Ubuntu veya Debian üzerinde gerçekten güveneceğimiz bir kurulum.

1. restic'i kurun

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

Dağıtım paketleri geride kalır; self-update güncel sürümü indirir.

2. Repository için bir yer seçin

Repository, koruduğunuz sunucuda durmamalıdır. İki yaygın seçenek:

3. Kimlik bilgilerini saklayın

Zamanlayıcı ve kabuğunuz aynı ayarları kullansın diye her şeyi yalnızca root'un okuyabildiği tek bir dosyada tutun:

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

Şimdi /root/.restic-pass içeriğini şifre yöneticinize kopyalayın. O olmadan yedekler çözülemez — ne sizin ne de başka birinin tarafından.

4. Başlatın ve ilk yedeği alın

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

Yolları verilerinizin gerçekten bulunduğu yerlere göre ayarlayın. Docker volume'ları /var/lib/docker/volumes altındadır; uygulama verileri çoğunlukla /srv veya /opt içindedir.

5. Veritabanları: önce döküm, sonra yedek

Çalışan bir veritabanının ham dosyalarını yedeklemeyin. Yedekten hemen önce döküm alın:

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

/var/backups/db dizinini yedek yollarına ekleyin. PostgreSQL rehberimizde dökümler hakkında daha fazlası var.

6. systemd ile zamanlayın

Burada zamanlayıcı cron'dan iyidir: journal'a log yazar ve sunucu o saatte kapalıysa çalıştırmayı sonradan telafi eder.

# /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 7 günlük, 4 haftalık ve 6 aylık snapshot tutar ve gerisini siler. Bir veritabanı döküm adımınız varsa onu bir ExecStartPre= satırına koyun.

7. Gerçekten bir şey geri yükleyin

"Yedeğimiz var" sözünü gerçeğe dönüştüren adım budur. Bir dizini geçici bir klasöre geri alın ve inceleyin:

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

Bunu şimdi bir kez, sonra birkaç ayda bir yapın. restic check repository yapısını doğrular; geri yükleme ise verinin gerçekten orada olduğunu kanıtlar.

restic ve Managed Backups

Birbirleriyle yarışmazlar. Managed Backups her gün tüm sunucunun bir geri yükleme noktasını alır ve bunu panelden geri alırsınız — kötü giden bir güncellemeden sonraki hızlı çözüm. Aylık $2'dır ve her yıllık plana ücretsiz dahildir. restic ise kontrol ettiğiniz depolamada dosya düzeyinde, sunucu dışı kopyalar verir; sorun geçen salı silinen bir dosya olduğunda ya da tamamen altyapımızın dışında bir kopya istediğinizde bu önemlidir.

Hassas veri saklıyorsanız bunu tam disk şifreleme ile birleştirin ya da kendi yedek hedefinizi çalıştırmak için şifreli depolama kullanım senaryosuna göz atın. Çoğu küçük sunucu ve yedek görevleri için bir Micro plan yeterlidir.

SSS

restic şifresini kaybedersem ne olur?

Yedekler sonsuza dek gider. restic her şeyi istemci tarafında şifreler ve kurtarma anahtarı yoktur. Şifreyi yalnızca yedeklediğiniz sunucuda değil, bir şifre yöneticisinde saklayın.

Repository nerede durmalı?

Sunucunun kendisi dışında her yerde: S3 uyumlu nesne depolama, SFTP üzerinden başka bir VPS ya da evdeki bir makine. Aynı diskteki bir yedek o diskle birlikte ölür.

restic ile veritabanını nasıl yedeklerim?

Önce döküm alın ve dökümü yedekleyin — PostgreSQL için 'pg_dump -Fc', MySQL için 'mysqldump --single-transaction'. Çalışan bir veritabanının dosyalarını kopyalamak, başlamayan bir yedek verebilir.

Yedekler ne kadar yer kaplar?

Beklediğinizden az. restic dosyaları parçalara böler ve her parçayı bir kez saklar; bu yüzden çoğunlukla değişmeyen bir sunucunun günlük snapshot'ları yalnızca değişen veriyi ekler.

Managed Backups'a hâlâ ihtiyacım var mı?

Farklı sorunları çözerler. Managed Backups, panelden geri alabileceğiniz günlük tam sunucu geri yükleme noktaları sunar. restic ise kontrolü sizde olan, dosya düzeyinde, sunucu dışı kopyalar verir. Birçok kişi ikisini birlikte kullanır.

Yorumlar

Henüz yorum yok. İlk olun.

Bir yorum bırakın

Yorumlar görünmeden önce denetlenir.