cPanel yıllıkta ücretsiz taşıma + SSLHemen İncele
Buyukweb
rsync ile Dosya Senkronizasyonu ve Uzak Yedekleme

rsync ile Dosya Senkronizasyonu ve Uzak Yedekleme

rsync ile dosya senkronizasyonu ve uzak yedekleme: delta aktarım mantığı, SSH üzerinden güvenli transfer, cron ile otomatik VDS yedekleme kurulumu.

rsync ile Dosya Senkronizasyonu ve Uzak Yedekleme

Sunucu yönetiminde en çok tekrarlanan işlerden biri, dosyaları bir yerden başka bir yere güvenli ve verimli şekilde taşımaktır. cp veya scp ile her seferinde dosyaların tamamını kopyalamak, özellikle gigabaytlarca veri söz konusu olduğunda hem zaman hem de bant genişliği kaybına yol açar. rsync, tam bu noktada devreye giren, 1996'dan beri Linux dünyasının vazgeçilmez araçlarından biri. Bu yazıda rsync'in nasıl çalıştığını, hangi parametrelerin ne işe yaradığını ve VDS ortamında uzak yedekleme akışını nasıl otomatikleştirebileceğinizi adım adım anlatıyoruz.

rsync Nedir ve Neden Kullanılır?

rsync, "remote sync" kısaltmasıdır ve iki konum arasında dosyaları senkronize etmek için tasarlanmıştır. Klasik kopyalama araçlarından farkı, yalnızca değişen kısımları aktarmasıdır. Bir dosyanın 10 GB'lık bir bölümü değişmemişse, rsync o bölümü tekrar göndermez; sadece farkı hedefe yazar. Bu özellik ona "delta transfer algoritması" adı verilen bir mekanizma sayesinde kazandırılmıştır.

Pratikte rsync üç ana senaryoda kullanılır:

  • Yerel senkronizasyon: Aynı sunucu içinde bir dizini başka bir dizine veya diske kopyalamak.
  • Uzak yedekleme: Bir VDS'teki verileri başka bir sunucuya veya yedek makineye periyodik olarak aktarmak.
  • Dağıtım (deployment): Kod veya statik dosyaları geliştirme ortamından üretim sunucusuna göndermek.

Büyükweb notu: VDS paketlerimizde günlük otomatik yedekleme zaten sunucu tarafında çalışıyor, ancak bu tek katmanlı bir güvenlik değil. Aynı verinin farklı bir sunucuda, kendi kontrolünüzde ikinci bir kopyasının bulunması — özellikle kritik veritabanları ve müşteri verileri için — felaket kurtarma planının olmazsa olmazıdır. rsync bu ikinci katmanı kurmanın en pratik yolu.

rsync Nasıl Çalışır? Delta Aktarım Mantığı

rsync, kaynak ve hedef dosyayı sabit boyutlu bloklara ayırır, her blok için hızlı bir kontrol toplamı (rolling checksum) hesaplar ve hedefteki hangi blokların kaynaktakiyle aynı olduğunu belirler. Sadece farklı olan bloklar ağ üzerinden gönderilir, geri kalan kısım hedefte zaten var olan veriden yeniden birleştirilir. Bu sayede:

  • Aynı dosyayı tekrar tekrar senkronize etmek çok hızlıdır.
  • Kesintiye uğrayan aktarımlar kaldığı yerden devam edebilir (-P parametresiyle).
  • Ağ trafiği, özellikle büyük log dosyaları veya veritabanı dump'larında ciddi oranda azalır.

Bu davranış, rsync'i özellikle düzenli aralıklarla tekrarlanan yedekleme işleri için scp veya tar + manuel transfer yöntemlerine göre çok daha verimli kılar.

Kurulum: Sunucunuzda rsync Var mı?

Çoğu modern Linux dağıtımında rsync varsayılan olarak kurulu gelir. Kontrol etmek için:

rsync --version

Kurulu değilse, dağıtımınıza göre paket yöneticisiyle kurabilirsiniz:

# Debian / Ubuntu tabanlı sistemler
apt install rsync -y

# RHEL / CentOS / AlmaLinux tabanlı sistemler
dnf install rsync -y

Paket yönetim komutlarına ve yum/dnf/apt arasındaki farklara daha detaylı bakmak isterseniz Linux paket yönetimi rehberimize göz atabilirsiniz. Uzak sunucuya rsync ile bağlanacaksanız, hem kaynak hem hedef makinede rsync'in kurulu olması gerektiğini unutmayın — sadece bir tarafta olması yeterli değildir.

Temel Sözdizimi ve Yerel Senkronizasyon

rsync'in genel kullanım şekli şöyledir:

rsync [parametreler] kaynak hedef

En sık kullanılan temel örnek:

rsync -avh /var/www/site/ /yedek/site/

