rsync, Güvenlik Açıkları ve Modern Dosya Senkronizasyonu

rsync'in temellerinden 2025 güvenlik açıklarına, modern flag'lerden rclone ve Syncthing gibi alternatiflere, AI/ML iş akışlarında dosya senkronizasyonuna uzanan kapsamlı bir rehber.

Ceyhun Enki Aksan
Ceyhun Enki Aksan Girişimci, Maker

TL;DR

Konu20192026
Sürümrsync 3.1.xrsync 3.4.1 (Protocol 32)
Sıkıştırmagzip (-z)zstd (--compress-choice=zstd)
ChecksumMD4/MD5XXH3, XXH64, SHA256
GüvenlikDaemon yaygınSSH zorunlu, 6 CVE yamalandı
İlerlemeDosya bazlı (-P)Toplam ilerleme (--info=progress2)
BulutYokrclone (70+ backend)
Çift yönlüYokMutagen, Syncthing 2.0

Bu yazının ilk versiyonu 2019 yılında yayınlanmıştı. O tarihten bu yana rsync’in kendisi, çevresindeki güvenlik gereksinimleri, otomasyon yaklaşımları ve tamamlayıcı araçlar ciddi bir evrim geçirdi. Bu güncelleme ile rsync’in temellerini koruyan ancak modern geliştirme iş akışlarına uyum sağlayan yeni yapısını ele alacağım.

rsync Temelleri

rsync, uzak ya da lokal olarak dosya transferi işlemlerini gerçekleştiren ve delta transfer algoritması sayesinde yalnızca değişen baytları ileten bir senkronizasyon aracıdır. Dosyaların tamamını tekrar yazmak yerine farkların uygulanması üzerine çalışmakta, bu da özellikle büyük dosya setlerinde belirgin performans artışı sağlamaktadır.

En temel kullanımı:

rsync [kaynak-dosya-ya-da-klasör] [hedef-dosya-ya-da-klasör]

Birden fazla dosyayı hedef bir dizine iletmek için dosyalar sırasıyla hedef öncesinde belirtilir:

rsync -R [kaynak-dosya-1] [kaynak-dosya-2] [hedef-klasör]

Temel Parametreler

ParametreAçıklamaÖrnek
-aArşiv modu (sembolik linkler, izinler, zaman damgaları)rsync -a src/ dest/
-vAyrıntılı çıktırsync -av src/ dest/
-zSıkıştırma (gzip)rsync -avz src/ dest/
-rÖzyinelemeli dizin senkronizasyonursync -r src/ dest/
-Pİlerleme + kısmi transfer (--progress --partial)rsync -avP src/ dest/
-eUzak kabuk belirtrsync -avz -e ssh src/ user@host:/dest/
-nKuru çalıştırma (dry-run)rsync -avn --delete src/ dest/
--deleteKaynakta olmayan dosyaları hedeften silrsync -av --delete src/ dest/
--excludeBelirli dosya/dizinleri hariç tutrsync -av --exclude='*.log' src/ dest/
--includeBelirli dosya/dizinleri dahil etrsync -av --include='*.php' src/ dest/

Lokal ve Uzak Senkronizasyon

Kaynak dizinin sonundaki slash (/) karakteri davranışı belirlemekte. /kaynak/ ifadesi dizin içeriğini aktarırken, /kaynak ifadesi dizinin kendisini hedef içine alt dizin olarak eklemektedir.

Lokal senkronizasyon:

rsync -arv /kaynak/ /hedef

Pull (uzak sunucudan lokale):

rsync -ahivz kullanici@sunucu:/kaynak/ /lokal-hedef

Push (lokalden uzak sunucuya):

rsync -ahivz /lokal-kaynak/ kullanici@sunucu:/hedef

rsync, SSH üzerinden çalışırken varsayılan olarak port 22’yi kullanır. Farklı bir port için -e "ssh -p 2222" parametresi belirtilmelidir.


Güvenlik ve Protokol Değişiklikleri

2019’dan bu yana rsync ekosistemindeki en kritik gelişme, güvenlik alanında yaşandı. Ocak 2025’te Google Cloud Vulnerability Research ekibi ve Aleksei Gorban tarafından keşfedilen 6 güvenlik açığı, rsync’in tarihindeki en kapsamlı güvenlik güncellemesini zorunlu kıldı1.

