Linux Sunucularda Rsync ve Cron Jobs ile Otomatik Yedekleme Kurulumu (2026)

Linux Sunucularda Rsync ve Cron Jobs ile Otomatik Yedekleme Kurulumu (2026)

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.
Örnek bir yerel senaryoda, /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/html kullanımı html klasö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ı

  • Her gece saat 02:30'da çalıştırmak için:
  •    30 2 * * * /usr/local/bin/yedekle.sh >/dev/null 2>&1
       

  • Her pazar gecesi saat 03:00'da çalıştırmak için:
  •    0 3 * * 0 /usr/local/bin/yedekle.sh >/dev/null 2>&1
       

  • Her 6 saatte bir çalıştırmak için:
  •    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:

  • Dikkatsiz --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.
  • Rotasyon ve Disk Alanı Yönetimi: Sürekli yedek almak ancak eski yedekleri silmemek hedef sunucu diskini kısa sürede doldurur. Hedef sunucuda 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 {} \;
       
  • Yedek Doğrulama (Restorasyon Testi): Alınan yedeklerin çalışır durumda olup olmadığını periyodik olarak test edin. Aksi halde felaket anında bozuk dökümlerle karşılaşabilirsiniz.
  • Kök (Root) Kullanıcı Riski: SSH anahtarlarını doğrudan 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.

    Sıkça Sorulan Sorular

    Rsync `--delete` parametresi ne işe yarar ve güvenli midir?
    Rsync --delete parametresi, kaynak dizinde silinen dosyaların hedef dizinden de silinmesini sağlayarak tam bir ayna kopya oluşturur. Veri kaybı riskini önlemek adına doğru dizin yollarının girildiğinden emin olunmalı veya versiyonlu yedekleme tercih edilmelidir.
    Cron görevinin çalışıp çalışmadığını nasıl kontrol edebilirim?
    Cron görevlerinin çalışma geçmişini Linux dağıtımına bağlı olarak '/var/log/syslog' veya '/var/log/cron' dosyalarından inceleyebilirsiniz. Ayrıca betik içinde çıktıları özel bir log dosyasına yönlendirerek süreçleri takip edebilirsiniz.
    Rsync ile veri transfer ederken SSH şifresi sorması nasıl engellenir?
    SSH anahtar çifti (ssh-keygen) oluşturup kamu anahtarını (public key) hedef sunucuya 'ssh-copy-id' komutu ile aktararak parola sormayan güvenli kimlik doğrulaması kurabilirsiniz.
    Rsync ile tam yedekleme mi yoksa artımlı (incremental) yedekleme mi yapılır?
    Rsync doğası gereği delta transfer algoritması çalıştırır. Yalnızca değişen blokları aktardığı için artımlı yedekleme mantığıyla çalışır ve ciddi miktarda zaman ve bant genişliği tasarrufu sağlar.
    WxDigitals
    WxDigitals

    WebTeknoloji.net editör ekibi; web geliştirme, SEO, hosting ve yapay zeka alanlarında üretilen içeriklerin araştırma, test ve yayın süreçlerini yürütür. Tüm incelemeler gerçek kullanım deneyimine, karşılaştırmalar ise resmi dokümantasyon ve güncel fiyatlandırma sayfalarına dayanır.

    Bu içeriği faydalı bulduysanız…

    Haftalık teknoloji & SEO rehberlerimize katılın, 38 maddelik Teknik SEO Kontrol Listesi PDF'ini hediye olarak hemen indirin.

    Yorumlar (0)

    Henüz yorum yapılmamış. İlk yorumu siz yapın!

    Yorum Yazın