Veri kaybı, modern web altyapılarında karşılaşılabilecek en maliyetli felaketlerden biridir. Donanım arızaları, siber saldırılar veya insan kaynaklı hatalar nedeniyle sistemlerin çökmesi, düzenli bir veri yedekleme mekanizmasına sahip olmayı zorunlu kılar. Linux sunucularda Rsync ve Cron Jobs ile otomatik yedekleme sistemi kurmak, ekstra lisans ücreti ödemeden enterprise seviyesinde esnek, hızlı ve son derece güvenilir bir yedekleme mimarisi oluşturmanızı sağlar.
Rsync (Remote Sync) aracı, delta transfer algoritması sayesinde yalnızca değişen veri bloklarını aktararak bant genişliğini ve işlemci kullanımını minimuma indirir. Bu aracı zaman odaklı bir görev zamanlayıcı olan Cron Jobs ile birleştirdiğinizde, sunucunuz insan müdahalesine ihtiyaç duymadan belirlenen periyotlarda yedekleme yapar. Sunucularınızın veri güvenliğini üst seviyeye çıkarmak için öncelikle Web Sitesi Yedekleme Stratejisi: 3-2-1 Kuralı ve Otomatik Yedekleme prensiplerini anlamak büyük önem taşır. Bu rehberde, Linux dağıtımlarında sıfırdan otomatik Rsync yedekleme mimarisinin nasıl yapılandırılacağını adım adım inceleyeceğiz.
Rsync Temelleri ve Kritik Parametre İncelemesi
Rsync, yerel klasörler arasında veri kopyalayabildiği gibi SSH protokolü üzerinden uzak sunuculara da veri transfer edebilir. Komut satırında kullanılan parametrelerin doğru seçilmesi, sistem kaynaklarının verimli kullanılması ve veri bütünlüğünün korunması için kritiktir.
Sık kullanılan temel Rsync parametreleri ve işlevleri şunlardır:
-a(--archive): Arşiv modu. Dosya izinlerini, sahipliklerini, sembolik bağlantıları, zaman damgalarını ve yetkileri koruyarak yinelemeli (recursive) kopyalama yapar.-v(--verbose): İşlem sırasında detaylı çıktı sunar.-z(--compress): Veri aktarımı sırasında dosyaları sıkıştırarak ağ kullanımını azaltır.-h(--human-readable): Dosya boyutlarını KB, MB, GB formatında okunabilir gösterir.--delete: Kaynak dizinde silinen bir dosyanın hedef dizinde de silinmesini sağlar. Tam bir ayna (mirror) oluşturur.-e ssh: Transferin SSH tüneli üzerinden şifrelenerek güvenli şekilde yapılmasını sağlar.--exclude: Yedeğe dahil edilmek istenmeyen dosya veya klasör kaliplarini belirtir.
/var/www/html dizinini /backup/www dizinine senkronize etmek için aşağıdaki komut kullanılır:rsync -avzh /var/www/html/ /backup/www/
Kritik İpucu: Kaynak dizinin sonundaki eğik çizgiye (/) dikkat edin./var/www/html/kullanımı klasörün içindekileri aktarırken,/var/www/htmlkullanımıhtmlklasörünün kendisini hedef dizine kopyalar.
SSH Anahtarları ile Şifresiz ve Güvenli Bağlantı Kurulumu
Otomatik yedekleme işlemlerinin Cron aracılığıyla sorunsuz çalışması için sunucular arasında parola sormayan SSH anahtar tabanlı kimlik doğrulaması (SSH Key Authentication) kurulmalıdır.
1. Adım: SSH Anahtar Çifti Oluşturma
Yedeklemeyi başlatacak olan kaynak sunucuda (veya hedef sunucuda) Ed25519 algoritmasını kullanarak yüksek güvenlikli bir anahtar üretimek için şu komutu çalıştırın:
ssh-keygen -t ed25519 -C "otomatik-yedekleme-2026"
Sistem size anahtarın kaydedileceği yeri ve passphrase (parola) belirlemenizi soracaktır. Cron otomasyonunun kesintisiz çalışması için parola alanını boş bırakın (Enter tuşuna basın).
2. Adım: Kamu Anahtarını Uzak Sunucuya Aktarma
Oluşturulan kamu anahtarını (public key) hedef yedekleme sunucusuna aktarmak için ssh-copy-id aracı kullanılır:
ssh-copy-id -i ~/.ssh/id_ed25519.pub kullanici@uzak-sunucu-ip
Bu işlemden sonra test amaçlı SSH bağlantısı yapın:
ssh kullanici@uzak-sunucu-ip
Şifre sormadan doğrudan terminal erişimi sağlandıysa SSH yapılandırması başarıyla tamamlanmıştır.
Adım Adım Otomatik Yedekleme Betiği (Bash Script) Hazırlama
Yedekleme sürecini standartlaştırmak, veri tabanı dökümlerini almak ve işlem loglarını kaydetmek için kapsayıcı bir Bash betiği oluşturmamız gerekir.
Örnek senaryomuzda hem web dosyalarını hem de MySQL/MariaDB veri tabanını yedekleyen gelişmiş bir betik yazacağız. Özellikle Adım Adım WooCommerce Kurulumu: WordPress ile E-Ticaret Sitesi Açma Rehberi gibi dinamik ve veri tabanı bağımlı sistemlerde veri tabanı yedeğinin dosya yedeği ile senkronize alınması şarttır.
Sisteminizde /usr/local/bin/yedekle.sh adında bir dosya oluşturun:
sudo nano /usr/local/bin/yedekle.sh
İçerisine aşağıdaki betiği ekleyin:
#!/bin/bash
# --- DEĞİŞKENLER ---
TARIH=$(date +%Y-%m-%d_%H-%M)
YEDEK_DIR="/tmp/gecici_yedek"
UZAK_KULLANICI="backupuser"
UZAK_SUNUCU="192.168.1.150"
UZAK_DIR="/backups/sunucu1"
LOG_DOSYASI="/var/log/rsync_yedek.log"
# Log Başlangıcı
echo "=== Yedekleme Başladı: $TARIH ===" >> $LOG_DOSYASI
# Geçici dizini oluştur
mkdir -p $YEDEK_DIR
# 1. Veri Tabanı Yedeği Al
echo "Veri tabanı dışa aktarılıyor..." >> $LOG_DOSYASI
mysqldump --all-databases | gzip > $YEDEK_DIR/db_yedek_$TARIH.sql.gz
# 2. Rsync ile Uzak Sunucuya Transfer
echo "Dosyalar aktarılıyor..." >> $LOG_DOSYASI
rsync -avz --delete \
--exclude='*.tmp' \
--exclude='cache/' \
-e "ssh -i /root/.ssh/id_ed25519" \
/var/www/html/ \
$YEDEK_DIR/ \
$UZAK_KULLANICI@$UZAK_SUNUCU:$UZAK_DIR/ >> $LOG_DOSYASI 2>&1
# 3. Temizlik
rm -rf $YEDEK_DIR
echo "=== Yedekleme Tamamlandı: $(date +%Y-%m-%d_%H-%M) ===" >> $LOG_DOSYASI
Dosyayı kaydedip çıktıktan sonra betiğe çalıştırma izni verin:
sudo chmod +x /usr/local/bin/yedekle.sh
Betiği manuel çalıştırarak test edin:
sudo /usr/local/bin/yedekle.sh
cat /var/log/rsync_yedek.log komutu ile işlem çıktılarını ve olası hataları kontrol edin.
Linux Sunucularda Rsync ve Cron Jobs ile Otomatik Yedekleme Yapılandırması
Yazdığımız yedekleme betiğini belirli zaman aralıklarında otomatik çalışacak şekilde zamanlamak için Linux işletim sistemlerinin standart zamanlayıcısı Cron kullanılır.
Cron ayarlarını düzenlemek için aşağıdaki komutu çalıştırın:
crontab -e
Cron Sözdizimi (Syntax) Yapısı
Cron zaman çizelgesi 5 temel alandan oluşur:
* * * * * /çalıştırılacak/komutun/yolu
│ │ │ │ │
│ │ │ │ └─── Haftanın Günü (0 - 6) (Pazar=0)
│ │ │ └────── Ay (1 - 12)
│ │ └──────── Ayın Günü (1 - 31)
│ └────────── Saat (0 - 23)
└──────────── Dakika (0 - 59)
Yaygın Cron Zamanlama Senaryoları
30 2 * * * /usr/local/bin/yedekle.sh >/dev/null 2>&1
0 3 * * 0 /usr/local/bin/yedekle.sh >/dev/null 2>&1
0 */6 * * * /usr/local/bin/yedekle.sh >/dev/null 2>&1
Gece saat 02:30, sunucu trafiğinin genellikle en düşük olduğu zaman dilimidir. Sistem kaynaklarını zorlamamak adına otomatik yedeklemeleri bu saatlere ayarlamak en iyi uygulamadır.
SSL Sertifikaları ve Hassas Yapılandırma Dosyalarının Yedeklenmesi
Bir web sunucusunda yalnızca site dosyalarını yedeklemek, felaket kurtarma anında sistemin hızlıca ayağa kalkması için yeterli değildir. Nginx/Apache konfigürasyonları ve SSL sertifikalarının da yedekleme planına dahil edilmesi şarttır.
Özellikle Let's Encrypt ile Ücretsiz SSL Sertifikası Kurulumu (Certbot Rehberi) kullanarak yapılandırdığınız sertifika dizinlerini (/etc/letsencrypt) yedeklemeniz, yeni sunucu kurulumunda SSL doğrulama süreçleriyle zaman kaybetmenizi engeller.
Betiğinize aşağıdaki gibi ek bir Rsync satırı ekleyebilirsiniz:
rsync -avz /etc/letsencrypt/ $UZAK_KULLANICI@$UZAK_SUNUCU:$UZAK_DIR/ssl_yedek/
Otomatik Yedeklemede Sık Yapılan Hatalar ve Güvenlik Tavsiyeleri
Rsync ve Cron kombinasyonu çok güçlü olsa da hatalı yapılandırmalar ciddi veri kayıplarına yol açabilir. Dikkat edilmesi gereken kritik noktalar şunlardır:
--delete Kullanımı: Kaynak dizin boşaldığında veya yanlış bir dizin belirtildiğinde --delete parametresi hedefteki tüm yedeklerin silinmesine yol açabilir. Bu riski önlemek için yedekleme dizinlerinde Anlık Görüntü (Snapshot) veya artımlı (incremental) yedekleme mantığı kurgulayın.find komutu kullanarak belirli bir günden eski yedekleri otomatik temizleyen ikincil bir betik çalıştırın: find /backups/sunucu1/db_yedek_* -mtime +30 -exec rm {} \;
root kullanıcısı üzerinden bağlamak güvenlik açığı yaratabilir. Sadece yedekleme dizinine yazma yetkisi olan kısıtlı bir sistem kullanıcısı (backupuser) oluşturun.Sonuç
Linux sunucularda Rsync ve Cron Jobs ile otomatik yedekleme altyapısı kurmak, sistem yöneticilerine tam denetim, yüksek hız ve minimum kaynak tüketimi sağlar. Şifresiz SSH anahtarları ve özelleştirilmiş Bash betikleri ile birleştiğinde, verileriniz her türlü donanımsal ve yazılımsal felakete karşı güvende kalır.
Sonraki Adım: Şimdi kendi Linux sunucunuza SSH ile bağlanın, rehberdeki adımları takip ederek ilk yedekleme betiğinizi oluşturun ve crontab -e ile gece saatlerine otomatik görev ekleyin. İlk yedekleme başarılı olduktan sonra yedekten geri dönme (restore) adımlarını test etmeyi unutmayın.
Yorumlar (0)
Henüz yorum yapılmamış. İlk yorumu siz yapın!
Yorum Yazın