Linux Sunucularda Rsync ile Otomatik Yedekleme ve Senkronizasyon
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
- SSH Üzerinden Güvenli Aktarım
- Snapshot (Sürümleme) ile Artımlı Yedek
- Performans İpuçları: CPU, IO ve Bant Genişliği
- Hariç Tutma (Exclude) Listesi
- Rsync Sunucusu (rsyncd) mı, SSH mı?
- Otomasyon: cron veya systemd timer
- cron ile zamanlama
- systemd timer ile esnek planlama
- Bulut Depolama ile Entegrasyon
- Doğrulama ve Geri Yükleme (Restore)
- Güvenlik En İyi Pratikleri
- Tipik Senaryolar
- Uygulama sunucusu → Yedek kutusu
- İki veri merkezi arasında aynalama
- Paylaşımlı hosting’den çıkış
- İzleme ve Uyarı
- Sonuç: Basit Komut, Kurumsal Dayanıklılık
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
-zkullanı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-filebazı durumlarda daha hızlı olabilir. - Sınırlama: Üretimde ağ doygunluğunu önlemek için
--bwlimit=20mgibi limitler belirleyin. - Checksum: Şüpheli bağlantılarda
--append-verifyve 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
backupkullanı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.