Linux Sunucularda Rsync ile Otomatik Yedekleme ve Senkronizasyon

Linux Sunucularda Rsync ile Otomatik Yedekleme ve Senkronizasyon
Yazı Özetini Göster

Linux Sunucularda Rsync ile Otomatik Yedekleme ve Senkronizasyon

rsync, dosya ve dizinleri akıllı fark algoritmasıyla kopyalayan; yalnızca değişen blokları transfer ederek bant genişliğini ve zamanı optimize eden olgun bir yedekleme/senkronizasyon aracıdır. İster tek bir uygulama sunucusunu yedekleyin, ister çoklu veri merkezi arasında aynalama yapın: rsync; artımlı yedekler, sürümleme (snapshot), SSH üzerinden şifreli aktarım ve otomasyon gibi ihtiyaçları sade komutlarla karşılar. Bu rehberde, Linux üzerinde üretime uygun bir rsync yedekleme mimarisini planlayıp kuracak, doğrulama, güvenlik ve kurtarma adımlarını tamamlayacaksınız. Yüksek erişilebilirlik için iş yüklerinizi VDS ya da performans odaklı Premium VDS üzerinde çalıştırmanız önerilir; altyapı Sunucu Barındırma tarafında konumlandırılabilir.

Temel Rsync Mantığı ve Sağlam Parametre Seti

Rsync iki uç arasında kaynak → hedef kopyası yapar; isteğe göre tek yönlü yedek veya iki yönlü senkron kurabilirsiniz. Üretimde güvenli ve tutarlı bir temel için şu parametreler önerilir:

rsync -aHAX --numeric-ids --info=progress2 --delete \
      --partial --inplace --one-file-system \
      --exclude-from=/etc/rsync/excludes.txt \
      /var/www/  backup@hedef:/backup/hostA/www/
  • -a: Arşiv modu (izinler, saat damgası, bağlantılar vb.)
  • HAX: Hardlink (-H), ACL (-A) ve xattr (-X) koruması
  • --numeric-ids: UID/GID eşleşmeleri için güvenli davranış
  • --delete: Kaynaktan silinen dosyaları hedeften de sil
  • --one-file-system: Farklı bağlama noktalarına atlamayı engeller
  • --partial/--inplace: Kopan transferlerin devamını ve büyük dosyalarda verimli güncellemeyi sağlar
  • --exclude-from: Log, cache, temp gibi hariç listesi

SSH Üzerinden Güvenli Aktarım

Varsayılan olarak rsync, SSH tüneliyle şifreli çalıştırılabilir. Parolasız ve güvenli otomasyon için yalnızca rsync yetkilerine sahip kısıtlı anahtar kullanın.

# Kaynakta:
ssh-keygen -t ed25519 -C "rsync-backup"
ssh-copy-id backup@hedef

# Test:
rsync -az -e "ssh -o StrictHostKeyChecking=yes" /etc/ backup@hedef:/backup/hostA/etc/

SSH için ForceCommand ve from= IP kısıtlaması uygulayarak anahtarın yalnız rsync amaçlı kullanımını zorlayabilirsiniz.

Snapshot (Sürümleme) ile Artımlı Yedek

–link-dest parametresi, değişmeyen dosyaları hardlink ile referanslayıp yalnız farkları kopyalar; böylece her çalıştırmada “tam yedek görünümlü” ancak çok az alan kullanan bir snapshot üretirsiniz.

# Önceki snapshot dizinini referans alarak yeni snapshot oluşturma
STAMP=$(date +%F_%H-%M)
rsync -aHAX --delete --link-dest=/backup/hostA/snapshots/son \
      /data/ /backup/hostA/snapshots/$STAMP

# "son" symlinkini güncelle
ln -sfn /backup/hostA/snapshots/$STAMP /backup/hostA/snapshots/son

Bu modelle dilediğiniz zamana salt okunur geri dönüş yapabilir, dosya bazlı kurtarmayı saniyeler içinde gerçekleştirebilirsiniz.

Performans İpuçları: CPU, IO ve Bant Genişliği

  • Sıkıştırma: WAN üzerinde -z kullanın; CPU yoğun ortamlarda ölçümle karar verin.
  • IO Ayarı: Büyük dosyalarda --inplace + iyi bir I/O kuyruğu; çok sayıda küçük dosyada --whole-file bazı durumlarda daha hızlı olabilir.
  • Sınırlama: Üretimde ağ doygunluğunu önlemek için --bwlimit=20m gibi limitler belirleyin.
  • Checksum: Şüpheli bağlantılarda --append-verify ve gerekirse --checksum.

Hariç Tutma (Exclude) Listesi

Gereksiz dosyaları taşıyarak yedekleri şişirmeyin. Örnek bir liste:

# /etc/rsync/excludes.txt
*.swap
*.tmp
cache/
node_modules/
var/log/
*.iso

