Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi
Rsync, dosyaları bir kaynaktan hedefe yeni/değişmiş olanları seçerek kopyalar; uzak aktarımda delta algoritması aktarılacak baytları azaltabilir. Yerel kopyada varsayılan whole-file davranışı farklıdır; her çalışmada yalnız değişen bloklar aktarılır diye düşünmeyin. En güvenli başlangıç, önce --dry-run ile değişiklikleri görmek, ardından aynı komutu bu seçenek olmadan çalıştırmaktır. Aşağıdaki örnek Linux/macOS terminalinde, SSH erişimi olan uzak bir sunucuya yerel bir klasörün gönderilmesini temel alır.

Rsync nasıl çalışır?​


Rsync kaynak ve hedefi karşılaştırır; dosya boyutu ve değişiklik bilgilerine göre gerekli dosyaları aktarır. Büyük dosyalarda değişen blokları belirleyebildiği için her çalıştırmada tüm içeriği yeniden göndermesi gerekmez. Uzak sunucuya aktarımda genellikle SSH kullanılır ve rsync her iki uçta da kurulu olmalıdır. Varsayılan hızlı kontrol boyut/mtime esaslıdır; aynı boyut ve zamanda farklı içerik gözden kaçabilir. İçerik karşılaştırması gerektiğinde -c checksum seçeneğinin ek disk okuma maliyetini değerlendirin.

Komutun temel biçimi şöyledir:

Kod:
rsync [seçenekler] kaynak hedef

Kaynak yolunun sonundaki eğik çizgi önemlidir. /var/www/site/, klasörün içeriğini hedefe gönderir; /var/www/site ise çoğu kullanımda site klasörünü hedef altında oluşturur.

Çalıştırılabilir temel örnek​


Varsayım: Yerel bilgisayardaki /home/admin/site/ klasörü, example.com sunucusunda /var/www/site/ dizinine gönderilecek. Uzak kullanıcı deploy ve bu kullanıcının hedef dizine yazma izni var.

Önce hedefte nelerin değişeceğini gösterin:

  1. SSH bağlantısını ve hedef dizini kontrol edin: ssh [email protected] 'test -d /var/www/site && echo Hedef-hazir'. Beklenen çıktı Hedef-hazir değeridir. Bağlantı veya izin hatası alırsanız rsync çalıştırmadan önce SSH erişimini ve hedef yolun izinlerini düzeltin.
  2. Kuru çalıştırma yapın: rsync -avzn /home/admin/site/ [email protected]:/var/www/site/. -a arşiv kipini, -v ayrıntılı çıktıyı, -z aktarım sıkıştırmasını ve -n gerçek değişiklik yapmadan listelemeyi sağlar.
  3. Listede beklediğiniz dosyalar varsa gerçek eşitlemeyi çalıştırın: rsync -avz /home/admin/site/ [email protected]:/var/www/site/. Çıktıda aktarılan dosyalar ve sonunda özet görmelisiniz. Hiç dosya aktarılmaması, kaynak ve hedefin zaten eşit olabileceği anlamına gelir.
  4. Çıkış kodunun sıfır olduğunu ve özetin hata içermediğini kontrol edin. Aynı kaynak/hedefle rsync -ani /home/admin/site/ [email protected]:/var/www/site/ kuru çalıştırması beklenmeyen aktarım göstermemelidir. Bu boyut/mtime/istenen öznitelik kontrolüdür; içeriği ayrıca karşılaştırmak için -c eklemek daha fazla okuma gerektirir. Kritik dağıtımda uygulamanın sağlık kontrolünü ve sahipliklerini de denetleyin.

Hedef dizin yalnızca mevcut dosyalarla güncellenecek; hedefte kaynakta bulunmayan eski dosyalar bu komutla silinmeyecektir. Bu, ilk eşitleme için daha güvenli davranıştır.

Yaygın seçenekler ve doğru karar​


İhtiyaca göre seçenek seçin; arşiv kipi tek başına her ortamda doğru izin modelini garanti etmez.

İhtiyaçSeçenek veya örnekDikkat edilmesi gereken
Hedefteki artık dosyaları silmek--deleteKuru çalıştırmayı mutlaka önce yapın; yanlış kaynak yolu veri kaybına yol açabilir.
Belirli dosyaları dışarıda bırakmak--exclude='cache/' --exclude='*.log'Kalıpların kaynak köküne göre nasıl eşleştiğini kontrol edin.
Özel SSH portu kullanmak-e 'ssh -p 2222'Portun gerçekten SSH servisine ait olduğundan emin olun.
İlerleme görmek--info=progress2Hız ve kalan veri göstergesi bağlantı koşullarına göre değişir.

Örneğin önbellek ve günlükleri göndermeden eşitleme yapmak için önce şu kuru çalıştırmayı kullanın:

Kod:
rsync -avzn --exclude='cache/' --exclude='*.log' /home/admin/site/ [email protected]:/var/www/site/

Çıktı doğruysa n seçeneğini kaldırın. Hedefi kaynağın tam aynası yapmak istiyorsanız --delete ekleyin; ancak önce listelenen silme işlemlerini inceleyin:

Kod:
rsync -avzn --delete /home/admin/site/ [email protected]:/var/www/site/

-a, recursive/links/perms/times/group/owner/device-special seçeneklerini kapsar; ACL, xattr ve hard link korumasını kendiliğinden eklemez. Sahiplik veya özel dosya koruması yetkiye bağlı olabilir. Sembolik bağlar -a ile bağ olarak korunur; hedeflerinin içeriği otomatik takip edilmez. Uzak kullanıcı bu işlemleri yapamıyorsa komut hata verebilir; bu durumda gereksiz yere geniş yetki vermek yerine hedefteki sahiplik ve izin modelini düzeltin.

Sık yapılan hatalar​


  • Kaynak ve hedefi ters yazmak: rsync ilk yolu kaynak kabul eder. Özellikle --delete kullanırken kuru çalıştırmada hangi dosyaların silineceğini inceleyin.
  • Eğik çizgiyi gözden kaçırmak: İçeriği değil klasörün kendisini kopyalamak farklı bir dizin yapısı oluşturabilir.
  • Kuru çalıştırmayı atlamak: Filtre, yol ve silme seçeneklerinin gerçek etkisi görülmeden veri değiştirilmiş olur.
  • Web sitesi dosyalarını eşitleyip veritabanını unutmak: Rsync dosyaları taşır; açık ve değişen bir veritabanının tutarlı yedeğini otomatik olarak garanti etmez.
  • Başarıyı yalnızca bağlantı kurulmasına göre değerlendirmek: Çıkış kodunu ve aktarım özetini kontrol edin. Kesinti durumunda eksik aktarım olabilir; komutu tekrar çalıştırmak genellikle yalnızca eksik veya değişen dosyaları tamamlar.

Kaynaklar​



Sık sorulan sorular​


Rsync iki yönlü eşitleme yapar mı?​


Hayır. Rsync tek bir çalıştırmada kaynaktan hedefe aktarım yapar. İki taraftaki bağımsız değişiklikleri birleştirmek için ayrıca çakışma tespiti ve iki yönlü eşitleme mantığı gerekir; iki zıt rsync komutunu rastgele çalıştırmak veri kaybına neden olabilir.

Rsync ile veritabanı da eşitlenir mi?​


Veritabanının dosyalarını kopyalamak, çalışan veritabanının tutarlı bir yedeğini garanti etmez. Veritabanı için kendi dışa aktarma veya yedekleme yöntemini kullanın; oluşan yedek dosyasını rsync ile aktarın.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic