Aslında birçoğu var.
SparkleShare (deps: git / subversion, mono, python) github
GUI tabanlı senkronizasyon yazılımında.
a. Sürüm oluşturma: Kaynak kontrol sistemi sayesinde merkezi bir sunucuya sürüm numarası üzerinden muteks temellidir.
b. Devlet: geliştirilme aşamasında
c. Artıları: OSS, tek tabanlı çok kolay modüle edilebilir, Eksileri: kullanıcı düzeyinde süreç, GC'ye bağımlı, etkisiz paylaşım protokolü olarak git gibi büyüklük sırasına göre küçük metin dosyaları için derlemek oldukça zor (denedim). Üst düzey araçların kullanılması.
lipsync (deps: Unison, rsync) Komut satırı hizmet tabanlı yazılım.
a. Sürüm: rsync delta algoritması aracılığıyla . Programcının çatışma çözümünü seçmesi gerektiğini düşünüyorum.
b. Durum: Kaynak kodunu bulamıyorum, bu yüzden hiçbir fikrim yok. Git deposundaki tek şey ikili dosyalar.
c. Artıları: orta seviye araçları kullanarak güzel kurulum.
iFolder - Novell'in Dropbox'ı. Henüz kaynağını çalışmadım. Ben sadece bu düzenlemeyi bitirmek istiyorum ve insanlar ilgiliyse daha fazlasını ekleyeceğim.
a. Sürüm:
b. Durum: Ubuntu'da bile derlemek için sorunlu, paketleri tek başına. İşte detaylı kurulum rehberi .
c. Artıları: Windows X64 istemcisi, olgun, ACL'lerle AD entegrasyonu, başka hiçbir projenin uygulamaya geçmediği özellikler. Bunun iyi bir başlangıç noktası olabileceğini düşünüyorum. Eksileri: Novell genel svn deposunu birincil repo olarak kullanmayabilir ve yalnızca kod bırakma işlemi yapabilir. Ben tam olarak bu konuda bilmiyorum. Ubuntu’ya kolayca kurmak için openSUSE’ye bağlanmış olabilir. Algoritmalarını kontrol etmek için.
scp / rcp - rsync lehine itiraz edildi
DRDB - dağıtılmış RAID-1 için aygıt yansıtma araçlarını, örneğin bir dropbox sunucusunun varyantını engeller. Kaynak kodunu henüz kontrol etmedim, ancak yalnızca linux. Asıl algoritma, bu yazılım listesinin altındaki incelemelerimdeki kaynak kodla birleştirmek için muhtemelen kolay olacaktır.
a. Sürüm: LAN / WAN üzerinden dahili mesaj formatı
b. Devlet: yeterince olgun görünüyor
c. Artıları: Linux için yeterince kararlı, Cons: başka hiçbir işletim sistemi desteklenmiyor
Şu anda Sanallaştırılmış bir Windows 7'deki derleme zamanlarını iyileştirmeyi araştırıyorum, metal üzerindeki Windows 7'deki derleme zamanları 40 sn, ancak yaklaşık 3m 20s sanallaştırılmış. NTFS'de seçilen klasörler için ram diski gibi görünen bir yazma önbelleği olan bir ioctl sürücüsü yazmayı düşünüyorum.
Yukarıdaki yazılımı kullanarak, bir haftalık 2-3 kişilik tam zamanlı geliştirme değerinin, yukarıdaki yazılımları birleştirerek dosyalarınızı kaybetmeyen kullanışlı bir Alpha üreteceğini düşünüyorum.
Benim sistemimde o zaman genel fikir;
Bir sanal sürücü takın \? {GUID}, bu ram-disk ve RW-önbellektir. Bu sanal sürücüyü oluşturan yazılım iki giriş parametresi alır (hayati önem taşır):
a. Hedef klasör; bu SMB klasörüdür, bu yüzden işletim sisteminin ağ yığınının gerçek IO'yu yönetmesine izin vereceğim. Benim durumumda bu, kendi başına ext4 sürücüde bir hedefi olan VMWare sanal klasörüdür, ancak SAMBA / SMB kullanarak kolayca dosya sunucunuz olabilir.
b. Bağlanacak klasörün yolu, örn. C: \ ramdisk
Sanal birimler oluşturmak için bu kod /Driver/DriverFilter.c içindeki TrueCrypt kodundan alınmalıdır (diğer dosyalar arasında)
Sürücü, başladığında veri almak için SMB / VMWare / ağ protokolünü kullanır; Ağdan eşzamansız olarak düşük görev önceliğine sahip ve önbelleğini dolduruyor. Basit bir sıkıştırma algoritması kullanabilir ve mükemmel performans elde etmek için mesaj kutusu tipi devamını kullanan 1 ipliğe sahip olabilir. IO çağrıları zaman uyumsuz Windows'ta normal kullanabilir ve linux üzerinde onu kullanabilirsiniz epoll / Inotify uygulama ve bir kod alıp nginx .
Ram diski olan hizmetim, adsız ramdisk sürücüsünü bir NTFS klasörü olarak bağlar. Tüm programlar C: \ ramdisk'e veya buna ne diyorsam yazmaya devam edebilir.
Ağdan gelen zaman uyumsuz kopya hala devam ediyor. Yaklaşık 100 MiB / s ve 2 GiB ramdisk okuma hızında, tüm verileri okumak 20.5 s olacaktır.
Okunacak her çağrı, sabit bir n: ulong GiB max boyutlu dizi halinde endeksin CPU içi bir hesaplama yapacaktır. Gerçi çatışma çözme veya okuma-yazma kilitleri gerektirir. Microsoft Sync'te bulunanlar gibi bir çakışma çözümleme algoritması uygularsak, bir çakışma çözümleme işlemine ileti olarak çakışan her öbeği iletebiliriz. Dropbox yeni bir dosya oluşturarak ve "PrevFileName Kullanıcı Adı'nın Uyuşmaz Kopyası (yyyy-MM-dd) .ext" olarak isimlendirerek çözer. Muhtemelen bu, tek bir kaynağa karşı bir derleme yaparsa, küçük bir pencere öğesi tarafından değiştirilebilir - pencere aracı, olağanüstü değişiklikleri iletiler / olaylar olarak algılar ve çakışma çözümü protokolünü seçer. Bu nedenle, özel moddaki bir klasöre karşı programlama yaparken, Windows VM widget'ı 'özel' olarak ayarlayabilir.
Bu bu PRO'lar olurdu
- Engellenmeyen / eşzamansız olurdu
- Bu varsayımı yapar, ancak bir bilgisayarın çoğunlukla dosyalara yazmasını gerektirmez.
- Keyfi büyük dosyalar için işe yarayacak
- Bu projeleri birbirine bağlayarak * nix ve Windows üzerinde çalışacaktı.
- Yüksek okuma performansı gerektiğinde çalışır (yani dosyalar fiziksel olarak diskte bulunur)
- Çakışan olaylara ulaşıldığında, kullanıcının farklı türden olaylar için (yani farklı türden dosyalar için) tamamen etkili olan eklentileri yazmasına / indirmesine izin veren bir kullanıcı arayüzü uygulaması sağlanabilir. Örneğin, bir ikili dosya kopyalanıp başka bir dosya olarak kaydedilirken, bir metin dosyası Kompare / WinDiff ile açılabilir.