Ocak 2025 CVE’leri

CVECVSSAçıklama
CVE-2024-120849.8 (Kritik)Checksum işlemede heap buffer overflow. Anonim istemcilerle uzaktan kod çalıştırma (RCE)
CVE-2024-120857.5 (Yüksek)Başlatılmamış yığın bellek sızıntısı. ASLR’yi atlama
CVE-2024-120866.1 (Orta)Kötü niyetli sunucu, istemci dosyalarını okuyabilme
CVE-2024-120876.5 (Orta)Sembolik link ile dizin aşma (path traversal)
CVE-2024-120886.5 (Orta)--safe-links korumasını atlama
CVE-2024-127475.6 (Orta)Symlink yarış durumu (race condition)

CVE-2024-12084, rsync 3.2.7’den (Ekim 2022) bu yana mevcut olan bir açıktır. Checksum uzunluğu (s2length) kontrolündeki eksiklik nedeniyle, saldırganın kontrol ettiği değerlerle 48 baytlık sınır dışı yazma işlemi gerçekleştirilebilmekte. CVE-2024-12085 ile birleştirildiğinde, salt okunur (read-only) modüllerde bile anonim uzaktan kod çalıştırma sağlanabilmekte2.

Shodan taramalarında internet üzerinde açık olan yaklaşık 660.000 rsync sunucusu (port 873) tespit edilmiştir3. Bu durum, rsync daemon kullanımının ne denli riskli olduğunu açıkça ortaya koymakta.

Protokol Değişikliği

rsync 3.4.0 ile protokol sürümü 30’dan 32’ye yükseltilmiştir. Bu sayede yöneticiler, karşı taraftaki sunucunun yamalı olup olmadığını protokol sürümünden doğrulayabilmekte:

rsync --version | head -1
# rsync  version 3.4.1  protocol version 32

SSH Zorunluluğu

2019’da rsync daemon (port 873) üzerinden doğrudan bağlantı hala yaygın bir pratikti. 2026 itibarıyla bu yaklaşım terk edilmiş durumda:

# 2019: Daemon kullanımı yaygındı
rsync rsync://sunucu/modul/ /hedef/

# 2026: SSH üzerinden rsync standart
rsync -avz -e ssh kaynak/ kullanici@sunucu:/hedef/

Daemon kullanımı zorunluysa, VPN veya şifreli tünel içinde ve hosts allow kısıtlamasıyla çalıştırılmalıdır. SSH anahtarı olarak ed25519 algoritması tercih edilmelidir:

ssh-keygen -t ed25519 -C "rsync-otomasyon"

Modern Flag’ler ve Performans

rsync 3.2.0 (Haziran 2020) ve sonrasında eklenen özellikler, performans ve kullanım deneyimini belirgin şekilde iyileştirmekte.

Zstandard (zstd) Sıkıştırma

Klasik gzip (-z) yerine zstd sıkıştırma, hem daha hızlı hem de daha verimli sonuç sunmakta. rsync 3.2.0 ile eklenen bu özellik, otomatik müzakere (negotiation) ile her iki tarafın desteklediği en iyi algoritmayı seçmekte4:

# zstd sıkıştırma ile transfer
rsync -avz --compress-choice=zstd kaynak/ kullanici@sunucu:/hedef/

# Kısa form
rsync -avz --zc=zstd kaynak/ kullanici@sunucu:/hedef/

RSYNC_COMPRESS_LIST ortam değişkeni ile müzakere sırasını özelleştirebilirsiniz.

XXHash Checksum

MD4 ve MD5 yerine, modern işlemcilerdeki SIMD komut setlerinden yararlanan XXH3 ve XXH64 checksum algoritmaları eklenmiştir. Büyük dosya setlerinde doğruluk kontrolü artık eskisi kadar yavaş değil4:

# XXH3 checksum ile doğrulama
rsync -avz --checksum-choice=xxh3 kaynak/ hedef/

# Kısa form
rsync -avz --cc=xxh3 kaynak/ hedef/

Mevcut checksum algoritmaları: xxh128, xxh3, xxh64, md5, md4, sha1, none.

