Linux Sistem Yönetimi: Rsync ile Veri Senkronizasyonu Rehberi
Rsync (Remote Sync), Linux ve Unix sistemlerde dosya ve dizinleri verimli bir şekilde senkronize etmek için kullanılan güçlü bir araçtır. Bu doküman, temel kullanımdan profesyonel yedekleme stratejilerine kadar rsync aracını kapsamlı bir şekilde ele almaktadır.
Rsync Nedir ve Neden Kullanılır?
Rsync, geleneksel araçların aksine “Delta Transfer” algoritmasını kullanır. Bu sayede sadece dosyaların değişen kısımlarını aktararak ağ ve disk kullanımını minimize eder.
Kurulum
Ubuntu/Debian: sudo apt update && sudo apt install rsync
RHEL/CentOS: sudo dnf install rsync
Kaynak Dizindeki “/” İşareti

Bu ayrım rsync kullanımındaki en yaygın hata kaynağıdır:
- rsync -av /dizin/ hedef/ -> Dizinin İÇERİĞİNİ kopyalar.
- rsync -av /dizin hedef/ -> Dizinin KENDİSİNİ kopyalar.
Sık Kullanılan Bayraklar
-a (archive) İzinleri, zaman damgalarını ve linkleri korur.
-v (verbose) Ayrıntılı çıktı verir.
-z (compress) Sıkıştırarak aktarır.
-P (progress) İlerleme çubuğunu gösterir.
–delete Kaynakta olmayan dosyaları hedeften siler.
–dry-run (-n) Simülasyon yapar, gerçek işlem yapmaz.
SSH ile Güvenli Uzak Senkronizasyon
rsync -avze ssh /yerel/dizin/ kullanici@sunucu:/uzak/dizin/
Sorun Giderme ve İpuçları
- Bağlantı Kopması: ~/.ssh/config dosyasına “ServerAliveInterval 60” ekleyin.
- Türkçe Karakter: –iconv=UTF-8,UTF-8 parametresini kullanın.
Gerçek Dünya Uygulaması: Otomatik Web Sunucusu Yedekleme
Bir sistem yöneticisi olarak, /var/www/html/ dizinindeki canlı web sitenizi her gece uzak bir yedekleme sunucusuna aktarmak istediğinizi düşünelim. Rsync’in Delta Transfer Algoritması sayesinde, sadece gün içinde değişen dosyalar aktarılacak, böylece her seferinde GB’larca veriyi tekrar göndermek zorunda kalmayacaksınız
Günlük Yedekleme Script’i Örneği
Aşağıdaki script, veriyi sıkıştırarak güvenli bir şekilde aktarır ve her işlem sonunda bir log dosyası tutar.
#!/bin/bash
# Değişken Tanımlamaları
KAYNAK='/var/www/html/' # Sondaki / işareti içeriği kopyalar
HEDEF='yedek_kullanicisi@192.168.10.200:/yedekler/web_yedegi/'
LOG='/var/log/rsync_yedek.log'
echo "=== Yedekleme Başladı: $(date) ===" >> $LOG
# Rsync Komutu Uygulaması
rsync -avz --delete --progress \
-e "ssh -p 22" \
$KAYNAK $HEDEF >> $LOG 2>&1
echo "=== Yedekleme Tamamlandı: $(date) ===" >> $LOG
Kullanılan Parametrelerin Analizi
Bu örnekte kullandığımız bayrakların seçilme nedenleri şunlardır:
-
-a(Archive): Dosya izinlerini, sembolik linkleri ve zaman damgalarını korur; sunucu taşıma işlemleri için kritiktir. -
-v(Verbose): Hangi dosyanın aktarıldığını adım adım log dosyasına yazmamızı sağlar -
-z(Compress): Veriyi ağ üzerinden göndermeden önce sıkıştırır, bu da transfer süresini kısaltır. -
--delete: Kaynak sunucuda sildiğiniz bir dosyanın yedek sunucusunda da silinmesini sağlayarak tam bir ayna (mirror) oluşturur.
Akıllı Depolama: Hard Link Snapshot Tekniği
Eğer disk alanınız kısıtlıysa ama son 30 günün yedeğine ayrı ayrı klasörlerde ulaşmak istiyorsanız, --link-dest parametresini kullanabilirsiniz.
Bu yöntemle:
-
Değişmeyen dosyalar için yeni disk alanı harcanmaz; sadece önceki yedek dosyasına bir hard link (bağlantı) oluşturulur.
-
Sadece değişen veya yeni eklenen dosyalar diskte gerçek yer kaplar.
-
Sonuç olarak, 30 günlük yedek tutsanız bile disk kullanımınız neredeyse tek bir tam yedek boyutunda kalır.
Kritik Hatırlatma:
--deleteseçeneğini otomasyona bağlamadan önce mutlaka--dry-run(-n) parametresi ile test edin. Yanlış bir dizin hedeflemesi, yedek sunucunuzdaki verilerin temizlenmesine yol açabilir.

