VPS Yedekleme ve Snapshot: Farkları, Araçlar ve Otomasyon
Bir VPS’teki veriyi korumanın birbirinin yerine geçmeyen iki aracı vardır: snapshot, diskin o anki hâlini dakikalar içinde geri getirir; yedek ise veriyi sunucudan bağımsız bir yerde, haftalar ve aylar geriye uzanan sürümlerle saklar. VPS yedekleme düzenini ikisini birlikte planlayarak kurmak, hem başarısız bir güncellemeye hem de diskin, hesabın ya da verinin tamamen kaybına karşı korur.
Yönetilmeyen bir VPS sunucuda yedeğin sorumluluğu çoğunlukla sizdedir; sağlayıcının sunduğu yedek ve snapshot seçenekleri pakete göre değişir, LIONFIN VPS paketlerindeki güncel özellikleri paket sayfasından kontrol edin. Örneklerdeki komutlar root yetkisiyle çalıştırılmak üzere yazıldı; Ubuntu 24.04 LTS ve güncel Debian sürümlerinde paket adları aynıdır.
Kısa cevap
VPS yedekleme, sanal sunucudaki veritabanlarını, uygulama dosyalarını ve yapılandırmayı düzenli aralıklarla sunucunun dışındaki bir depoya kopyalayıp sürüm geçmişiyle saklamaktır. Snapshot ise diskin belirli bir andaki görüntüsüdür; riskli bir güncellemeden önce hızlı geri dönüş sağlar ama genellikle aynı altyapıda durduğu için yedeğin yerini tutmaz. Sağlıklı düzen: tutarlı veritabanı dökümü, şifreli ve tekilleştirilmiş uzak yedek, cron ile otomasyon ve düzenli geri yükleme testi.
Snapshot ile yedek arasındaki fark nedir?
Snapshot, sanal diskin belirli bir andaki görüntüsüdür ve genellikle aynı depolama altyapısında tutulur; yedek ise verinin sunucudan ayrı bir yere alınmış, geçmiş sürümleriyle saklanan kopyasıdır.
| Ölçüt | Snapshot | Yedek |
|---|---|---|
| Nerede durur? | Çoğunlukla aynı sağlayıcı ve depolama platformunda | Başka sunucu, başka veri merkezi ya da nesne depolama |
| Tutarlılık | Genellikle çökme tutarlı (crash-consistent): o an elektrik kesilmiş gibi | Uygulama tutarlı: veritabanı dökümü kontrollü alınır |
| Saklama | Kısa süre, az sayıda | Günlük, haftalık, aylık sürümler |
| Geri dönüş biçimi | Diskin tamamı | Tek dosya, tek veritabanı ya da tamamı |
| Neye karşı korur? | Başarısız güncelleme, hatalı yapılandırma | Disk ya da sunucu kaybı, geç fark edilen silme, hesap erişiminin kaybı; sunucudan silinemiyorsa fidye yazılımı |
Kısacası snapshot “az önceki hâle dön” düğmesi, yedek ise felaket sigortasıdır. Fiziksel sunucularda kullanılan RAID de yedeğin yerini tutmaz; disk arızasına dayanır ama silinen dosyayı geri getirmez, ayrıntı RAID nedir yazısında.
VPS’te neler yedeklenmeli?
Bir VPS’i yeniden kurabilmek için verinin yanında yapılandırmayı da yedeklemeniz gerekir; yalnızca site dosyalarını almak, sunucuyu baştan ayarlamak zorunda bırakır. Kapsam listesi:
- Veritabanları: Ham veri klasörü değil, döküm dosyaları (bir sonraki bölüm).
- Uygulama ve site dosyaları:
/var/www,/homeve kullanıcı yüklemeleri. - Yapılandırma:
/etcklasörünün tamamı (Nginx, PHP-FPM, SSH ve güvenlik duvarı ayarları) ve/etc/letsencryptaltındaki sertifikalar. - Zamanlanmış görevler:
/etc/cron.dve kullanıcı crontab’leri (/var/spool/cron/crontabs). - Paket listesi:
apt-mark showmanual > /root/paketler.txtçıktısı, yeni sunucuda aynı yazılımları kurmayı kolaylaştırır.
Hariç tutulacaklar: /proc, /sys, /dev, /run, /tmp, önbellek klasörleri ve çalışan veritabanının ham dosyaları. Kopyaların nerede ve kaç tane tutulacağını 3-2-1 yedekleme kuralı belirler: en az bir kopya hem sunucunun hem de sağlayıcının dışında olmalıdır.
Veritabanı tutarlı biçimde nasıl yedeklenir?
Veritabanı, kendi döküm aracıyla yedeklenir; çalışan bir veritabanının dosyalarını kopyalamak yarım yazılmış sayfalar içeren, açılmayabilen bir kopya üretir. MySQL ve MariaDB’de --single-transaction seçeneği InnoDB tablolarını kilitlemeden tek bir tutarlı anın görüntüsünü alır:
mkdir -p /var/backups/db
mysqldump --single-transaction --quick --routines --triggers --events \
site_db | gzip > /var/backups/db/site_db-$(date +%F).sql.gzMariaDB’nin yeni sürümlerinde aynı araç mariadb-dump adıyla gelir ve aynı seçenekleri kabul eder. Debian ve Ubuntu’da root kullanıcısı veritabanına genellikle soket kimlik doğrulamasıyla bağlandığı için parola gerekmez; gerekiyorsa kimlik bilgilerini 600 izinli /root/.my.cnf dosyasına yazın, komut satırına parola koymayın. MyISAM tablolarında --single-transaction tutarlılık sağlamaz; bu tabloları InnoDB’ye dönüştürmek en temiz çözümdür.
PostgreSQL’de sıkıştırılmış özel biçim (-Fc) tercih edilir; geri yükleme pg_restore ile yapılır:
sudo -u postgres pg_dump -Fc site_db > /var/backups/db/site_db-$(date +%F).dump
Dosyalar rsync ile başka sunucuya nasıl kopyalanır?
rsync, yalnızca değişen dosyaları SSH üzerinden aktardığı için düzenli dosya kopyası almanın en hafif yoludur. Yedek sunucusuna parolasız giriş için önce bir anahtar tanımlayın (SSH anahtarı oluşturma), ardından:
rsync -aH --delete \
-e "ssh -i /root/.ssh/yedek_anahtari" \
/etc /var/www /home /var/backups/db \
yedek@YEDEK_SUNUCU:/yedekler/vps1/-a izinleri ve zaman damgalarını, -H sabit bağlantıları korur; dosya sahipliğinin korunması ise hedef tarafta root yetkisi ister. Bu komut bir ayna üretir: kaynakta silinen ya da fidye yazılımıyla şifrelenen dosya, bir sonraki çalıştırmada hedefte de silinir veya bozulur. Bu yüzden rsync tek başına sürüm geçmişi sunmaz; hedef tarafta günlük kopyalar tutmanız ya da bir sonraki bölümdeki araçlardan birini kullanmanız gerekir.
Bir güvenlik ayrıntısı daha: VPS ele geçirilirse saldırgan, sunucudaki anahtarla yedeklere de ulaşabilir. Mümkünse yedek sunucusunun veriyi VPS’ten kendisinin çekmesini (pull) sağlayın ya da yedek hesabını yalnızca ekleme yapabilecek biçimde kısıtlayın.
restic ile şifreli ve tekilleştirilmiş VPS yedekleme
restic ve BorgBackup, her çalıştırmada yalnızca değişen veri bloklarını saklayan (tekilleştirme), yedeği daha sunucudan çıkmadan şifreleyen ve her çalıştırmayı ayrı bir anlık görüntü olarak tutan araçlardır. Böylece rsync aynasının eksik bıraktığı sürüm geçmişini sağlarlar; dosya sahipliği ve izinler de deponun içinde saklanır. restic’in avantajı, hedef olarak düz bir SFTP hesabını ya da S3 uyumlu nesne depolamayı kabul etmesidir:
apt install restic
export RESTIC_REPOSITORY=sftp:yedek@YEDEK_SUNUCU:/yedekler/vps1
export RESTIC_PASSWORD_FILE=/root/.restic-parola
restic init # yalnızca ilk seferde
restic backup /etc /var/www /home /var/backups/db --exclude-caches
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
restic checkParola dosyasını 600 izinle oluşturun ve bir kopyasını sunucu dışında, bir parola yöneticisinde saklayın: restic depoyu her zaman şifreler, parola kaybolursa yedekler açılamaz. BorgBackup benzer biçimde çalışır (borg init, borg create, borg prune), ancak uzak tarafta da borg kurulu olmasını ister; 1.2 ve sonraki sürümlerde borg prune ardından alanı geri kazanmak için borg compact çalıştırılır.
Zamanlama ve saklama: cron ile otomasyon
Yedek ancak insan müdahalesi olmadan her gün çalışıyorsa güvenilirdir; döküm ve yedek adımlarını tek betikte toplayıp /etc/cron.d altından zamanlayın. Örnek /usr/local/sbin/vps-yedek betiği:
#!/bin/bash
set -euo pipefail
export RESTIC_REPOSITORY=sftp:yedek@YEDEK_SUNUCU:/yedekler/vps1
export RESTIC_PASSWORD_FILE=/root/.restic-parola
mysqldump --single-transaction --quick --routines --triggers --events \
site_db > /var/backups/db/site_db.sql
restic backup /etc /var/www /home /var/backups/db --exclude-caches
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --pruneDökümü burada sıkıştırmadan yazmak bilinçli bir tercihtir: gzip çıktısı küçük bir değişiklikte bile o noktadan sonra tamamen farklılaştığı için tekilleştirmeyi bozar, sıkıştırmayı ise restic kendisi yapar (0.14 ve sonraki sürümlerin depo biçiminde). Betiği chmod 700 ile çalıştırılabilir yapın ve /etc/cron.d/vps-yedek dosyasına, kullanıcı alanını da içeren şu satırı yazın:
30 3 * * * root /usr/local/sbin/vps-yedek >> /var/log/vps-yedek.log 2>&1Saklama değerleri örnektir; yedi günlük, dört haftalık ve altı aylık sürüm çoğu sitede geç fark edilen hatalara yetecek geçmişi makul depo boyutuyla dengeler. set -euo pipefail satırı, döküm başarısız olursa betiğin sessizce devam etmesini engeller. Bu VPS yedekleme betiğinin günlüğünü izleme aracınıza bağlayıp başarısız geceler için uyarı kurun.
Geri yükleme provası nasıl yapılır?
Bir yedeğin çalıştığını yalnızca ondan geri dönerek kanıtlayabilirsiniz; üç ayda bir, ayrı bir test sunucusunda şu provayı yapın:
- Anlık görüntüleri listeleyin:
restic snapshots. - Son yedeği geçici bir klasöre açın:
restic restore latest --target /tmp/prova. - Boş bir test veritabanı oluşturup dökümü yükleyin:
mysql test_db < /tmp/prova/var/backups/db/site_db.sql; PostgreSQL içinpg_restore -d test_db dosya.dump. - Uygulamayı test sunucusunda çalıştırıp son siparişin, son yazının ya da son kaydın yerinde olduğunu kontrol edin.
- Başlangıçtan çalışır duruma kadar geçen süreyi not edin; bu sizin gerçek geri dönüş sürenizdir (RTO, Recovery Time Objective).
Prova sırasında eksik çıkan her şey (unutulmuş bir yapılandırma dosyası, kayıp parola, beklenenden uzun süren indirme) gerçek bir felakette çok daha pahalıya patlar. Test sunucusunu kurarken VPS ilk kurulum adımları rehberindeki temel güvenlik ayarlarını uygulayın; yalnızca prova için açılan bir sunucu bile canlı veri taşır.
Riskli işlemlerden önce snapshot ne zaman alınmalı?
Snapshot en çok, geri dönüşü zor bir değişikliğin hemen öncesinde değerlidir: dağıtım sürümü yükseltmesi (Ubuntu’da do-release-upgrade), çekirdek, PHP ya da veritabanında ana sürüm güncellemesi, güvenlik duvarı ve SSH ayarlarında büyük değişiklik, kontrol paneli kurulumu. Sağlayıcınızın panelinde snapshot özelliği varsa şu sırayı izleyin:
- Uygulamayı bakım moduna alın ya da trafiğin en düşük olduğu saati seçin.
- Veritabanının güncel bir dökümünü alın; snapshot çökme tutarlı olduğundan döküm ek güvencedir.
- Snapshot’ı alın, işlemi yapın ve sonucu doğrulayın.
- Her şey yolundaysa snapshot’ı birkaç gün içinde silin.
Uzun süre tutulan snapshot’lar depolama alanı tüketir ve bazı platformlarda disk performansını düşürebilir; onları kalıcı arşiv olarak değil, geri alma ağı olarak kullanın. Yedek saatinde disk yükünün nasıl etkilendiğini görmek için Linux sunucu performans izleme komutlarından yararlanabilirsiniz.
Sık Sorulan Sorular
Snapshot almak yedek almanın yerine geçer mi?
Geçmez. Snapshot genellikle sunucuyla aynı depolama altyapısında durur, kısa süre saklanır ve diskin tamamını geri döndürür. Altyapıda bir sorun olduğunda, hesabınıza erişemediğinizde ya da bir hatayı haftalar sonra fark ettiğinizde işe yaramaz. Snapshot’ı riskli işlemler öncesinde hızlı geri dönüş için, sunucu dışında saklanan sürümlü yedeği ise asıl koruma olarak kullanın.
VPS yedeği ne sıklıkla alınmalı?
Sıklığı, kaybetmeyi göze alabileceğiniz veri miktarı belirler. İçeriği günde birkaç kez değişen bir site için günlük yedek yeterli olabilir; sipariş ya da kayıt alan uygulamalarda veritabanını saatlik dökmek gerekir. Dosya ve yapılandırma yedeği genellikle günde bir kez alınır. Her durumda en az bir kopyanın sunucu dışında olması ve düzenli geri yükleme testi şarttır.
restic mi BorgBackup mı kullanmalıyım?
İkisi de şifreleme, tekilleştirme ve sürüm saklama sunar. restic, hedef olarak düz bir SFTP hesabını ve S3 uyumlu nesne depolamayı doğrudan desteklediği için esnektir. BorgBackup uzak tarafta da borg kurulu olmasını ister; buna karşılık yalnızca ekleme (append-only) modu sunan, uzun süredir kullanılan olgun bir araçtır. Hedef depolamanızın desteklediği aracı seçin ve geri yüklemeyi mutlaka deneyin.
Veritabanı klasörünü kopyalamak yedek sayılır mı?
Veritabanı çalışırken /var/lib/mysql gibi veri klasörünü kopyalamak, yazma işlemleri sürdüğü için tutarsız ve açılmayabilen bir yedek üretir. Güvenli yol mysqldump, mariadb-dump ya da pg_dump gibi döküm araçlarıdır. Çok büyük veritabanlarında fiziksel yedek gerekiyorsa Mariabackup ya da pg_basebackup gibi sıcak yedek araçları kullanılır; bunlar da geri yükleme testiyle doğrulanmalıdır.
Yedekleri aynı sağlayıcıda başka bir sunucuda tutmak yeterli mi?
Sunucu arızasına ve yanlışlıkla silmeye karşı korur, ancak sağlayıcı düzeyindeki bir sorun, hesap erişiminin kaybı ya da aynı kimlik bilgileriyle iki sunucuya da ulaşan bir saldırgan karşısında yetersiz kalır. 3-2-1 kuralındaki sunucu dışı kopya, farklı bir sağlayıcıda ya da kendi kontrolünüzdeki bir depoda tutulmalı ve VPS’in bu kopyayı silme yetkisi olmamalıdır.
Bu makale yardımcı oldu mu?
Geri bildiriminiz için teşekkürler!
kişi faydalı buldu