Toplam İlerleme Göstergesi

Dosya bazlı ilerleme yerine, toplam transfer ilerlemesini yüzde olarak gösteren --info=progress2:

rsync -avz --info=progress2 kaynak/ kullanici@sunucu:/hedef/

Diğer Modern Flag’ler

FlagSürümAçıklama
--mkpath3.2.3Hedef dizin yolunu otomatik oluştur
--stop-after=N3.2.3N saniye sonra transferi durdur
--stop-at=TIME3.2.3Belirtilen zamanda transferi durdur
--inplaceMevcut (3.3.0’da --sparse ile düzeltildi)Geçici dosya yerine doğrudan üzerine yaz
--fsync3.2.4Her dosya yazımında fsync çağır
--copy-devices3.2.4Cihaz dosyalarını kopyala

--inplace parametresi, devasa dosyalarda (veritabanı dump’ları, VM imajları) disk alanından tasarruf sağlamakta. Ancak transfer yarıda kalırsa dosya bozulabilir; bu nedenle kritik veriler için --backup ile birlikte kullanılması önerilmekte:

# Büyük dosya transferi (disk tasarruflu ama riskli)
rsync -avz --inplace --backup --backup-dir=/yedek buyuk-dosya.img kullanici@sunucu:/hedef/

AI/ML İş Akışlarında rsync

Yapay zeka ve makine öğrenmesi projelerinin yaygınlaşmasıyla birlikte rsync, sadece geleneksel dosya taşıma aracı olmaktan çıkıp AI pipeline’larının bir parçası haline geldi.

GPU Cluster Veri Senkronizasyonu

Geçici GPU kiralama hizmetleri (Lambda Labs, RunPod, Vast.ai) ile çalışırken rsync, kodun ve veri setlerinin GPU makinelerine aktarılmasında temel araç konumunda. Tipik bir iş akışı5:

# 1. Kodu GPU makinesine gönder
rsync -avz --exclude='.venv' --exclude='node_modules' \
  kod/ kullanici@gpu-host:~/kod/

# 2. Eğitim verisini senkronize et
rsync -avz --info=progress2 --compress-choice=zstd \
  veri/ kullanici@gpu-host:~/veri/

# 3. Eğitimi çalıştır (GPU üzerinde)
ssh kullanici@gpu-host "cd ~/kod && python train.py"

# 4. Sonuçları geri al
rsync -avz kullanici@gpu-host:~/veri/sonuclar/ sonuclar/

rsync’in delta transfer özelliği burada kritik avantaj sağlamakta: kod değişikliği sonrası yeniden senkronizasyonda yalnızca değişen dosyalar transfer edilmekte. Yüz megabayttan birkaç gigabayta kadar veri setlerinde bu yaklaşım verimli çalışmakta. Petabayt ölçeğinde ise Lustre, BeeGFS veya Alluxio gibi dağıtık dosya sistemleri tercih edilmekte.

rsync ve rclone: Hangi Durumda Hangisi?

Senaryorsyncrclone
Sunucu-sunucu (SSH)UygunDesteklemez
Delta transfer (bayt seviyesi)UygunDesteklemez
S3, Azure, GCSDesteklemezUygun (70+ backend)
Çok iş parçacıklı transferTek iş parçacığıUygun (4x daha hızlı)6
Unix izinleri korumaUygunDesteklemez
Büyük veri setini buluttan indirmeYavaş (tek iş parçacığı)Uygun

Bulut depolamadan (S3, GCS) GPU instance’larına veri çekmek için rclone, lokal makine ile GPU instance’ı arasında SSH üzerinden senkronizasyon için rsync tercih edilmelidir.

LLM ile Otomasyon

Karmaşık --exclude kurallarını elle yazmak yerine, LLM’lere dizin yapısını verip uygun rsync komutunun oluşturulması artık yaygın bir pratik:

# Örnek: LLM'in oluşturduğu güvenli exclude listesi
rsync -avz --compress-choice=zstd \
  --exclude='.git' \
  --exclude='node_modules' \
  --exclude='__pycache__' \
  --exclude='.venv' \
  --exclude='*.pyc' \
  --exclude='.env' \
  --info=progress2 \
  proje/ kullanici@sunucu:/hedef/