Rsync Sunucusu (rsyncd) mı, SSH mı?

İki yöntem de kullanılabilir. Güvenlik ve sadelik açısından çoğu durumda SSH tüneli tercih edilir. Yüksek sayıda istemciye hizmet veren merkezi yedek kutularında rsyncd demon’u performans ve kontrol için avantajlı olabilir.

# /etc/rsyncd.conf (örnek)
uid = root
gid = root
use chroot = yes
read only = no
[backup]
    path = /backup/hostA
    hosts allow = 10.0.0.0/24

Otomasyon: cron veya systemd timer

cron ile zamanlama

# Her gece 02:30'da snapshot
30 2 * * * /usr/local/bin/rsync-nightly.sh >/var/log/rsync-nightly.log 2>&1

systemd timer ile esnek planlama

# /etc/systemd/system/rsync-nightly.service
[Unit]
Description=Rsync Nightly Backup

[Service]
Type=oneshot
ExecStart=/usr/local/bin/rsync-nightly.sh

# /etc/systemd/system/rsync-nightly.timer
[Unit]
Description=Run rsync backup nightly

[Timer]
OnCalendar=*-*-* 02:30:00
Persistent=true

[Install]
WantedBy=timers.target

# Etkinleştir
systemctl enable --now rsync-nightly.timer

Bulut Depolama ile Entegrasyon

Rsync doğrudan S3/APIs konuşmaz; ancak rclone ile hedefi S3/Backblaze/Google Drive gibi bulutlara bağlayabilir, rsync’i yerel bir mount üzerinden kullanabilirsiniz. Alternatif olarak, yedekler önce yerel diske alınır, ardından rclone ile buluta senkron edilir.

Doğrulama ve Geri Yükleme (Restore)

Yedek, doğrulandığı kadar değerlidir. Düzenli olarak kontrollü geri dönüş provası yapın.

# Kaynak ve hedefi karşılaştır (yalnız liste)
rsync -aHAXn --delete /data/ backup@hedef:/backup/hostA/data/

# Tek bir dosyayı geri getir
rsync -a backup@hedef:/backup/hostA/snapshots/2025-10-26_02-30/path/file.txt /data/path/

Versiyonlu snapshot yapınız varsa zamana geri dönmek yalnızca doğru dizini seçmek kadar basittir.

Güvenlik En İyi Pratikleri

  • İlk hedefe yazma yetkisini kısıtlayın: Hedefte ayrı bir backup kullanıcısı ve chroot.
  • SSH anahtarını sınırlandırın: from=IP,command="/usr/bin/rrsync /backup" gibi kısıtlamalar.
  • Uçtan uca şifreleme: WAN’da SSH dışında tunnel/VPN koruması tercih edin.
  • Ransomware’a dayanıklılık: Salt okunur snapshot dizinleri; buluta gecikmeli replikasyon.

Tipik Senaryolar

Uygulama sunucusu → Yedek kutusu

Web kökleri (/var/www) ve konfigürasyon (/etc) her gece; veritabanı dump’ları (mysqldump, pg_dump) saatlik rsync ile taşınır. Trafiğin düşük olduğu saatlerde --bwlimit ile sınırlayın.

İki veri merkezi arasında aynalama

Her iki uçta da snapshot modeli, seed kopya sonrası artımlı rsync; kritik dosyalarda --checksum ile tutarlılık garantisi.

Paylaşımlı hosting’den çıkış

Mevcut barındırmadan yeni ortama geçişte rsync ile “canlı taşıma” yapılır. DNS kesintisini minimize etmek için son senkronu cutover’dan hemen önce çalıştırın. Bu tür geçişler için Linux Hosting ve kurumsal geçiş senaryolarında Kurumsal Hosting destekleri süreci hızlandırır.

İzleme ve Uyarı

Her job sonunda logları döngüsel saklayın ve hata koduna göre uyarı gönderin. Mevcut izleme altyapınıza göre systemd journal, Logrotate ve e-posta bildirimleri yeterli olabilir; daha gelişmiş raporlama için Netdata veya Zabbix/PRTG gibi çözümlerle transfer hacmi ve hızını takip edebilirsiniz.

Sonuç: Basit Komut, Kurumsal Dayanıklılık

rsync, doğru parametreler ve snapshot stratejisiyle birleştiğinde kurumsal seviyede esnek, hızlı ve güvenilir bir yedekleme/senkron çözümü sunar. Planlı çalıştırma, versiyonlama ve düzenli doğrulama; kurtarma anında “sürprizleri” ortadan kaldırır. Altyapınızı büyütürken HostLigo’nun ölçeklenebilir VDS ve Premium VDS planlarıyla düşük gecikme ve yüksek IOPS avantajı elde ederek yedeklerinizin penceresini kısaltabilir, kurtarma hedeflerinizi (RPO/RTO) aşağı çekebilirsiniz.

Bir Yorum Yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Benzer Yazılar