İçeriğe geç

GüvenlikYedekleme ve kurtarma

İşe yarayan bir yedekleme stratejisi: sunucunuz için 3-2-1

Geri yükleyebileceğiniz yedekler planlayın: 3-2-1 kuralı, neyin yedekleneceği, veritabanı dökümleri, restic ile şifreli uzak yedek ve geri yükleme testi.

  • Orta
  • 25 dk okuma
  • Güncellendi

Denendiği sistemler: Ubuntu 24.04 LTS, Ubuntu 26.04 LTS, Debian 12, Debian 13, Windows Server 2022, Windows Server 2025

Bu sayfada
  1. 3-2-1 kuralı
  2. Başlamadan önce
  3. 1. adım: Neyin yedekleneceğine karar verin
  4. 2. adım: Veritabanlarının dökümünü alın
  5. 3. adım: restic ile uzak yedek alın
  6. 4. adım: Zamanlayın
  7. 5. adım: Kuşakları tutun ve depoyu kontrol edin
  8. 6. adım: Bir geri yüklemeyi test edin
  9. Planın yedeklerini ve snapshot'larını da kullanın
  10. Windows Server
  11. Sorun giderme
  12. Sonraki adımlar

Bir yedekleme stratejisi, ona ihtiyaç duyduğunuz gün değerlendirilir. Bu rehber 3-2-1 kuralına dayanan bir plan verir, bir Linux sunucuda dosyaların ve veritabanlarının şifreli uzak kopyalarla nasıl yedekleneceğini ve bir geri yüklemenin çalıştığının nasıl kanıtlanacağını gösterir. Ardından bir Windows bölümü gelir.

3-2-1 kuralı

  • Verilerinizin 3 kopyası: canlı veri ve iki yedek.
  • 2 farklı depolama türü; böylece tek bir arıza her şeyi yok edemez.
  • Sunucudan ve platformundan uzakta 1 uzak kopya.

Birçok ekip bunu 3-2-1-1-0'a genişletir: değiştirilemeyen veya silinemeyen bir kopya (değişmez veya çevrim dışı) ve geri yükleme testlerinizde 0 hata.

Başlamadan önce

Her sistem için iki sayı yazın:

  • Ne kadar veri kaybedebilirsiniz? Sunucu şimdi çökse kaç saatlik sipariş, gönderi veya yüklemenin kaybı kabul edilebilir olur? Bu, ne sıklıkla yedek alacağınızı belirler.
  • Ne kadar hızlı geri gelmeli? Bu, yedekten geri yüklemenin yeterince hızlı olup olmadığına ya da bir yedek sunucuya ihtiyacınız olup olmadığına karar verir.

1. adım: Neyin yedekleneceğine karar verin

NeGenellikle nerede
Web sitesi ve uygulama dosyaları/var/www, /srv, /home
VeritabanlarıHam veritabanı dosyaları değil, dökümler
Yapılandırma/etc, crontab'lar, eklediğiniz systemd birimleri
E-postaSunucu posta işliyorsa posta dizinleri
Sertifikalar ve anahtarlar/etc/letsencrypt, uygulama gizli bilgileri

Çalışan bir veritabanının dosyalarını kopyalamaya güvenmeyin: tutarsız olabilirler. Önce döküm alın.

2. adım: Veritabanlarının dökümünü alın

Dökümleri, dosya yedeğinin daha sonra alacağı yerel bir klasöre yazın:

MySQL

Bash
sudo mkdir -p /var/backups/db
sudo mysqldump --all-databases --single-transaction --routines --triggers | gzip | sudo tee /var/backups/db/all.sql.gz > /dev/null

MariaDB

Bash
sudo mkdir -p /var/backups/db
sudo mariadb-dump --all-databases --single-transaction --routines --triggers | gzip | sudo tee /var/backups/db/all.sql.gz > /dev/null

PostgreSQL

Bash
sudo mkdir -p /var/backups/db
sudo -u postgres pg_dump -Fc mydb | sudo tee /var/backups/db/mydb.dump > /dev/null

--single-transaction, sitenizi kilitlemeden InnoDB tablolarının tutarlı bir kopyasını verir. mydb yerine PostgreSQL veritabanınızın adını yazın.

3. adım: restic ile uzak yedek alın

restic birçok hedefe şifreli ve tekilleştirilmiş yedekler alır: SFTP üzerinden başka bir sunucu, S3 uyumlu bir depolama alanı ve daha fazlası. Dağıtımınızdan kurun:

Bash
sudo apt install restic

Depo parolasını yalnızca root'un okuyabildiği bir dosyada saklayın, ardından depoyu oluşturun. Örnek, SFTP üzerinden başka bir sunucu kullanır; bunun için bu sunucudaki root'un oradaki backup hesabına SSH anahtarıyla erişimi gerekir (bkz. SSH anahtarları); adresi ve yolu değiştirin:

Bash
sudo install -m 600 /dev/null /root/.restic-password
sudo nano /root/.restic-password
sudo restic -r sftp:backup@198.51.100.20:/srv/restic/web1 --password-file /root/.restic-password init

İlk yedeği alın:

Bash
sudo restic -r sftp:backup@198.51.100.20:/srv/restic/web1 --password-file /root/.restic-password backup /etc /var/www /var/backups/db

Doğrulama: depodaki snapshot'ları listeleyin:

Bash
sudo restic -r sftp:backup@198.51.100.20:/srv/restic/web1 --password-file /root/.restic-password snapshots

