İnotify kullanan çalışan bir Linux yedekleme çözümü var mı?


17

Yedeklemek sonsuza dek sürer. Artımlı anlık görüntüleri yedeklemek için btrfs veya ZFS'ye güvenmeden önce, hangi dosyaların gerçekten değiştiğini takip etmek için inotify kullanılan bir daemon olsaydı, yedeklemelerin daha hızlı çalışmasını sağlamak hoş olmaz mıydı? Bu program nerede?

Her seferinde tüm dosya sistemini taramak zorunda kalmadan Linux kutumu nasıl yedekleyebilirim? Yeni veya değiştirilmiş fotoğrafları, kaynak kodlarını vb. Algılayan ve bunları NAS'ımın üzerine kopyalanacak şekilde sıralayan bir program istiyorum.


Burada gerçekten çok fazla bilgi vermediniz, özellikle şu anda yedeklemek için ne kullandığınız, ne tür veriler kullandığınız hakkında. Dosya sistemindeki değişiklikleri izlemek için günlükleri kullanan ve daha sonra yedekleme sırasında bu günlüğe başvuran birkaç yedekleme yazılımı parçası vardır. Tam olarak neyi yedeklemeye çalışıyorsunuz, ne tür bir cihaza / uygulamaya, verilerin doğası nedir ve bunları yedeklemek için mevcut yönteminiz nedir?
WerkkreW

@WerkkreW, yedeklemeye çalıştığı şeyin o kadar önemli olduğunu düşünmüyorum. Olay tabanlı yedeklemeye izin veren her şeyin öğrenmesi ilginç olacağından şüpheleniyorum. İstek alışılmadık değil, OSX'in olay tabanlı bir zaman makinesi var.
Zoredache

Sorunun cevaplanmadan önce biraz daha açıklığa ihtiyacı olduğunu düşünüyorum.
WerkkreW

1
@Zoredache, elbette yedeklediğim şey önemlidir! Önemli olmasaydı ... oh bekleyin ;-) Sadece yeni şeyler bir set olduğunda, rsync her şeyi taramak için alacağı n saat boyunca kullanılamaz bir makine olmadan ev dizinimi yedeklemek istiyorum doğan bebeğim fotoğrafları kümesi.
joeforker

3
Soru benim için çok açık görünüyor: Mac OS X'in Time Machine yedeklemesi hızlıdır, çünkü olayları izler, böylece bir yedekleme çalıştırdığında nereye bakacağını bilir. Linux inotify'a sahiptir, fsevents'a benzer bir tesistir ve yine de Time Machine'e (örneğin dirtish) yaklaşmaya çalışan Linux yedekleme çözümleri inotify'dan faydalanmadığı için sefil yavaştır. Bunu yapan var mı?
bendin

Yanıtlar:


11

Kendi sorumu "yum search inotify" ile cevapladım. Adı lsyncd ve google kodunda barındırılıyor.

Ne yazık ki, her zaman önce tam bir rsync çalıştırıyor gibi görünüyor, bu yüzden bilgisayarım bir seferde 14 saatten fazla açılmamışsa hala bana yardımcı olmaz.

Lsyncd, yerel dizinleri rsyncd çalıştıran bir uzak makine ile senkronize etmek için rsync kullanır. Lsyncd inotify yoluyla birden fazla dizin ağaçlarını izler. Saatleri ekledikten sonraki ilk adım, tüm dizinleri uzak ana bilgisayarla yeniden senkronize etmek ve ardından inotify olaylarını toplayarak tek bir dosyayı senkronize etmektir. Bu yüzden lsyncd, sisteminizle iyi uyum sağlarken kurulumu ve kullanımı kolay olması gereken hafif bir canlı ayna çözümüdür. Ayrıntılı komut satırı seçenekleri için lsyncd --help adresine bakın.


Bu ilginç bir bağlantı, bunu kendim uygulamayı bile düşünmüştüm. Ama neden sayfada her değişiklik için büyük dosyaları yeniden aktaracağını söylüyor? Ben rsync zaten bundan kaçınacağını düşündüm?
Hanno Fietz

rsync, olabildiğince verimli bir şekilde aktarmak için dosyanın her iki ucunda da yeniden okumalıdır. Lsyncd belgeleri, bunun büyük dosyalar için etkili olmayabileceğini söylemeyi amaçlamaktadır. Büyük dosyalar için blok düzeyinde bir çoğaltma şeması daha uygun olacaktır.
joeforker

3

Adı verilen yeni bir sistem var fsnotifyen eksiklikleri çözmek için tasarlanmış olduğunu inotifyhangi sorunları çözmek için tanıtıldı dnotify. fsnotifyçok fazla karışıklık olmadan tüm dosya sistemini izlemenizi sağlar. Umarım fsnotifygelecekteki tüm Linux yedekleme sorunlarımızı çözmeye yardımcı olur.



2

Araştırmalara (test değil) dayanarak, inotify'ın çoğu sistemdeki çok sayıda dosyayı işleyemediği ve / veya bunu yapmak çok yavaş olduğu görülüyor. Http://www.pubbs.net/kernel/200905/109416/ adresindeki iş parçacığı en yararlı olanıydı, Linux 2.6.31'de olduğu gibi, ana hatta, fsnotify'a benziyor veya yönelmiş gibi görünen yeni bir linux özelliğine işaret etti. ve sonra.


2

Lsyncd başlangıçta izlenen ağacın tamamını senkronize eder, çünkü vakaların% 99'u için bu mantıklı bir şeydir. Yerel ana bilgisayarda sahip olduğunuz hedef ana bilgisayarda dizini istiyorsunuz, aksi takdirde eşitlemeler başarısız olabilir ve kapalı durumdayken kaçırdığınız şeyleri eşitlemek isteyebilirsiniz. Ancak, ne yaptığınızı biliyorsanız, başlangıç ​​senkronizasyonunu kapatabilirsiniz, Lsyncd yapılandırma dosyasında senkronizasyonu {..., startup = false} ayarlayın.

inotify ile ilgili olarak, dosya sayısı değil, kaynakları yiyen dizinlerin sayısı. Bir dizin, kaç dosya içerdiğine bakılmaksızın bir saattir.

fotnotify üzerine inşa etmek inotify gibi tonlarca dizini izleyen insanlar için çok umut verici görünüyordu, ancak şu anda Linux 2.6.37'den beri fanotify yeniden adlandırma (taşıma) raporlamıyor, bu gibi bir iş için kullanılamaz hale getiriyor :-(


Bir silme ve ardından bir oluşturma olarak bile değil mi?
joeforker

1
Benim testlerde, hayır :-( fanotify akılda virüs kalkanı ile dizayn edilmiş ve IMHO tam minimuma şu anda uyarlanmış değil gerektirir.
axkibe

1

Yapmaya çalıştığınız şeyi gerçekleştirmek için en iyi çözümü bulmak için 6 ay geçirdim; NAS'a verimli bir şekilde yedekleme. İlk senkronizasyondan sonra, diğer her şey tereyağı kadar pürüzsüzdür. Lsyncd'in son sürümü oldukça iyi çalışıyor. Aşağıdaki bağlantıda ne yaptığımı belgeledim. Sadece klasör değerlerinizi değiştirin. Bu yardımcı olur umarım:

https://docs.google.com/document/d/1XpqM5h5YMwuQqzdknyDDnjcQVYGjAsyAxfYprqSnhd0/edit


0

asya'da kullanılan, inotify-tool + rsync çözünürlüğü yerine http://code.google.com/p/sersync/ yerine sersync adı verilen yeni bir sistem var , kullanımı çok kolay.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.