Web projeleri büyüdükçe, sunucular arasında dosya taşımak kaçınılmaz hale gelir. Görüntüler, videolar, yedekler veya veritabanı dökümleri… Bunları SSH üzerinden rsync ile taşımak, hem hızlı hem de kesintilere dayanıklı bir yöntemdir. Peki büyük dosyaları taşırken nelere dikkat etmelisiniz? Bu yazıda, rsync’in gücünü kullanarak dev dosyaları sorunsuz şekilde nasıl aktaracağınızı adım adım anlatıyorum.
Neden rsync ve SSH?
rsync, dosyaları sadece değişen kısımlarıyla kopyalayan akıllı bir araçtır. SSH üzerinden çalıştığında tüm veri şifrelenir ve güvenli olur. Özellikle büyük dosyalar için kesintisiz transfer özelliği hayat kurtarır. Bağlantı kopsa bile, kaldığınız yerden devam edebilirsiniz. Ayrıca sıkıştırma ve bant genişliği kontrolü sayesinde ağınızı verimli kullanırsınız.
Temel rsync Komut Yapısı
Hedef sunucuya dosya göndermek için şu kalıbı kullanın:
rsync -avz -e ssh /yerel/dosya kullanici@hedef-sunucu:/hedef/klasor
- -a: arşiv modu (izinler, sahiplik, sembolik linkler korunur)
- -v: ayrıntılı çıktı
- -z: sıkıştırma (yavaş bağlantılarda önerilir)
- -e ssh: SSH kullanarak bağlan
Eğer hedef sunucudan yerel makineye çekmek istiyorsanız, kaynak ve hedefi ters çevirin.
Kesintisiz Transfer İçin Anahtar Parametreler
Büyük dosyalar taşırken bağlantı kopmalarına karşı şu parametreleri ekleyin:
- --partial: Kısmen transfer edilmiş dosyayı silmez, devam eder.
- --progress: İlerleme durumunu gösterir (büyük dosyalarda motivasyon sağlar).
- --bwlimit= : Bant genişliğini sınırlandırır. Örnek: --bwlimit=5000 (5 MB/sn).
- --timeout= : Zaman aşımı süresini ayarlar. Varsayılan 30 saniyedir, yavaş ağlarda artırın.
Örnek tam komut:
rsync -avz --partial --progress --bwlimit=10000 -e ssh /buyuk_dosya.zip kullanici@192.168.1.100:/yedekler/
Performansı Artırmak İçin Tüyolar
Sıkıştırma Seviyesini Ayarlayın
-z parametresi sıkıştırma yapar, ancak CPU yükü getirir. Yüksek bant genişliğine sahip ağlarda sıkıştırmayı kapatmak daha hızlı olabilir: --no-compress. Test ederek karar verin.
Paralel Transfer İçin rsync + GNU Parallel
Tek bir dosyayı değil, birçok dosyayı taşıyorsanız GNU Parallel ile rsync’i birden çok iş parçacığında çalıştırabilirsiniz. Örneğin:
find /kaynak -type f | parallel -j4 rsync -avz {} kullanici@hedef:/hedef/
Bu yöntem, çok sayıda küçük dosyayı taşırken hızı katlar. Ancak büyük tek bir dosya için anlamsızdır.
Güvenlik İpuçları
SSH anahtarları kullanarak şifresiz oturum açın. ssh-keygen ile oluşturduğunuz anahtarı hedef sunucunun ~/.ssh/authorized_keys dosyasına ekleyin. Ayrıca rsync’i yalnızca ihtiyaç duyulan porttan (22) erişime açarak güvenliği artırabilirsiniz.
Loglama ve Hata Takibi
Büyük transferlerde log tutmak önemlidir. rsync çıktısını bir dosyaya yönlendirin:
rsync -avz --log-file=transfer.log ...
Transfer sonrası log’u inceleyerek hataları tespit edebilirsiniz.
Örnek Senaryo: 50 GB’lık Veritabanı Yedeği Taşıma
Diyelim ki 50 GB’lık bir SQL dökümünü eski sunucudan yeni sunucuya taşıyorsunuz. Bağlantı 100 Mbps ve dalgalı. Komut:
rsync -avz --partial --progress --bwlimit=10000 -e ssh /backup/dump.sql.gz root@yeni-sunucu:/mnt/backup/
Bu komut, hızı 10 MB/sn ile sınırlayarak bağlantıyı yormaz, kesilirse kaldığı yerden devam eder. Transfer tamamlandıktan sonra dosya bütünlüğünü md5sum ile kontrol edin.
Alternatif: rsync’i Arka Planda Çalıştırma
Eğer transfer uzun sürecekse screen veya tmux kullanarak oturumu canlı tutun. Yada rsync’i nohup ile arka planda çalıştırın:
nohup rsync ... &
Böylece SSH bağlantısı kopsa bile işlem devam eder.
Unutmayın, rsync’in en büyük avantajı tekrarlanabilir olmasıdır. İlk transferden sonra aynı komutu tekrar çalıştırarak sadece değişen dosyaları senkronize edebilirsiniz. Bu sayede yedekleme ve migrasyon işlemlerinizde zaman kazanırsınız.
Son Söz
SSH üzerinden rsync ile büyük dosyaları taşımak, doğru parametrelerle oldukça güvenilir bir yöntemdir. Kesintisiz transfer, bant genişliği kontrolü ve şifreleme sayesinde verileriniz güvende kalır. Projenizin büyüklüğüne göre sıkıştırma, paralel transfer ve loglama gibi özellikleri kullanarak süreci optimize edin. Bir sonraki sunucu migrasyonunuzda bu ipuçlarını mutlaka deneyin.