Ancak dikkat edilmesi gereken kritik nokta: --delete flag’ini içeren komutlarda, AI tarafından üretilen betiklerde bu flag bazen beklenmedik sonuçlara yol açabilmekte. Bu nedenle --delete kullanılmadan önce mutlaka --dry-run ile kontrol edilmelidir.


Modern Alternatifler ve Tamamlayıcılar

rsync yetersiz kaldığı veya farklı bir ihtiyacın ortaya çıktığı durumlarda, 2026 itibarıyla şu araçlar rsync’i tamamlamakta veya belirli senaryolarda yerini almakta.

rclone

rclone, “bulut dünyasının rsync’i” olarak konumlanan ve 70’ten fazla bulut sağlayıcısı ile çalışan bir dosya senkronizasyon aracıdır7. En güncel sürümü v1.73.0 (Ocak 2026) ile aktif geliştirmeye devam etmekte.

# S3'ten lokale senkronize et
rclone sync s3:bucket/veri/ /lokal/veri/

# Çok iş parçacıklı transfer
rclone copy --multi-thread-streams=16 kaynak/ hedef/

# Bulut depolamayı dosya sistemi olarak bağla
rclone mount s3:bucket/ /mnt/s3/

Jeff Geerling’in 2025 karşılaştırmasında, 10 Gbps ağ üzerinde yaklaşık 60 GiB veri transferinde rclone, rsync’e göre 4 kat daha hızlı sonuç vermiştir (2 dakika 15 saniye / 8 dakika 17 saniye). Bu fark, rclone’un çok iş parçacıklı transfer yapısından kaynaklanmakta6.

Ancak rclone, Unix izinlerini/özniteliklerini koruyamamakta ve dosya içi delta transfer yapamamakta. Dosya/nesne seviyesinde çalışmakta.

Syncthing 2.0

Syncthing, merkezi sunucu gerektirmeyen, eşler arası (peer-to-peer) sürekli dosya senkronizasyonu aracıdır. Ağustos 2025’te yayınlanan 2.0 sürümü önemli değişiklikler içermekte8:

  • LevelDB yerine SQLite veritabanı (daha az bozulma riski)
  • Çoklu bağlantı desteği (indeks meta verileri ve veri alışverişi için ayrı kanallar)
  • UDP port eşleme ile QUIC desteği (güvenlik duvarı geçişi)
  • Silinen öğelerin 15 ay sonra otomatik unutulması

Syncthing, kişisel çoklu cihaz senkronizasyonu ve ekip içi dosya paylaşımı için uygundur. Sunucu yönetimi gerektirmemesi avantaj sağlamakta.

Mutagen

Mutagen, uzak geliştirme ortamlarında (VS Code Remote, Docker container) çift yönlü (bidirectional) ve gerçek zamanlı dosya senkronizasyonu sağlamakta9. rsync’in aksine dosya sistemi değişikliklerini izleyerek (watch) anında senkronizasyon gerçekleştirmekte. Dört senkronizasyon modu sunmakta; varsayılan olan two-way-safe, çakışma durumunda veri kaybını önlemekte.

ZFS/Btrfs Send/Receive

Veri tutarlılığının kritik olduğu senaryolarda, dosya sistemi seviyesinde anlık görüntü (snapshot) tabanlı replikasyon, rsync’e göre daha güvenilir bir alternatif sunmakta10:

  • Blok seviyesinde artımlı replikasyon (dosya sistemi taraması gerektirmez)
  • Yeniden adlandırma ve taşıma işlemleri çok düşük maliyetli
  • Her iki tarafın da aynı dosya sistemini (ZFS-ZFS veya Btrfs-Btrfs) kullanması zorunlu

NAS-NAS replikasyonu ve yedekleme sistemlerinde (TrueNAS vb.) ZFS replikasyonu, rsync’e göre tercih edilmekte.

Unison

Unison, OCaml dilinde yazılmış çift yönlü dosya senkronizasyon aracıdır11. rsync’ten temel farkı, çakışan güncellemeleri sessizce üzerine yazmak yerine kullanıcıya göstermesidir. Sürüm 2.52.0’dan itibaren tel protokolü (wire protocol) OCaml sürümüne bağımlı değildir; bu sayede eski versiyon uyumsuzluğu sorunu çözülmüştür.

