Serinin ilk iki konusunda HestiaCP'yi kurduk ve cPanel'den site taşıdık. Şimdi çoğu kişinin ertelediği, sonra da pahalıya ödediği kısma geliyoruz: yedekleme.
HestiaCP kurulumla birlikte otomatik günlük yedek alır. Ama bu yedekler aynı sunucunun diskinde durur. Diskin bozulursa, sağlayıcı hesabını kapatırsa ya da bir saldırıda sunucuya erişim kaybedersen yedeklerin de gider. Bu yedekleme değil, sadece "yanlışlıkla sildim" senaryosuna karşı bir kopyadır.
Bu rehberde yedekleri otomatik olarak başka bir sunucuya göndermeyi kuracağız. Örneklerde kullanıcı adı olarak
1. Mevcut yedekleme durumunu gör
Önce sunucunun şu an ne yaptığına bakalım. SSH ile bağlan ve şunu çalıştır:
Yedekleme ayarlarını görmek için:
Buradaki
2. Hangi yedekleme hedefini seçmeli?
HestiaCP dört tip uzak hedefi destekler:
Benim tavsiyem: müşteri siteleri barındırıyorsan Hetzner Storage Box + SFTP. Ucuz, hızlı ve kurulumu beş dakika. Kişisel projeler için Backblaze B2 gayet yeterli.
3. Yöntem A — SFTP ile uzak sunucuya yedekleme
3.1 Uzak sunucuya SSH anahtarı gönder
Her yedeklemede şifre sormasın diye anahtar tabanlı erişim kuruyoruz. Ana sunucunda:
Hetzner Storage Box kullanıyorsan port ve komut biraz farklıdır:
Bağlantıyı test et, şifre sormadan girmeli:
3.2 HestiaCP'ye hedefi tanıt
Komutun parametreleri sırasıyla: tip, sunucu adresi, kullanıcı adı, şifre, uzak dizin, port.
Doğru eklendiğini kontrol et:
3.3 İlk yedeği manuel al ve doğrula
Bu komut biraz sürer. Bitince uzak sunucuya bağlanıp dosyanın gerçekten oraya düştüğünü gözünle gör. Bu adımı atlama; "kurdum, çalışıyordur" diyen çok kişi felaket anında yedeği olmadığını fark etti.
4. Yöntem B — Backblaze B2 ile yedekleme
Elinde ikinci sunucu yoksa bu yolu seç.
Sonra HestiaCP'ye tanıt:
Test et:
5. Zamanlama ve saklama süresi
Varsayılan olarak HestiaCP her gece yedek alır ve son 3 kopyayı saklar. Bunu ihtiyacına göre değiştir.
Saklanacak yedek sayısını artırmak için:
Kullanıcı bazında limit koymak istersen:
Yedekleme saatini değiştirmek için sistem cron'una bak:
Buradaki
Saklama stratejisi tavsiyesi: Sadece "son 7 gün" tutmak yetmez. Bir hack ya da veri bozulması iki hafta sonra fark edilebilir. Haftalık ve aylık kopya da tut.
6. Yedeğe neyin dahil olmayacağını belirle
Yedek boyutu şişince hem depolama maliyeti hem de yedekleme süresi artar. Önbellek klasörleri, log dosyaları ve geçici dosyalar yedekte yer kaplamamalı.
Panelde User → Edit → Backup Exclusions bölümünden ya da komutla:
Mevcut hariç tutmaları görmek için:
Tipik olarak dışarıda bırakılacaklar:
7. Yedeklemeyi izle — sessiz başarısızlık en tehlikelisi
Yedeklemenin en sinsi hâli, aylardır çalışmadığını fark etmemektir. Disk dolar, uzak sunucu şifresi değişir, cron durur ve kimsenin haberi olmaz.
Yedek listesini kontrol et:
Yedekleme loglarına bak:
Basit bir kontrol scripti yazıp günlük çalıştırabilirsin. Son yedek 36 saatten eskiyse sana mail atar:
8. Geri yükleme — asıl test bu
Denenmemiş yedek, yedek değildir. Kurulumu bitirdikten sonra mutlaka bir geri yükleme denemesi yap.
Tüm hesabı geri yüklemek için:
Genellikle ihtiyacın olan şey tüm hesap değil, tek bir parçadır. Sadece bir siteyi geri al:
Sadece veritabanını geri al:
Yedek dosyasının içine bakmak istersen:
Önemli: Geri yükleme mevcut dosyaların üzerine yazar. Canlı sitede geri yükleme yapmadan önce mevcut hâlinin ayrı bir kopyasını al; yanlış yedeği seçersen geri dönüşün olmaz.
9. Ekstra katman — 3-2-1 kuralı
Profesyonel yaklaşım şudur:
Pratikte bu şu demek: HestiaCP'nin yerel yedeği (1) + Storage Box'a giden kopya (2) + haftada bir Backblaze B2'ye giden ikinci uzak kopya (3). Üçüncü katman için basit bir rclone cron'u yeterli:
Bunu haftada bir çalıştıracak şekilde cron'a ekle. Maliyeti düşük, getirisi çok yüksek.
Sık karşılaşılan hatalar
"Error: sftp failed to upload"
SSH anahtarı doğru gitmemiştir ya da port yanlıştır.
Yedekleme başlıyor ama yarıda kesiliyor
Disk doludur.
"Error: backup exceeds quota"
Kullanıcının disk kotası yetersiz. Panelden paket limitini artır.
Yedekler alınıyor ama uzak sunucuda görünmüyor
Yedekleme çok uzun sürüyor, sunucu kilitleniyor
Hariç tutma listesi boştur. Cache ve log klasörlerini dışarıda bırak, gerekirse büyük yükleme klasörlerini ayrı bir rsync göreviyle taşı.
Geri yüklemeden sonra site açılmıyor
Dosya sahipliği bozulmuştur:
Yedekleme kurduktan sonra takviminize bir hatırlatma koyun: üç ayda bir geri yükleme testi. Yedeğin çalıştığından emin olmanın başka bir yolu yok.
Takıldığınız yer olursa
HestiaCP kurulumla birlikte otomatik günlük yedek alır. Ama bu yedekler aynı sunucunun diskinde durur. Diskin bozulursa, sağlayıcı hesabını kapatırsa ya da bir saldırıda sunucuya erişim kaybedersen yedeklerin de gider. Bu yedekleme değil, sadece "yanlışlıkla sildim" senaryosuna karşı bir kopyadır.
Bu rehberde yedekleri otomatik olarak başka bir sunucuya göndermeyi kuracağız. Örneklerde kullanıcı adı olarak
oblifex kullanıyorum, sen kendi kullanıcı adını yazacaksın.1. Mevcut yedekleme durumunu gör
Önce sunucunun şu an ne yaptığına bakalım. SSH ile bağlan ve şunu çalıştır:
Kod:
v-list-users
ls -lh /backup/
/backup/ Dizininde oblifex.2026-09-07_05-10-01.tar gibi dosyalar göreceksin. Bunlar HestiaCP'nin yerel yedekleri.Yedekleme ayarlarını görmek için:
Kod:
v-list-sys-config | grep -i backup
Buradaki
BACKUP_SYSTEM değeri varsayılan olarak local gelir. Bizim hedefimiz buraya uzak bir depolama eklemek.2. Hangi yedekleme hedefini seçmeli?
HestiaCP dört tip uzak hedefi destekler:
| Hedef | Ne zaman kullanılır | Maliyet |
|---|---|---|
| SFTP | Elinde ikinci bir VPS veya storage box varsa. En basit ve en hızlı yöntem. | Storage box aylık birkaç euro |
| Backblaze B2 | Ekstra sunucu istemiyorsan. Çok ucuz ve sınırsız kapasite. | GB başına çok düşük |
| Amazon S3 | Zaten AWS kullanıyorsan. | B2'den pahalı |
| Rclone | Google Drive, Dropbox, Mega gibi servisleri kullanmak istiyorsan. | Servise göre değişir |
Benim tavsiyem: müşteri siteleri barındırıyorsan Hetzner Storage Box + SFTP. Ucuz, hızlı ve kurulumu beş dakika. Kişisel projeler için Backblaze B2 gayet yeterli.
3. Yöntem A — SFTP ile uzak sunucuya yedekleme
3.1 Uzak sunucuya SSH anahtarı gönder
Her yedeklemede şifre sormasın diye anahtar tabanlı erişim kuruyoruz. Ana sunucunda:
Kod:
ssh-keygen -t rsa -b 4096 -f /root/.ssh/id_rsa -N ""
ssh-copy-id -p 22 root@YEDEK_SUNUCU_IP
Hetzner Storage Box kullanıyorsan port ve komut biraz farklıdır:
Kod:
ssh-keygen -t rsa -b 4096 -f /root/.ssh/id_rsa -N ""
cat /root/.ssh/id_rsa.pub | ssh -p23 [email protected] install-ssh-key
Bağlantıyı test et, şifre sormadan girmeli:
Kod:
ssh -p 23 [email protected]
3.2 HestiaCP'ye hedefi tanıt
Kod:
v-add-backup-host sftp kullanici.your-storagebox.de kullanici SIFRE /backup 23
Komutun parametreleri sırasıyla: tip, sunucu adresi, kullanıcı adı, şifre, uzak dizin, port.
Doğru eklendiğini kontrol et:
Kod:
v-list-backup-hosts
3.3 İlk yedeği manuel al ve doğrula
Kod:
v-backup-user oblifex
Bu komut biraz sürer. Bitince uzak sunucuya bağlanıp dosyanın gerçekten oraya düştüğünü gözünle gör. Bu adımı atlama; "kurdum, çalışıyordur" diyen çok kişi felaket anında yedeği olmadığını fark etti.
Kod:
ssh -p 23 [email protected] "ls -lh /backup"
4. Yöntem B — Backblaze B2 ile yedekleme
Elinde ikinci sunucu yoksa bu yolu seç.
- Backblaze. Com üzerinden ücretsiz hesap aç
- Buckets → Create a Bucket ile özel (private) bir bucket oluştur, örn.
oblifex-yedek - App Keys → Add a New Application Key diyerek sadece o bucket'a yetkili bir anahtar üret
- Ekranda çıkan
keyIDveapplicationKeydeğerlerini kaydet — anahtar bir daha gösterilmez
Sonra HestiaCP'ye tanıt:
Kod:
v-add-backup-host b2 KEY_ID APPLICATION_KEY oblifex-yedek
Test et:
Kod:
v-backup-user oblifex
5. Zamanlama ve saklama süresi
Varsayılan olarak HestiaCP her gece yedek alır ve son 3 kopyayı saklar. Bunu ihtiyacına göre değiştir.
Saklanacak yedek sayısını artırmak için:
Kod:
v-change-sys-config-value BACKUP_MAX 7
Kullanıcı bazında limit koymak istersen:
Kod:
v-change-user-backup-exclusions oblifex '' '' '' '' ''
v-change-user-config-value oblifex BACKUPS 7
Yedekleme saatini değiştirmek için sistem cron'una bak:
Kod:
crontab -l | grep backup
Buradaki
v-backup-users satırının saatini düzenleyebilirsin. Trafiğin en düşük olduğu saati seç; yedekleme sırasında sunucu belirgin şekilde yavaşlar.Saklama stratejisi tavsiyesi: Sadece "son 7 gün" tutmak yetmez. Bir hack ya da veri bozulması iki hafta sonra fark edilebilir. Haftalık ve aylık kopya da tut.
6. Yedeğe neyin dahil olmayacağını belirle
Yedek boyutu şişince hem depolama maliyeti hem de yedekleme süresi artar. Önbellek klasörleri, log dosyaları ve geçici dosyalar yedekte yer kaplamamalı.
Panelde User → Edit → Backup Exclusions bölümünden ya da komutla:
Kod:
v-add-user-backup-exclusion oblifex web oblifex.com 'public_html/wp-content/cache'
v-add-user-backup-exclusion oblifex web oblifex.com 'public_html/internal_data/code_cache'
Mevcut hariç tutmaları görmek için:
Kod:
v-list-user-backup-exclusions oblifex
Tipik olarak dışarıda bırakılacaklar:
- WordPress:
wp-content/cache,wp-content/uploads/backup* - XenForo:
internal_data/code_cache,internal_data/temp - Laravel:
storage/logs,storage/framework/cache - Genel:
node_modules,.git,logs
7. Yedeklemeyi izle — sessiz başarısızlık en tehlikelisi
Yedeklemenin en sinsi hâli, aylardır çalışmadığını fark etmemektir. Disk dolar, uzak sunucu şifresi değişir, cron durur ve kimsenin haberi olmaz.
Yedek listesini kontrol et:
Kod:
v-list-user-backups oblifex
Yedekleme loglarına bak:
Kod:
tail -50 /usr/local/hestia/log/backup.log
Basit bir kontrol scripti yazıp günlük çalıştırabilirsin. Son yedek 36 saatten eskiyse sana mail atar:
Kod:
cat > /root/yedek-kontrol.sh << 'EOF'
#!/bin/bash
KULLANICI="oblifex"
MAIL="[email protected]"
SON=$(ls -t /backup/${KULLANICI}.*.tar 2>/dev/null | head -1)
if [ -z "$SON" ]; then
echo "UYARI: $KULLANICI icin hic yedek bulunamadi." | mail -s "Yedek Hatasi" $MAIL
exit 1
fi
YAS=$(( ($(date +%s) - $(stat -c %Y "$SON")) / 3600 ))
if [ $YAS -gt 36 ]; then
echo "UYARI: Son yedek $YAS saat once alinmis: $SON" | mail -s "Yedek Gecikmesi" $MAIL
fi
EOF
chmod +x /root/yedek-kontrol.sh
(crontab -l 2>/dev/null; echo "0 9 * * * /root/yedek-kontrol.sh") | crontab -
8. Geri yükleme — asıl test bu
Denenmemiş yedek, yedek değildir. Kurulumu bitirdikten sonra mutlaka bir geri yükleme denemesi yap.
Tüm hesabı geri yüklemek için:
Kod:
v-restore-user oblifex oblifex.2026-09-07_05-10-01.tar
Genellikle ihtiyacın olan şey tüm hesap değil, tek bir parçadır. Sadece bir siteyi geri al:
Kod:
v-restore-user oblifex oblifex.2026-09-07_05-10-01.tar no oblifex.com
Sadece veritabanını geri al:
Kod:
v-restore-user oblifex oblifex.2026-09-07_05-10-01.tar no no no oblifex_forum
Yedek dosyasının içine bakmak istersen:
Kod:
v-list-user-backup oblifex oblifex.2026-09-07_05-10-01.tar
Önemli: Geri yükleme mevcut dosyaların üzerine yazar. Canlı sitede geri yükleme yapmadan önce mevcut hâlinin ayrı bir kopyasını al; yanlış yedeği seçersen geri dönüşün olmaz.
9. Ekstra katman — 3-2-1 kuralı
Profesyonel yaklaşım şudur:
- 3 kopya veri
- 2 farklı ortam (sunucu diski + uzak depolama)
- 1 kopya fiziksel olarak farklı konumda
Pratikte bu şu demek: HestiaCP'nin yerel yedeği (1) + Storage Box'a giden kopya (2) + haftada bir Backblaze B2'ye giden ikinci uzak kopya (3). Üçüncü katman için basit bir rclone cron'u yeterli:
Kod:
rclone sync /backup remote:oblifex-arsiv --transfers 4
Bunu haftada bir çalıştıracak şekilde cron'a ekle. Maliyeti düşük, getirisi çok yüksek.
Sık karşılaşılan hatalar
"Error: sftp failed to upload"
SSH anahtarı doğru gitmemiştir ya da port yanlıştır.
ssh -p PORT kullanici@sunucu İle şifresiz bağlanabildiğini doğrula.Yedekleme başlıyor ama yarıda kesiliyor
Disk doludur.
df -h İle bak; HestiaCP yedeği önce yerelde oluşturur, sonra gönderir, yani sitenin boyutu kadar boş alana ihtiyaç duyar."Error: backup exceeds quota"
Kullanıcının disk kotası yetersiz. Panelden paket limitini artır.
Yedekler alınıyor ama uzak sunucuda görünmüyor
v-list-backup-hosts Çıktısını kontrol et. Hedef tanımlıysa /usr/local/hestia/log/backup.log dosyasında gerçek hata mesajı yazar.Yedekleme çok uzun sürüyor, sunucu kilitleniyor
Hariç tutma listesi boştur. Cache ve log klasörlerini dışarıda bırak, gerekirse büyük yükleme klasörlerini ayrı bir rsync göreviyle taşı.
Geri yüklemeden sonra site açılmıyor
Dosya sahipliği bozulmuştur:
Kod:
chown -R oblifex:oblifex /home/oblifex/web/
v-rebuild-web-domains oblifex
Yedekleme kurduktan sonra takviminize bir hatırlatma koyun: üç ayda bir geri yükleme testi. Yedeğin çalıştığından emin olmanın başka bir yolu yok.
Takıldığınız yer olursa
backup.log çıktısını buraya yapıştırın, birlikte bakalım. Serinin devamında HestiaCP'de Nginx önbellekleme ve site hızlandırma konusunu işleyeceğim.