4. adım: Zamanlayın

Döküm ve yedek komutlarını bir betiğe, /usr/local/bin/backup.sh dosyasına koyun, çalıştırılabilir yapın (sudo chmod 700 /usr/local/bin/backup.sh) ve bir systemd zamanlayıcısıyla çalıştırın. Servis:

INI
[Unit]
Description=Server backup

[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh

Bunu /etc/systemd/system/backup.service olarak kaydedin. Zamanlayıcı, /etc/systemd/system/backup.timer:

INI
[Unit]
Description=Run the server backup every night

[Timer]
OnCalendar=*-*-* 02:30:00
Persistent=true

[Install]
WantedBy=timers.target

Etkinleştirin:

Bash
sudo systemctl daemon-reload
sudo systemctl enable --now backup.timer

Doğrulama: systemctl list-timers backup.timer bir sonraki çalışmayı, sudo journalctl -u backup.service sonuncunun çıktısını gösterir.

5. adım: Kuşakları tutun ve depoyu kontrol edin

restic'e hangi snapshot'ları tutacağını söyleyin ve gerisini kaldırın:

Bash
sudo restic -r sftp:backup@198.51.100.20:/srv/restic/web1 --password-file /root/.restic-password forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
sudo restic -r sftp:backup@198.51.100.20:/srv/restic/web1 --password-file /root/.restic-password check

Saklama kuralları otomatik çalışsın diye iki satırı da yedekleme betiğinizin sonuna ekleyin.

6. adım: Bir geri yüklemeyi test edin

Tek kanıt bir geri yükleme testidir. En az ayda bir, geçici bir klasöre veya bir test sunucusuna geri yükleyin:

Bash
sudo restic -r sftp:backup@198.51.100.20:/srv/restic/web1 --password-file /root/.restic-password restore latest --target /tmp/restore-test

Birkaç dosyayı karşılaştırın, bir veritabanı dökümünü bir test veritabanına aktarın ve geri yüklenen siteyi açın. Ne kadar sürdüğünü not edin: gerçek kurtarma süreniz budur.

Planın yedeklerini ve snapshot'larını da kullanın

  • VPS, VDS ve web hosting planları haftalık ve aylık ücretsiz yedekleme içerir. Bunlardan geri yükleme gerekirse destek ekibine sorun.
  • Windows VPS planları ücretsiz snapshot içerir; güncellemelerden veya riskli değişikliklerden önce bir tane alın. Snapshot'lar uzak yedekleri tamamlar.
  • Hosting planlarında kontrol panelinin yedekleme aracından düzenli olarak kendi kopyanızı indirin.

Windows Server

Windows Server Backup'ı kurun ve sistemi ve verileri ikinci bir diske veya ağ paylaşımına yedekleyin:

PowerShell
Install-WindowsFeature Windows-Server-Backup
wbadmin start backup -backupTarget:E: -include:C: -allCritical -quiet

SQL Server yedeklerini ve önemli klasörleri de sunucunun dışına kopyalayın ve düzenli olarak geri yüklemeyi test edin.

Sorun giderme

restic: "repository does not exist". -r değerindeki yol veya kullanıcı yanlış ya da init çalıştırılmamış. SSH erişimini ssh [email protected] ile kontrol edin.

Yedekler diski dolduruyor. Dökümler her çalışmadan sonra sunucuda kalıyor. Yerelde yalnızca en sonuncuyu tutun, geçmiş için restic'e güvenin; bkz. disk dolu.

Zamanlayıcı hiç çalışmıyor. systemctl status backup.timer ile kontrol edin ve dosyaları oluşturduktan sonra systemctl daemon-reload çalıştırdığınızdan emin olun.

Sonraki adımlar

Sık sorulan sorular

HyperDC sunucumu yedekliyor mu?

VPS, VDS ve web hosting planları haftalık ve aylık ücretsiz yedekleme içerir. Bunlardan geri yükleme gerekirse destek ekibimize sorun. İstediğiniz sürümü istediğiniz anda geri yükleyebilmek için kendi uzak yedeklerinizi de tutun.

Snapshot bir yedek midir?

Snapshot, sunucunun belirli bir andaki hızlı bir kopyasıdır; güncellemelerden veya riskli değişikliklerden önce idealdir. Genellikle sunucuyla aynı platformda durur; bu yüzden uzak yedeklerin yerini almaz, onları tamamlar.

Ne sıklıkla yedek almalıyım?

Kaybetmeyi göze alabildiğiniz veri miktarı kadar sık. Gün boyu sipariş alan bir mağazanın günde birçok kez veritabanı yedeğine ihtiyacı vardır; nadiren değişen bir tanıtım sitesinin çok daha azına. Ne kadar veri kaybedebileceğinize karar verin, sonra zamanlamayı belirleyin.

Yedekler şifrelenmeli mi?

Evet, sunucudan çıktıkları her durumda. restic gibi araçlar her yedeği sizin sakladığınız bir parolayla şifreler. Bu parolayı ayrı bir yerde saklayın: o olmadan siz dahil kimse geri yükleme yapamaz.

Yedekleri ne kadar süre saklamalıyım?

Birkaç kuşak saklayın; örneğin son haftanın her günü için birer, bir ay boyunca haftada bir ve altı ay boyunca ayda bir. Eski kuşaklar, sessiz bir sızma gibi geç fark edilen sorunlarda işe yarar.

Kaynaklar

Şifre Oluştur

Lütfen onaylayın