rsync ile sunucular arası veri senkronizasyonu rehberi (2026)
rsync ile VDS/VPS’ler arasında güvenilir senkronizasyon kurun. SSH anahtarı, doğru parametreler, test ve geri alma adımlarıyla net rehber.
Sunucu yönetiminde en sık karşılaşılan ihtiyaçlardan biri, iki veya daha fazla sistem arasında veriyi tutarlı tutmaktır. Manuel kopyalama hem zaman kaybettirir hem de “güncel mi değil mi” belirsizliği doğurur. Bu rehberde rsync ile sunucular arası veri senkronizasyonunu, pratik komutlar ve kontrol listesiyle net şekilde kurmayı öğreneceksiniz. Hedefiniz, yanlış silme riskini azaltıp performansı artırmak ve senkronizasyonu ölçülebilir hale getirmektir.
rsync nedir, neden tercih edilir?
rsync (remote sync), iki dizin arasındaki farkları bulup sadece değişen kısımları kopyalar. Bu sayede ağ trafiğini ve süreyi azaltır. rsync’nin öne çıkan tarafı, küçük dosya değişikliklerinde hızlı çalışması ve aynı işi tekrar tekrar yaptığınızda tutarlı sonuç üretmesidir.
rsync ile tipik senaryolar: - Web sunucusu ile yedek sunucusu arasında dosya senkronu - Uygulama kodunu birden fazla VDS/VPS’e dağıtma - Log veya içerik arşivini başka bir sunucuya aktarım - Geliştirme (dev) → üretim (prod) arasında dosya tabanlı güncelleme
rsync’in iki kritik davranışı
- Sen ancak neyin farklı olduğunu kopyalarım: Varsayılan olarak fark bulur.
- Silme davranışı açıktır: Yanlış parametreyle hedefteki dosyaları silebilirsiniz. Bu yüzden aşağıdaki parametreler dikkatle seçilmelidir.
Kurulum ve temel gereksinimler
İşin büyük kısmı iki uç sistemin (kaynak ve hedef) erişim altyapısında biter.
1) rsync paketi
Çoğu Linux dağıtımında rsync varsayılan olarak bulunur.
- Debian/Ubuntu:
- sudo apt-get update && sudo apt-get install -y rsync
- AlmaLinux/Rocky:
- sudo dnf install -y rsync
2) SSH erişimi (güvenli kanal)
rsync’in en yaygın kullanımı SSH üzerinden olur.
- Kaynak sunucudan hedefe SSH ile bağlanabildiğinizi test edin:
- ssh user@hedef-ip
- Parola yerine anahtar (SSH key) kullanın:
- Anahtar oluşturma: ssh-keygen -t ed25519
- Anahtarı hedefe ekleme: ssh-copy-id user@hedef-ip
3) Dosya izinleri ve kullanıcı kimliği
Senkron sonrası dosya sahipliği/izinler kritikse şu noktaları netleştirin: - Aynı kullanıcı adı ve UID’ler aynı mı? - Hedefte dizinlerin izinleri senkronu bozuyor mu? - Uygulama servisleri (ör. nginx, php-fpm) bu dosyalara hangi kullanıcıyla erişiyor?
Doğru dizin yapısı: “/” farkı ve en sık hata
rsync’te kaynak dizininde sondaki / işareti çok önemlidir.
rsync -a src/ hedef:/var/www/→srciçeriğiniwwwiçine kopyalarrsync -a src hedef:/var/www/→srcdizini adıyla birlikte kopyalar (hedefte ekstra bir katman oluşur)
Bu fark, dağıtımlarda sık görülen “dosyalar bir klasör fazla oluştu” problemini çözer ya da tetikler.
Başlangıç için güvenli senkron komutu (dry-run ile)
İlk denemeyi asla körlemesine yapmayın. rsync’in simülasyon modunu kullanın.
Dry-run (değişiklikleri gör)
Aşağıdaki komut sadece ne yapılacağını listeler:
rsync -avz --dry-run --itemize-changes -e ssh /var/www/site/ user@hedef-ip:/var/www/site/
-a(archive): izinler, zaman damgaları vb. korur-v(verbose): ayrıntılı rapor-z(compress): ağ üzerinden sıkıştırma--itemize-changes: hangi dosyada ne değiştiyi gösterir-e ssh: SSH kullan
Gerçek senkron
Dry-run doğru görünüyorsa aynısını “dry”sız çalıştırın:
rsync -avz -e ssh /var/www/site/ user@hedef-ip:/var/www/site/
Senkronu “sadece değişenleri” ve doğru şekilde tutmak için parametreler
rsync ile hedefteki durumun nasıl olacağını kontrol eden birkaç parametre var. Net karar için bunları birlikte okuyun.
1) Zaman damgaları ve boyut kontrolü
Varsayılan davranış birçok senaryoda yeterlidir. Ancak çok küçük değişikliklerde hassasiyet gerekebilir. - Zaman damgaları güvenilir mi? - Dosyalar aynı DOSYA SİSTEMİ üzerinde mi oluşturuluyor?
İleri seviye hassasiyet için:
- -c ile checksum tabanlı karşılaştırma (daha yavaş olabilir)
- İhtiyaç halinde kullanın: büyük veri için her zaman uygun değildir.
2) Silmeyi yönetmek: --delete risk kontrolü
--delete hedefte kaynakta olmayanları silecektir. Bu, “tam ayna” senaryolarında doğru; yanlış kullanılırsa üretimde ciddi veri kaybı doğurur.
Net yaklaşım: - Önce dry-run ile listeleyin - Sonra kısa aralıklarla tekrar çalıştırın ve farkları doğrulayın
Silme kontrollü örnek:
rsync -avz -e ssh --delete --dry-run /var/www/site/ user@hedef-ip:/var/www/site/
Gerçekleştirmeden önce bu komutun çıktısında nelerin silineceğini kontrol edin.
3) Yalnızca belirli dosyaları hariç tutma
Örneğin cache dizinlerini kopyalamak istemezsiniz. Hariç tutma örneği:
rsync -avz --exclude 'cache/' --exclude '*.log' -e ssh /var/www/site/ user@hedef-ip:/var/www/site/
Büyük veri ve performans: ağ + CPU ayarları
Performans genelde iki şeye bağlı olur: veri miktarı ve aktarım hızı.
Compression ne zaman işe yarar?
-zsıkıştırma, bant genişliği sınırlıysa fayda sağlar.- Dosyalar zaten sıkıştırılmışsa (ör. jpg, mp4) sıkıştırma kazancı düşer.
Net test önerisi:
- Aynı senaryoyu -z açık ve kapalı deneyin
- Hangi durumda aktarım süresi daha kısa oluyor ölçün
Parçalı/yeniden deneme (resumable) konusu
rsync varsayılan olarak “kesilince devam et” mantığıyla çalışmaz. Bu yüzden büyük transferlerde:
- --partial ile kısmi dosyaları koruma
- tekrar çalıştırdığınızda zaten kısmen dolu dosyaları yeniden değerlendirme
Örnek:
rsync -avz --partial --progress -e ssh /data/ user@hedef-ip:/data/
Senaryo bazlı net örnekler
Aşağıdaki tabloda, senaryonuza göre komut mantığını hızlıca seçebilirsiniz.
| Senaryo | Önerilen yaklaşım | Kritik parametre |
|---|---|---|
| Web dosyalarını yansıt (cache hariç) | Dry-run + sonra gerçek rsync | --exclude, -a |
| Hedef dizini kaynakla birebir tut | --delete ile tam eşitleme |
--delete |
| Sadece yeni/changed dosyaları aktar | Varsayılan fark karşılaştırma | -a |
| Büyük veri aktarımı | --partial ve ölçümlü deneme |
--partial, --progress |
| Dosyalar hassas doğruluk gerektirir | checksum ile karşılaştırma | -c |
1) Web içeriği senkronu (cache hariç)
rsync -avz --exclude 'cache/' --exclude 'tmp/' --exclude '*.log' -e ssh /var/www/site/ user@hedef-ip:/var/www/site/
2) Tam ayna senkron (silme kontrollü)
Önce simülasyon:
rsync -avz --delete --dry-run --itemize-changes -e ssh /var/www/site/ user@hedef-ip:/var/www/site/
Sonra gerçek:
rsync -avz --delete -e ssh /var/www/site/ user@hedef-ip:/var/www/site/
Cron ile otomasyon: saat gibi çalıştırın
Senkronu periyodik yapmak için cron kullanın. Buradaki amaç, aynı komutu aynı hedefe tutarlı biçimde uygulamak.
Örnek (her gece 02:15):
crontab -e
Sonra satır ekleyin:
15 2 * * * rsync -avz --delete -e ssh /var/www/site/ user@hedef-ip:/var/www/site/ >> /var/log/rsync-www.log 2>&1
Cron ile net kontrol
- Komut çıktısını log dosyasına yönlendirin
- Log dosyası disk doldurmasın; ayrıca log rotation yapın
- rsync çıkış kodlarını takip edin (CI gibi düşünün)
Senkronu doğrulama: “doğru mu?” adımları
rsync çalıştıktan sonra doğrulamak için iki katmanlı kontrol uygulayın:
-
Dosya listesi eşit mi? - Kaynak ve hedefte dosya sayısı/öznitelikleri benziyor mu?
-
Ölçülebilir tutarlılık - Kritik dosyalar için hash karşılaştırması yapın: -
sha256sumçıktısı her iki tarafta aynı mı?
Dosyalar çoksa hash hesaplamak maliyetli olabilir. Bu durumda:
- Sadece gerçekten kritik dizinleri hashleyin
- Ya da checksum’u rsync seviyesinde -c ile sınırlı veri için kullanın
Hataları azaltmak için güvenlik ve sağlamlık kontrolleri
1) SSH güvenliği
- Parola oturumunu kapatın (yalnızca anahtar):
/etc/ssh/sshd_config→PasswordAuthentication no - Kullanıcıyı en az yetkiyle çalıştırın (gereksiz root erişimi kullanmayın)
2) rsync’i doğru kullanıcının çalıştırması
- Hedefte dosya izinleri uygulama sunucusu kullanıcı adıyla uyumlu olmalı
- Aksi halde senkron başarılı görünse bile web servisleri okuyamaz
3) “Yanlış dizin” problemine karşı kontrol
- Komutlarda kaynak ve hedef yollarını net yazın
- Özellikle
--deletekullanmadan önce hedef dizininizin doğru olduğunu doğrulayın
Pratik kontrol listesi (her senkron öncesi)
- [ ] Kaynak dizininde sondaki
/doğru mu? - [ ] Önce
--dry-runyaptım mı? - [ ] Hariç tutmam gereken dizinler/uzantılar var mı?
- [ ]
--deletekullanacak mıyım? Kullanacaksa dry-run çıktısını kontrol ettim mi? - [ ] Hedef dizinde izinler ve sahiplik uygulama için uygun mu?
- [ ] Logları kaydediyor muyum?
- [ ] Cron periyodu veri büyümesine göre makul mi?
Sonuç: 1 saat içinde doğru kurulum, sonraki senkronlarda risk düşüşü
rsync ile sunucular arası senkronizasyonu doğru parametreler, doğru “/” kullanımı ve özellikle --dry-run kontrolü belirler. İlk adım olarak web içeriği gibi bir dizini hariç tutma ile senkronlayın, ardından gerekirse --delete ile tam eşitlemeye geçin. Hemen şimdi: (1) SSH anahtarını kurun, (2) simülasyonla farkları doğrulayın, (3) loglu cron ile periyodik hale getirin. Böylece hem hız kazanır hem de yanlış silme gibi riskleri sistematik şekilde ortadan kaldırırsınız.
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
Hosting Hesabı İçin 2FA Neden Zorunlu? Net Etki ve Kontrol
Hosting hesabında 2FA; kontrol paneli ele geçirilmesini, veri sızıntısını ve yetkisiz harcama riskini azaltır. Net nedenler ve kontrol adımları.
WordPress’te dosya izinleri: Hangi klasör ne olmalı?
WordPress’te dosya izinleri hangi dizinlerde kaç olmalı? Sahiplik, chmod, güvenli yapı, tipik hatalar ve net kontrol adımlarıyla öğrenin.
HTTP/3 (QUIC) Hosting’de Aktif mi? Test Rehberi (Adım Adım)
HTTP/3’ün (QUIC) aktif olup olmadığını kontrol etmek için tarayıcı, curl ve log testleriyle net yöntemler. Sonuç doğrulama adımları.
Node.js VDS Kurulumu: Performans ve güvenlik odaklı net yapı
Node.js uygulaması için VDS üzerinde net kurulum: OS seçimi, Nginx ters proxy, systemd, loglar, yedekleme ve güvenlik ayarları.