Burada:

  • -a (archive) — izinleri, sahiplik bilgilerini, sembolik linkleri ve zaman damgalarını korur; bu genelde en önemli bayraktır.
  • -v (verbose) — hangi dosyaların aktarıldığını ekrana yazar.
  • -h (human-readable) — boyutları KB/MB/GB olarak okunabilir gösterir.

Kritik detay: Kaynak yoldaki sondaki eğik çizgi (/) davranışı değiştirir. /var/www/site/ (sonunda / var) yazarsanız, dizinin içeriği hedefe kopyalanır. /var/www/site (sonunda / yok) yazarsanız, site klasörünün kendisi hedef dizinin içine kopyalanır. Bu ayrım, yanlışlıkla iç içe geçmiş dizin yapıları oluşturmanın en yaygın sebebidir — ilk denemelerde mutlaka -n (dry-run) ile test edin.

rsync -avhn /var/www/site/ /yedek/site/

-n parametresi hiçbir dosyayı gerçekten kopyalamaz, sadece ne yapılacağını simüle eder. Özellikle --delete gibi yıkıcı parametrelerle çalışırken bu adımı atlamayın.

SSH Üzerinden Uzak Sunucuya Güvenli Senkronizasyon

rsync'in asıl gücü, SSH tüneli üzerinden iki farklı sunucu arasında çalışabilmesidir. Şifreli bağlantı sayesinde veriniz ağ üzerinde açık metin olarak dolaşmaz.

rsync -avz -e ssh /var/www/site/ kullanici@203.0.113.10:/yedek/site/

-z parametresi aktarım sırasında veriyi sıkıştırır; özellikle metin ağırlıklı dosyalarda (log, HTML, SQL dump) transfer süresini kısaltır. -e ssh ise rsync'e SSH'i taşıma katmanı olarak kullanmasını söyler.

Eğer uzak sunucuda SSH varsayılan 22 portunda değil, özel bir portta çalışıyorsa (güvenlik amacıyla port değiştirmek yaygın bir uygulamadır), portu -e parametresi içinde belirtmeniz gerekir:

rsync -avz -e "ssh -p 2222" /var/www/site/ kullanici@203.0.113.10:/yedek/site/

SSH bağlantısını ilk kez kuruyorsanız veya anahtar tabanlı kimlik doğrulamayı henüz yapılandırmadıysanız SSH bağlantısı nasıl yapılır yazımızdan başlayabilirsiniz. Port değiştirme ve buna bağlı rsync ayarları için de SSH port değiştirme rehberimiz faydalı olacaktır.

Büyükweb notu: Otomatik yedekleme betiklerinde şifre yerine SSH anahtarı kullanmanız şart. ssh-keygen -t ed25519 ile anahtar çifti oluşturup public anahtarı hedef sunucudaki ~/.ssh/authorized_keys dosyasına eklerseniz, cron ile çalışan rsync betiği kimseye şifre sormadan çalışır. Şifreyi betik içine gömmek, en sık karşılaşılan güvenlik zafiyetlerinden biridir.

Sık Kullanılan Parametreler

Aşağıdaki tablo, uzak yedekleme senaryolarında en sık ihtiyaç duyacağınız rsync parametrelerini özetliyor:

Parametre Anlamı
-a Arşiv modu; izin, sahiplik, sembolik link ve zaman damgasını korur
-v Ayrıntılı çıktı (hangi dosyanın aktarıldığını gösterir)
-z Aktarım sırasında sıkıştırma yapar
-h Boyutları okunabilir formatta gösterir
-P İlerleme çubuğu gösterir ve kesilen aktarımı devam ettirir
-n, --dry-run Hiçbir şey kopyalamadan simülasyon yapar
--delete Hedefte olup kaynakta olmayan dosyaları siler (birebir aynalama)
--exclude="desen" Belirtilen desene uyan dosya/klasörleri hariç tutar
--bwlimit=KBPS Aktarım hızını KB/s cinsinden sınırlar
-e "ssh -p PORT" Özel SSH portu kullanır
-c, --checksum Zaman damgası yerine checksum'a göre karşılaştırır (daha yavaş ama daha kesin)

Otomatik Uzak Yedekleme Kurulumu

Manuel çalıştırılan bir komut, unutulduğu an işe yaramaz hale gelir. Gerçek bir yedekleme stratejisi otomatik ve düzenli olmalıdır. Bunun en pratik yolu, rsync komutunu bir bash betiğine yazıp cron ile zamanlamaktır.

Örnek bir yedekleme betiği (/usr/local/bin/yedek-al.sh):

#!/bin/bash

TARIH=$(date +%Y-%m-%d)
KAYNAK="/var/www/"
HEDEF_KULLANICI="yedekuser"
HEDEF_IP="203.0.113.10"
HEDEF_YOL="/backup/site-$TARIH/"
LOG="/var/log/rsync-yedek.log"

