2010-09-22 16 views
13

Dosyaları rsyncing'in atomik olup olmadığını anlamaya çalışıyorum. Bununla ilgili bir onay bulamadım. Rsync'in sadece delta gönderebilmesinden dolayı, sadece canlı dosyaların parçalarını güncellediği izlenimi altındaydım. Diğer taraftanrsync işlemleri atomik olarak dosya düzeyinde mi?

DJB canlı .cdb dosyaları senkronize etmek için rsync önerir asmak ve ben hem yeni bir dosya oluşturulur ki, o zaman doğru yere taşındığı ima Bu yayını (http://lists.samba.org/archive/rsync/2002-April/002210.html) buldum.

Birisi bana resmi bir kaynaktan birini veya diğerini teyit edebilir mi? http://www.opensource.apple.com/source/rsync/rsync-40/rsync/support/atomic-rsync

Sorun bunu test etmek için çalıştı ancak işe olmamasıdır:

cevap

0

bu işlevselliği eklemek için beklenen bir perl programı vardır. Ayrıca rssync 4.0 ile ilgili bir şey gibi görünüyor ve rsync geçerli sürümü 2.6.9 olduğu için URL'den bir şey yok çünkü!

11

rsync yerel (alma) kopya ve her ne bloklar gönderen kopyadan gerektirir blok içerecek yeni bir geçici dosya oluşturur. Bittiğinde geçici dosya orijinali değiştirerek yerine geçer.

Tüm detaylar buradadır;

http://rsync.samba.org/how-rsync-works.html

+0

Asıl soruya cevap vermediniz. - Bu, her bir dosyanın güncellenmesinin atomik olduğu anlamına mı geliyor? – zrajm

+0

Evet, aynı dizinde bir dosya taşıma işlemini atomik olarak kabul ederseniz. –

+1

"Düşün"? Atomik olmayan atomik olmayan bir gerçek olmalı, görüş değil, bence? :) Bir dizinde (yerel diskte) bir dosyanın yeniden adlandırılmasının * atomik olmadığını gösteren örneklerin olduğunu mu demek istiyorsun? Öyleyse, bu ne zaman oldu? – zrajm

1

Hayır , rsync atomik dosyaları yazmaz. Aktarım sırasında, aktarılan dosyayı geçerli durumunda içeren aynı hedef dizinde (.[original-filename].[6-random-characters]) gizli bir geçici dosya oluşturulmaktadır.

tüm zaten transfer paketleri tutmak için geçici dosyayı kopyalamak için emin olun rsync sürecini öldürmeden önce bağlantı , kapalı olması neden transferi veya rsync karşılaşmalar başka bir sorun sırasında bağlantıyı kaybetmek bir şey olursa . Geçici dosyayı (orijinal dosya adını almak için) "sonuncu". "Ve" .xxxxxx "işaretini kaldırabilirsiniz.