Karşılaştırma Tablosu

AraçTransferYönBulutİzinlerGerçek Zamanlı
rsyncDelta (bayt)Tek yönYokKorunurYok
rcloneTam dosyaTek yön70+ backendKorunmazYok
SyncthingBlok tabanlıÇift yönYokKorunurEvet
MutagenDeltaÇift yönYokKorunurEvet
UnisonDeltaÇift yönYokKorunurYok
ZFS SendBlok (snapshot)Tek yönYokKorunurYok

2026 Best Practice Rehberi

Modern rsync Komutu

rsync -avz \
  --info=progress2 \
  --compress-choice=zstd \
  --exclude='.git' \
  --exclude='node_modules' \
  --exclude='*.log' \
  -e "ssh -o VisualHostKey=no" \
  /kaynak/ kullanici@sunucu:/hedef/

Güvenlik Kontrol Listesi

# 1. Sürüm kontrolü (3.4.1+ olmalı, Protocol 32)
rsync --version | head -1

# 2. --delete kullanmadan önce mutlaka dry-run
rsync -avz --delete --dry-run kaynak/ hedef/

# 3. Ardından gerçek transfer
rsync -avz --delete kaynak/ hedef/

Senaryo Bazlı Komutlar

Sunucu yedeklemesi (SSH üzerinden, zstd, ilerleme):

rsync -avz --info=progress2 --compress-choice=zstd \
  -e ssh kullanici@sunucu:/var/www/ /yedek/www/

Büyük dosya transferi (inplace, bant genişliği limiti):

rsync -avz --inplace --bwlimit=10M --partial --info=progress2 \
  buyuk-dosya.tar.gz kullanici@sunucu:/hedef/

Mirror (silme dahil, önce dry-run):

rsync -avz --delete --dry-run kaynak/ kullanici@sunucu:/hedef/
# Çıktıyı kontrol ettikten sonra:
rsync -avz --delete --info=progress2 kaynak/ kullanici@sunucu:/hedef/

Zaman sınırlı transfer (3.2.3+):

rsync -avz --stop-after=3600 kaynak/ hedef/  # 1 saat sonra dur

Hedef dizin otomatik oluşturma (3.2.3+):

rsync -avz --mkpath kaynak/ hedef/olmayan/dizin/yolu/

Sonuç

rsync, delta transfer algoritması ve Unix felsefesine uygun tasarımıyla onlarca yıldır dosya senkronizasyonunun temel aracı konumunda. Ancak 2025 başında keşfedilen kritik güvenlik açıkları, bu aracın güncel tutulmasının ne denli önemli olduğunu bir kez daha göstermiştir. rsync 3.4.1 veya üzeri sürüm, SSH üzerinden kullanım ve zstd sıkıştırma, 2026 itibarıyla asgari gereksinimler olarak değerlendirilmekte.

Ekosistem genelinde ise rsync artık yalnız değil. Bulut senkronizasyonunda rclone, çift yönlü gerçek zamanlı senkronizasyonda Syncthing ve Mutagen, dosya sistemi seviyesinde replikasyonda ZFS send/receive gibi araçlar, farklı ihtiyaçlara yanıt vermekte. Modern geliştirme iş akışlarında bu araçların birbirini tamamlayıcı biçimde kullanılması en sağlıklı yaklaşım olarak öne çıkmakta.

rsync ile sıkça birlikte kullanılan diğer komut satırı araçları hakkında wget, grep ve crontab yazılarına da göz atabilirsiniz.

Footnotes

  1. CERT/CC VU#952657 - rsync Security Advisory
  2. NVD - CVE-2024-12084
  3. Sysdig - Detecting and Mitigating CVE-2024-12084
  4. rsync 3.2.0 NEWS 2
  5. Managing GPU Rentals with rsync - Milos Svana
  6. 4x Faster Network File Sync: rclone vs rsync - Jeff Geerling 2
  7. rclone - rsync for cloud storage
  8. Syncthing 2.0 Release
  9. Mutagen - Real-time file synchronization
  10. ZFS Replication vs rsync - TrueNAS Forums
  11. Unison File Synchronizer