echo "[$TARIH] Yedekleme başladı" >> "$LOG"

rsync -avz --delete \
  -e "ssh -p 2222 -i /root/.ssh/yedek_key" \
  --exclude="cache/" \
  --exclude="*.tmp" \
  "$KAYNAK" "$HEDEF_KULLANICI@$HEDEF_IP:$HEDEF_YOL" >> "$LOG" 2>&1

if [ $? -eq 0 ]; then
  echo "[$TARIH] Yedekleme başarılı" >> "$LOG"
else
  echo "[$TARIH] Yedekleme HATA ile sonuçlandı" >> "$LOG"
fi

Betiği çalıştırılabilir yapın ve crontab'a ekleyin:

chmod +x /usr/local/bin/yedek-al.sh
crontab -e

Her gece saat 03:00'te çalışacak şekilde:

0 3 * * * /usr/local/bin/yedek-al.sh

Bash betiği yazma ve cron zamanlama mantığını daha derinlemesine öğrenmek isterseniz bash script yazma ve temel otomasyon rehberimizi inceleyebilirsiniz. Bu yaklaşım, VDS üzerinde çalışan herhangi bir servisin (web sitesi, veritabanı dump'ı, konfigürasyon dosyaları) düzenli olarak farklı bir fiziksel konuma yedeklenmesini sağlar — sunucu üzerinde bir donanım arızası ya da yanlışlıkla silme durumunda ikinci bir kurtarma noktanız olur.

VDS ortamınızda bu tür otomasyon betiklerini çalıştırmak için yeterli kaynağa (özellikle disk I/O ve bant genişliğine) sahip olmanız önemlidir; ihtiyacınıza göre kaynak seçimi için VDS sunucu paketlerimize göz atabilirsiniz.

--delete, --exclude ve Bant Genişliği Yönetimi

--delete parametresi, hedef dizini kaynakla birebir aynı hale getirir. Kaynaktan silinen bir dosya, bir sonraki senkronizasyonda hedeften de silinir. Bu davranış "gerçek bir ayna" istediğinizde faydalıdır ama dikkatsiz kullanıldığında hedefteki değerli verinin kaybolmasına yol açabilir. Bu yüzden --delete içeren her komutu önce -n ile dry-run olarak test etmenizi öneririz:

rsync -avzn --delete /var/www/site/ kullanici@203.0.113.10:/yedek/site/

--exclude ile belirli dosya veya klasörleri senkronizasyon dışında bırakabilirsiniz. Örneğin önbellek klasörlerini, log dosyalarını veya geçici dosyaları hariç tutmak transfer süresini ve hedefteki gereksiz veri birikimini azaltır:

rsync -avz --exclude="*.log" --exclude="tmp/" --exclude="node_modules/" /proje/ kullanici@sunucu:/yedek/proje/

Birden fazla hariç tutma kuralını ayrı bir dosyada tutmak isterseniz --exclude-from=hariç-tutulanlar.txt kullanabilirsiniz.

Paylaşımlı bir ağ hattında veya düşük bant genişlikli bir bağlantıda tüm trafiği rsync'e vermek istemiyorsanız --bwlimit ile hız sınırı koyabilirsiniz:

rsync -avz --bwlimit=5000 /var/www/ kullanici@sunucu:/yedek/

Bu komut aktarımı yaklaşık 5000 KB/s (5 MB/s) ile sınırlar; gündüz saatlerinde çalışan yedekleme işlerinin canlı trafiği etkilememesi için kullanışlıdır.

Sık Karşılaşılan Hatalar ve Çözümleri

"Permission denied (publickey)" hatası: SSH anahtar tabanlı kimlik doğrulama düzgün ayarlanmamış demektir. Anahtarın doğru kullanıcıya ait olduğunu, authorized_keys dosyasının izinlerinin 600 olduğunu ve ~/.ssh dizininin 700 olduğunu kontrol edin. Dosya izinleri konusuna hakim değilseniz chmod ve chown ile dosya izinleri yazımız — ayrıca Linux dosya izinleri rehberimizi referans alabilirsiniz.

"rsync: command not found" (uzak sunucuda): Hedef sunucuda rsync kurulu değil demektir; paket yöneticisiyle kurulması yeterlidir.

Beklenmedik dizin iç içe geçmesi: Yukarıda anlattığımız gibi kaynak yoldaki eğik çizgi (/) farkından kaynaklanır. Her zaman -n ile önizleme yapın.

Yarıda kesilen aktarımlar: -P parametresini ekleyerek hem ilerleme çubuğunu görün hem de bağlantı koparsa kaldığı yerden devam edebilme özelliğinden yararlanın:

rsync -avzP /buyuk-dosya.tar.gz kullanici@sunucu:/hedef/

Beklenmedik veri kaybı (--delete sonrası): Bu parametreyi asla dry-run yapmadan production ortamında ilk kez çalıştırmayın. Kritik sistemlerde yedekleme betiğinizin loglarını sistem logu yönetimi rehberimizdeki yöntemlerle düzenli kontrol etmeniz de erken uyarı sağlar.

Büyükweb notu: rsync betiklerinizi crontab'a eklerken çıktıyı mutlaka bir log dosyasına yönlendirin ve zaman zaman bu logları kontrol edin. Sessizce başarısız olan bir yedekleme betiği, ihtiyaç anına kadar fark edilmez — ve genelde ihtiyaç anı en kötü zamandır.

Sıkça Sorulan Sorular

rsync ile scp arasındaki fark nedir?

scp her çalıştırıldığında dosyanın tamamını baştan kopyalar. rsync ise yalnızca değişen blokları aktarır ve zaten var olan verileri yeniden kullanır. Tekrarlanan senkronizasyon işlerinde rsync çok daha az bant genişliği ve zaman tüketir; tek seferlik basit dosya transferlerinde ise scp de yeterli olabilir.

rsync her seferinde tüm dosyaları mı tarar?

Evet, rsync her çalıştığında kaynak ve hedefteki dosya listesini karşılaştırmak için tarama yapar; ancak sadece değişen dosyaların (ve o dosyalar içindeki değişen blokların) verisini aktarır. Çok sayıda küçük dosya olan dizinlerde bu tarama süresi gözle görülür olabilir, bu yüzden gereksiz dizinleri --exclude ile hariç tutmak önerilir.

rsync Windows'ta kullanılabilir mi?

Evet, WSL (Windows Subsystem for Linux) üzerinden veya cwRsync gibi bağımsız derlemeler aracılığıyla Windows'ta da rsync çalıştırılabilir. VDS'iniz Linux tabanlıysa ve yerel makineniz Windows ise, WSL üzerinden komutları doğrudan bu yazıdaki örneklerle aynı şekilde kullanabilirsiniz.

--delete parametresi ne işe yarar, neden dikkatli kullanılmalı?

--delete, hedef dizini kaynakla birebir eşitler; kaynaktan silinen dosyalar hedeften de silinir. Yanlış yön ile çalıştırılırsa (örneğin kaynak ve hedefi ters yazarsanız) istemeden büyük veri kaybına yol açabilir. Her --delete içeren komutu önce -n (dry-run) ile test etmek en güvenli yaklaşımdır.

Yedeklemeyi cron mu, systemd timer mı ile otomatikleştirmeliyim?

Basit, tek sunuculu senaryolarda cron yeterli ve kurulumu daha kolaydır. Daha karmaşık bağımlılıklar (örneğin başka bir servisin bitmesini bekleme, hata durumunda yeniden deneme) gerekiyorsa systemd timer daha esnek loglama ve durum takibi sağlar. Süreç ve servis yönetimine dair detaylar için süreç yönetimi rehberimize bakabilirsiniz.

rsync ile büyük veritabanı dump dosyalarını senkronize etmek güvenli mi?

Evet, ancak dump dosyasını oluştururken tutarlı bir anlık görüntü almanız (örneğin mysqldump --single-transaction gibi) ve dosya tamamen yazılmadan rsync'in dosyayı okumaya başlamamasına dikkat etmeniz gerekir. Dump işlemi bitene kadar bekleyip ardından rsync'i tetikleyen bir betik yazmak en güvenli yöntemdir.

VDS'imde rsync kurulu değilse ne yapmalıyım?

Paket yöneticinizle (apt install rsync veya dnf install rsync) kurabilirsiniz; çoğu güncel Linux imajında zaten hazır gelir. Kurulum sonrası hem kaynak hem hedef sunucuda rsync'in kurulu ve aynı ana sürümde olduğundan emin olun; büyük sürüm farkları bazı parametrelerin çalışmamasına yol açabilir.

Büyükweb Hizmetleri

rsync tabanlı otomatik yedekleme betikleri, güçlü disk performansı ve stabil ağ bağlantısı isteyen işlerdir. İhtiyacınıza uygun kaynak ve altyapı için:

Kurulum, otomasyon veya yedekleme stratejinizle ilgili sorularınız için 0850 302 60 70 numaralı satış öncesi destek numaramızdan bize ulaşabilir ya da iletişim sayfası üzerinden bizimle iletişime geçebilirsiniz.

Linux & Komut Satırı İlgili Hizmetlerimiz

Bu yazıda anlatılan teknik konuyu profesyonel altyapıyla deneyimleyin

Etiketler:

#rsync#linux#yedekleme#ssh#vds#komut satırı

Bu yazıyı paylaş

WhatsApp0850 302 60 70