Otomatik Yedeklemeyi Dış Depolamaya Göndermek: Eksiksiz Kurulum
Sunucudaki yedekleri aynı sistemde tutmak, disk arızası veya fidye yazılımı karşısında sizi korumaz. rclone, cron ve şifreleme ile dış depolamaya tam otomasyonu adım adım kurun.
Sunucudaki bir disk arızası ya da fidye yazılımı saldırısı, yalnızca aynı makine üzerinde tutulan yedekleri de birlikte siler. Bu noktada \"düzenli yedek alıyordum\" demek hiçbir şeyi değiştirmez. Dış depolamaya otomatik yedek göndermek bu tek hata noktasını ortadan kaldırır; ancak hangi sağlayıcıyı seçmek, hangi aracı kullanmak ve nasıl zamanlama kurmak gerektiği pratikte çoğu kişiye belirsiz kalır. Bu yazıda Backblaze B2, Wasabi ve Cloudflare R2 gibi nesne depolama seçeneklerini somut fiyatlarla karşılaştıracak, rclone ile adım adım bağlantı kuracak, yedekleri şifreleyerek gönderecek ve cron ile tam otomasyonu tamamlayacaksınız.
Yerel Yedek Neden Yetmez?
Aynı sunucuda tutulan yedek şu üç senaryoda işe yaramaz:
- Disk fiziksel olarak arızalanır: RAID dizisi bile eş zamanlı çift disk kaybında veriyi kurtaramaz.
- Ransomware yedek dizinini de şifreler: Fidye yazılımları
/var/backupsgibi klasik yolları özellikle hedef alır. - Veri merkezi fiziksel felakete uğrar: Yangın, su baskısı veya güç kesintisi tüm sistemi dışarıdan erişilemez hale getirebilir.
Yedekleme sektöründe yerleşmiş kural 3-2-1 şöyledir: 3 kopya, 2 farklı medya türü, 1 coğrafi olarak farklı konum. Dış depolama bu üçüncü konumu karşılar. Sunucunun bulunduğu veri merkezinin tamamen erişilemez olduğu bir durumda bile yedeklerinize ulaşabilmek için bu adım zorunludur.
Dış Depolama Seçenekleri: Fiyat ve Özellik Karşılaştırması
Nesne depolama (object storage) hizmetleri yedekleme için en yaygın dış depolama tercihidir. Aşağıdaki tablo Mayıs 2026 itibarıyla güncel liste fiyatlarını göstermektedir:
| Sağlayıcı | Depolama (GB/ay) | Çıkış Trafiği (egress) | Minimum Ücret | rclone Desteği |
|---|---|---|---|---|
| Backblaze B2 | $0,006 | $0,01/GB | Yok | Evet |
| Wasabi | $0,0069 | Ücretsiz | $6,99/ay | Evet |
| Cloudflare R2 | $0,015 | Ücretsiz | Yok | Evet (S3 uyumlu) |
| AWS S3 Standard | $0,023 | $0,09/GB | Yok | Evet |
| Hetzner Storage Box | €3,35/TB | Ücretsiz (rsync/SFTP) | €3,35/ay | Evet (SFTP) |
Seçim kriteri senaryoya göre değişir:
- 100 GB altı + egress nadiren: Backblaze B2 en düşük birim maliyetli seçenek.
- 100–500 GB + sık geri yükleme ihtimali: Wasabi veya Cloudflare R2; egress ücretsiz olduğu için toplam maliyet daha öngörülebilir.
- GDPR kapsamında Avrupa'da veri kalmak zorunda: Hetzner Storage Box Almanya lokasyonu, sabit aylık fiyatla tahmin edilebilir bir maliyet sunar.
- AWS ekosistemi zaten kullanılıyorsa: S3 entegrasyon kolaylığı sağlar ancak birim maliyet en yüksek seçenektir.
rclone ile Dış Depolamaya Bağlantı Kurma
rclone, 70'ten fazla bulut depolama sağlayıcısını destekleyen açık kaynaklı bir transfer aracıdır. Tek yapılandırma dosyasıyla farklı sağlayıcılar arasında geçiş yapılabilir.
Kurulum:
curl https://rclone.org/install.sh | bash
Backblaze B2 için yapılandırma:
rclone config
Sihirbazda sırasıyla: n (yeni remote), isim olarak b2remote, tip olarak b2, ardından B2 kontrol panelinden aldığınız Application Key ID ve Application Key değerlerini girin.
Bağlantıyı test edin:
rclone ls b2remote:yedek-bucket-adi
Wasabi için yapılandırma (S3 uyumlu endpoint ile):
rclone config create wasabi s3 \
provider Wasabi \
access_key_id WASABI_KEY \
secret_access_key WASABI_SECRET \
region eu-central-1 \
endpoint s3.eu-central-1.wasabisys.com
Hetzner Storage Box için rsync veya SFTP kullanılır; rclone'da sftp tipi seçilip hostname, kullanıcı adı ve SSH anahtarı tanımlanır.
İlk manuel transfer testi yapmak, sonraki otomasyon adımlarından önce zorunludur:
rclone copy /var/backups/test b2remote:yedek-bucket-adi/test --progress
Yedekleme Scriptini Yazmak
Aşağıdaki script MySQL dumpını alır, sıkıştırır ve rclone ile dış depolamaya gönderir. Aynı zamanda 30 günden eski uzak yedekleri temizler:
#!/bin/bash
# /usr/local/bin/backup-remote.sh
DATE=$(date +%Y-%m-%d)
BACKUP_DIR=\"/var/backups\"
REMOTE=\"b2remote:yedek-bucket-adi\"
LOG=\"/var/log/backup-remote.log\"
# MySQL dump al ve sıkıştır
mysqldump -u root --all-databases | gzip > \"$BACKUP_DIR/mysql-$DATE.sql.gz\"
# /etc ve uygulama dizini yedekle
tar -czf \"$BACKUP_DIR/etc-$DATE.tar.gz\" /etc
tar -czf \"$BACKUP_DIR/app-$DATE.tar.gz\" /var/www
# Dış depolamaya gönder
rclone sync \"$BACKUP_DIR\" \"$REMOTE/$HOSTNAME\" \
--exclude \"*.tmp\" \
--log-file \"$LOG\" \
--log-level INFO
# 30 günden eski yedekleri uzaktan sil
rclone delete \"$REMOTE/$HOSTNAME\" \
--min-age 30d \
--log-file \"$LOG\"
Script'i çalıştırılabilir yapın ve ilk kez manuel test edin:
chmod +x /usr/local/bin/backup-remote.sh
/usr/local/bin/backup-remote.sh
rclone sync yerine rclone copy da kullanılabilir; fark şudur: sync uzakta olup yerelde olmayan dosyaları siler, copy ise yalnızca ekler. Silme işlemi istemiyorsanız copy tercih edin ve eski yedekleri --min-age ile ayrıca temizleyin.
Şifreleme: Verileri Göndermeden Önce Korumak
Nesne depolamaya aktarılan yedekler, sağlayıcı tarafında okunabilir olmamalıdır. Bunu sağlamanın en pratik yolu rclone crypt modülüdür.
rclone config
# Tip: crypt
# Remote: b2remote:yedek-bucket-adi/encrypted
# Dosya adı şifreleme: standard
# Şifre: güçlü rastgele bir parola belirleyin
Bu remote'a b2crypt adını verdikten sonra scriptteki REMOTE değişkenini b2crypt: olarak değiştirmeniz yeterlidir. B2 panelinde dosyalar anlamsız isimlerle görünür; içerikler AES-256 ile şifrelenmiş olur. Anahtarı yalnızca siz bilirsiniz.
Alternatif olarak age aracı ile dump dosyasını göndermeden önce şifreleyebilirsiniz:
# age kurulumu
apt install age
# Anahtar çifti üret
age-keygen -o ~/.age/key.txt
# Şifreli dump oluştur
mysqldump -u root --all-databases | gzip | \
age -r $(grep public ~/.age/key.txt | awk \'{print $NF}\') \
> \"$BACKUP_DIR/mysql-$DATE.sql.gz.age\"
Geri yükleme sırasında özel anahtarı kaybetmek tüm yedekleri erişilemez kılar. Özel anahtarı mutlaka güvenli bir parola yöneticisine veya ayrı bir fiziksel ortama kaydedin.
Cron ile Zamanlama ve İzleme
Script hazır olduğunda cron ile gece otomatik çalıştırın:
crontab -e
# Her gece 02:30'da çalıştır
30 2 * * * /usr/local/bin/backup-remote.sh >> /var/log/backup-remote.log 2>&1
Script başarısız olduğunda e-posta bildirimi almak için sonuna aşağıdaki bloğu ekleyin:
EXIT_CODE=$?
if [ $EXIT_CODE -ne 0 ]; then
echo \"Yedekleme hatasi: $DATE, cikis kodu: $EXIT_CODE\" | \
mail -s \"BACKUP FAILED - $HOSTNAME\" [email protected]
fi
Daha güvenilir bir izleme için healthchecks.io (ücretsiz plan mevcut) kullanın. Her başarılı çalışma sonunda bir URL'ye ping atılır; 24 saat ping gelmezse e-posta veya Telegram bildirimi gönderilir:
# Başarılı çalışma sonunda ping at
curl -fsS --retry 3 https://hc-ping.com/sizin-uuid-degeri > /dev/null
Bu yaklaşım, cron'un sessizce hata verdiği durumları (yanlış ortam değişkeni, disk dolması, ağ kesintisi) yakalamanızı sağlar. Yalnızca log dosyasına güvenmek yetmez; çünkü log yazmak da başarısız olabilir.
Sonuç
Dış depolamaya otomatik yedek göndermek tek bir rclone copy komutundan ibaret değildir. Çalışan bir sistem şu dört unsuru birden karşılamalıdır: düzenli zamanlama, şifreli transfer, uzakta otomatik temizlik ve başarısız çalışma bildirimi. 100 GB altı veri için Backblaze B2 + rclone crypt kombinasyonu en düşük maliyetli ve kurulumu en hızlı başlangıç noktasıdır. GDPR uyumluluğu veya sabit maliyet öncelikliyse Hetzner Storage Box + SFTP tercih edin. Bugün scripti kurup ilk manuel transferi test edin; ardından cron ve healthchecks.io ile izlemeyi aktif edin. Bir sonraki adım olarak yedekten gerçek geri yükleme testi yapın — çünkü test edilmemiş yedek, yedek sayılmaz.
Hosting karşılaştırması yapmaya hazır mısın?
100+ firmanın fiyatlarını tek tıkla karşılaştır, en uygun paketi bul.
Hosting Karşılaştır →İlgili Yazılar
Sunucuda Port Taramalarını Tespit Etme: Net İzleme ve Log Rehberi
Port taraması tespiti için doğru loglar, fail2ban/iptables/WAF kontrolleri, anomali eşikleri ve olay akışı adımlarını net bir rehberle öğrenin.
DKIM, SPF, DMARC: E-posta Deliverability Net Rehberi
DKIM, SPF ve DMARC ayarlarını doğru kurun: kayıt örnekleri, test adımları, yaygın hatalar ve deliverability etkisi için net kontrol listesi.
Hosting Paketi Seçerken Yapılan 5 Hata ve Net Çözüm Rehberi
Hosting paketi seçerken yapılan 5 yaygın hatayı öğrenin: yanlış kaynak planlama, kontrol paneli beklentisi, yedekleme/SSL eksikleri ve daha fazlası.
Açık Portları Kapatma: Sunucu Hardening Rehberi
Açık portları kapatmak için net kontrol adımları: hangi portlar riskli, nasıl taranır, güvenli kapatma ve kalıcı hardening ayarları.