it-swarm-tr.com

Giriş klasörü birden fazla bilgisayar arasında nasıl senkronize edilir?

Evde üç bilgisayarım var ve bu üç arasında /home/ klasör ağacının senkronize edilmesini istiyorum.
Üç bilgisayardan birinde değiştirilmiş/eklenmiş/kaldırılmış dosyalar/klasörler (gizli olanlar hariç) diğer ikisinde güncellenir.

rsyncbunu yapacak kadar mı? ve nasıl?

112
lamcro

İşte bu problemi potansiyel olarak çözebilecek şeylerin bir listesi, her biri farklı şekilde yapmak zorunda olduğunuz takasları dengeler, böylece kendi seçimlerinizi yapmanız ve kendiniz için bir şeyler denemeniz gerekir:

  • Unison - diğerleri tarafından belirtildiği gibi, bu manuel olarak çalıştırılır, ancak çok hızlı, güvenilir ve etkilidir. Her iki makinenin de aynı anda senkronize edilmesini gerektirir. Neredeyse kaçınılmaz olan ihtilaflarla başa çıkmanıza izin veren ve silme işlemlerini doğru şekilde takip eden ve ilerleten hoş bir kullanıcı arayüzü var. Grafiksel uygulamaya/pakete unison-gtk adı verilir.

  • OwnCloud - Bulut depolama kendi sunucunuzda çalışır. Devam etmek için bir makineye ihtiyacınız olacak. Makul miktarda kurulum gerektirir. Sunucuda tam bir Apache 2 web sunucusu ve SqlLite veya MySQL veritabanı çalıştırır. Bir masaüstü istemcisi ile Dropbox'a benzer şekilde çalışır, ancak sunucu kontrolünüz altındadır. düzenleme: OwnCloud son zamanlarda projenin nasıl yürüdüğüne dair bazı değişikliklerden geçti ve şimdi NextCloud kimliği altında yeni bir tamamen açık bir kaynağa (yani, kapalı kaynak kodlu bir 'işletme' baskısı yok) sahip oldu (bakınız youtube röportajı daha fazla bilgi için orijinal OwnCloud geliştiricisiyle).

  • SparkleShare - dosyaları senkronize halde tutmak için git işlevini kullanır. Ana sayfaya göre: birçok küçük dosya için iyi, müzik ya da fotoğraf koleksiyonu gibi birçok büyük dosya için iyi değil.

  • Seafile - Yerel bir makineye yükleyebileceğiniz bir sunucu bileşeni sağlar. Deniz dosyası, değişiklikleri izlemek için git'e benzer veri modelini kullanır. Masaüstü bilgisayarlar, tabletler ve akıllı telefonlar için senkronizasyon istemcileri sağlar. Kurulumu açıklayan bir blog yazısı http://openswitch.org/blog/2013/07/18/installing-and-configuring-seafile-on-ubuntu-12-dot-04/ adresinde bulunabilir.

  • Osync - "... bash ile yazılan ve rsync'ye dayanan iki yönlü dosya senkronizasyon aracı. Yerel ve/veya uzak dizinlerde ssh tünelleri üzerinden çalışır. internet sitesi)

  • PowerFolder - Java tabanlı GPL v2 projesi. Ana web sitesi ticari teklifleri zorlar, bu yüzden verilen .jar dosyasını nasıl kullanacağınız belli değildir.

  • Rsync - hızlı ve etkili ve onlarca yıldır var, ancak bir geçmişi tutmuyor, bu yüzden bir dosyanın yeni mi yoksa silinmiş mi olduğuna karar vermek için bir yön seçmek zorundasınız. GwRsync gibi grafiksel araçlar kullanılabilir.

  • Lsyncd - rsync çoğaltmasını tetiklemek için klasörleri/dosyaları izler

  • dvcs-autosync - python ile yazılmıştır, makineler arasındaki değişiklikleri depolamak ve paylaşmak için git ve değişiklikleri iletmek için XMPP'yi kullanır.

  • git-annex - git işlevine bağlı olarak dosyaları gizlemek için komut satırı aracı. Burada örnek bir örnek var: http://git-annex.branchable.com/walkthrough/

  • Tonido - ücretsiz. Dosyaları diğer cihazlarla paylaşacak bir masaüstü uygulaması sağlar. Ayrıca ticari bulut teklifleri ve TonidoPlug fiş bilgisayarı da sağlayın.

  • BitTorrent Senk. (Ücretsiz) - BitTorrent'e dayalı eşler arası dosya senkronizasyonu. Bu konuda fazla bir şey bilmiyorum çünkü açık kaynak olmadığından ve verilerimi LAN'ımda tutmaya güvenmediğinden, bu cevabı daha iyi bilgi/gerçek deneyimlerle düzenlemekten çekinmeyin.

  • SyncThing - BitTorrent Sync'e açık kaynaklı bir alternatif olarak geliştirildi. Şu anda, güvenilmeyen eşler gibi BitTorrent Sync'in bazı gelişmiş özelliklerinden yoksundur. Aktif gelişme altında.

  • Dropbox, ubuntu one, google drive, Apple iCloud gibi ticari olarak barındırılan hizmetler hızlı ve ucuzdur, ancak hepsi tüm verilerinizle bir şirkete güvenmeyi gerektirir ve oldukça hızlı bir internet bağlantısına ihtiyaç duyarlar.

  • Git / Subversion - Doğrudan bir kaynak kontrol sistemi kullanın. Tamamen el ile ve bu sistemleri tanıyan bazı kullanıcılar için programlama aracı olarak kullanma konusunda biraz karmaşık ama popüler bir yaklaşım olabilir.

  • CloudFS - tüm dosya sistemini, küme teknolojisini temel alan bir senkronize etme

  • NFS bağlantısı - temel olarak eviniz bir makinede yaşıyor ve ağ üzerinden erişiyorsunuz, yanınıza aldığınız dizüstü bilgisayarlar için iyi değil. Daha fazla bilgi: http://www.linuxjournal.com/article/4880


Karar verirken göz önünde bulundurulması gereken faktörler:

  • Merkezi sunucu - bazı çözümler, diğer makinelerin senkronize olması için bir makinenin sürekli açık olmasını (veya en azından senkronize etmeniz gerektiğinde) gerektirir. Bu, mevcut makinelerinizden biri veya NAS gibi ayrı bir makine olabilir. Güç faturalarında artışa dikkat edin.

  • Otomatik/Manuel/Zamanlanmış - Makineden daha fazla bir şey değiştiğinde çatışmaları çözmek zorunda kalmamanın en iyi yolu, her makinede değişiklikleri izleyen ve anında senkronize eden bir programın bulunmasıdır; sürümleri. Manuel işlemlerde, senkronizasyonu çalıştırmayı her zaman hatırlamanız gerekir.

  • Uzaktan erişim - LAN'ınızdan (yani ana sayfa) uzak senkronizasyon yapmak istiyor musunuz, bunun güvenlik etkilerini düşünün.

  • Güvenlik - verileriniz ağınızı şifreli halde bırakır mı, makineler arasındaki aktarımın ne kadar güvenli olduğunu. Ya birisi verilerinizi hareket halindeyken yakalarsa ve daha sonra şifrelemenin kusurlu olduğu tespit edilirse? Verilerinizi tutan sunucuyu kim kontrol eder, veriler şifrelenir mi, üçüncü taraflara güvenebilir misiniz? Uzaktan erişim için yönlendiricinize delikler açmanız gerekir. 'Silinen' dosyaların ve ilgili meta-verilerin senkronize edilmiş cihazlarda ve merkezi sunucuda ne kadar süre kaldığını. Şifreli ve şifrelenmemiş depolama arasında senkronizasyon mu yapıyorsunuz?

  • Büyük klasörleri taşıma - hepsini denediğim çözümlerin bir dosyayı veya klasörü yeniden taşıdığınızda/yeniden adlandırdığınızda eşitlemenin bunu anlamadığı ve yeni olarak yeniden yüklediği ve eski kopyayı sildiği sorunu var. Lütfen, bununla baş edebilecek herhangi bir çözümü işaretleyerek yardım edin (Git tabanlı çözümlerin, kullandığı içeriğe dayalı adresleme nedeniyle git'in bundan muzdarip olmadığından şüphelendiğinden şüpheleniyorum. onları kullanmadım).

  • Disk kapasitesi

  • Yedekler - senkronizasyon yedek değil. Önemli bir dosyayı yanlışlıkla silin; yukarıdakilerin çoğu, diğer tüm kopyalarınızı merhametle silecektir. Tüm dijital yumurtalarınızı tek bir dijital sepete koyarsanız neler olabileceğinin iyi bir şekilde hesaplanması için Mat Honan'ın saldırıya uğraması bölümünü okumanızı öneririz.


Tüm ana klasörü senkronize etmemeyi, bunun yerine Documents/, Pictures/ vb. Gibi senkronize edilecek belirli klasörleri seçmenizi öneririm. Bu, otomatik olarak her şeyi senkronize etme hızı/performansı/disk alanı sorunlarıyla uğraşmak zorunda kalmamanın acısını önleyecektir. Ayrıca dışlama listelerini tutmak zorunda kalmaz.

Kişisel olarak benim için işe yarayan bir şey bulmaya devam ederken, bu cevabı yararlı bilgilerle güncel tutmaya çalışacağım. Diğer tüm cevaplardaki bilgileri tek bir tam cevap halinde topladım.

Referanslar:

  • LinuxFormat - Şubat 2014 LXF180 p31, "Hosted Storage Roundup"

hack/all /

86
Tim Abell

Unison iyi bir aday olabilir:

Unison, Unix ve Windows için bir dosya senkronizasyon aracıdır. Bir dosya ve dizin koleksiyonunun iki kopyasının, farklı ana bilgisayarlarda (veya aynı Ana Bilgisayardaki farklı disklerde) depolanmasına, ayrı olarak değiştirilmesine ve daha sonra her bir çoğaltmadaki değişiklikleri diğerine geçirerek gündeme getirilmesine olanak tanır.

Zaten 2 yönlü senkronizasyon yapıyor. Aşağıdaki güncellemeye bakınız.

Rsync'in yapamayacağı çok az şey olduğunu ve muhtemelen eşit veya daha iyi bir çözüm sağlayabileceğini öğrendim, ancak bir rsync uzmanının bu çözüme ulaşmasını beklemek zorunda kalacaksınız.

Güncelleme: Evet, Unison 2'den fazla makineyi senkronize edebilir. Onların kullanım kılavuzundan

İkiden Fazla Makineyi Senkronize Etmek İçin Unison Kullanma

Unison, kopya çiftlerini senkronize etmek için tasarlanmıştır. Bununla birlikte, çoklu çift senkronizasyonlar gerçekleştirerek daha büyük makine gruplarını senkronize tutmak için kullanmak mümkündür.

Bunu yapmanız gerekiyorsa, işleri ayarlamanın en güvenilir yolu, makineleri "hub" olarak belirlenmiş bir makine ve geri kalanını "konuşmacı" olarak nitelendiren bir makine ile ve her konuşmacı makine senkronizasyonuyla "yıldız topolojisi" olarak düzenlemektir. sadece hub ile. Yıldız topolojisinin en büyük avantajı, senkronize ettiği her ana bilgisayar çifti için ayrı bir arşivin Unison tarafından tutulması gerçeğinden kaynaklanan “sahte ihtilafların” karıştırılmaması ihtimalini ortadan kaldırmasıdır.

28
nagul

Dosyalarınızı Subversion veya git gibi bir sürüm kontrol sistemine koymak ister misiniz?

Tüm ev dizimi sürümlerini kullanmıyorum, ancak bazı önemli şeyleri içeren sadece bir avuç alt dizin var. Ancak, bu tür bir iş için daha iyi göründüğü için git'e dönüştürmeyi düşünüyorum. ( hızlı bir arama sizi doğru yöne gönderecek ).

İyi şanslar


Update : Git'in güzel bir yan etkisi, bilgisayara özel dosyalara sahip olmasının kolay olmasıdır, çünkü yalnızca o bilgisayar için bir şubeniz olması gerekir (ve gittiğinizde varsayılan olarak bu bilgiyi alırsınız). Böylece tüm bilgisayarlarda aynı dosyalara sahip olmanız gerekmez, sadece benzer olmaları gerekir ve tüm farklı bilgisayarlarda istediğiniz şeylerle ortak bir "ana" şubeye sahip olmanız gerekir.

19
Johan

Bunu yapmaya çalışırken asıl sorun, değişikliklerin nasıl birleştirileceğine, silmelerin yayılmasına ve çatışmaların nasıl çözüleceğine karar vermektir. Tamamen otomatik olarak yapmak zordur, özellikle birden fazla kişi tarafından kullanılan 3 bilgisayar kurulumuna sahipseniz.

Kullanıcıları ayırırsanız işler daha da basitleşir. Bir kullanıcı aynı anda iki yerde olamayacağından (ve bu nedenle çakışmalar oluşturduğundan), "değişiklik almak" için oturum açmak üzere çalıştırmak ve bilgisayarlarınızdan birine "Değişiklikleri itmek" ... için oturumu kapatmak için bir rsync işi ayarlayabilirsiniz. usta olacaktın ... bu yüzden, bu ayrıntı düzeyinde,/home/yerine her zaman/home/myuser'i senkronize ediyor olacaktın. Ek bir ayrıntılandırma (insanların oturumu kapatmaması durumunda), kısa bir süre kullanılmadığında Push komut dosyasını çalıştırır.

Pek çok başka potansiyel çözüm var, ancak bildiğim kadarıyla bu sorunu sihirli bir şekilde çözen hiçbiri yok. İlk adım muhtemelen makineleri nasıl kullandığınızı düşünmek ve kullanıcının davranışına uygun bir senkronizasyon politikası geliştirmektir.

6
Ira Cooke

NFS ile ortak bir giriş klasörü ekleyerek istediğinizi daha iyi elde edebileceğinizi düşünüyorum. Bu makaleye göz atın http://www.linuxjournal.com/article/4880

5
jspeaks

Çıkış/ lsyncd

Lsyncd, yerel bir dizin ağacı olayı izleyicisi arabirimini (inotify veya fsevents) izler. Olayları birkaç saniye bir araya getirir ve birleştirir ve ardından değişiklikleri senkronize etmek için bir (veya daha fazla) işlem (ler) başlatır. Varsayılan olarak bu rsync'dir. Lsyncd bu nedenle, yeni dosya sistemleri veya blok cihazlar gerektirmeyen ve yerel dosya sistemi performansını engellemeyen nispeten kolay kurulumlu hafif bir canlı ayna çözümüdür.

Rsync + ssh, dosya hareket etmek için SSH kullanan gelişmiş bir eylem yapılandırmasıdır ve dizin, hareket hedefini tel üzerinden yeniden iletmek yerine doğrudan hedefe doğru hareket eder.

İyi ayarlanmış kişiselleştirme, config dosyası aracılığıyla sağlanabilir. Özel eylem yapılandırmaları, Kabuk komut dosyalarından Lua dilinde yazılmış koda kadar basamaklı katmanlarda sıfırdan yazılabilir. Kabuk komut dosyalarından Lua dilinde yazılmış koda kadar değişen katmanlara kadar.

4
eric

Bu tamamen bir çözüm sağlamaz, ancak size bir başlangıç ​​verecektir:

Dosyaları sık sık bağlamak için bir cron işi ayarlayın. Aşağıdaki gibi bir komut kullanıyorum:

rsync -alhz --stats --progress --exclude-from '/etc/rsync_backup_excludes.conf' / -e ssh [email protected]:/path/to/home/

Bu, rsync'i sadece gerekli değişiklikleri kopyalamak için kullanır, komut her çalıştırıldığında her şeyi yeniden kopyalamaz.

--stats ve - progress isteğe bağlıdır ve muhtemelen komut dosyalarınızdan çıkarılmalıdır

rsync_backup_excludes.conf dosyamın içeriği:

dev/*
proc/*
lost+found/*
mnt/*
sys/*
4
Matt Cofer

/home dosyasını bir bilgisayardan diğer ikisine bağlayın. Automount bunun için oldukça iyi çalışıyor.

2
Xenoactive

Dropbox'a bir göz atın http://www.getdropbox.com/ Çapraz platform Win/Linux/Mac

2
Boxdog

PowerFolder - Dosyaları Eşitle, Klasörleri Eşitle, Uzaktan Depolama, Yedekleme ve Özel Dosya Paylaşımı. Ev ve ofis bilgisayarlarını senkronize edin, tatil fotoğraflarını paylaşın veya belgeler üzerinde birlikte çalışın. PowerFolder'ın güvenli eşler arası teknolojisi, İnternet üzerinden veya LAN'ta çalışır.

1
Molly7244

Deneyin dvcs-autosync .

Bu, git'e dayalıdır, dosya değişikliklerinin conected istemcilerine bildirmek için XMPP'yi kullanır ve inode değişiklikleri aracılığıyla dosya değişikliği olaylarına tepki verir. Bu nedenle, dosya değişikliğinden hemen sonra, ihtilaf durumunda, gitmiş olduğu kanıtlanmış yöntemlere dayanır.

Bir süredir SSH ortak anahtarlarıyla bir Dropbox değişimi olarak kullanıyorum ve bu gerçekten işe yarıyor.

1
schlypel

Ayrıca yapılandırmaları da senkronize etmek istiyorsanız - yukarıda belirtilen araçlar tamamen çaresizdir: yapılandırmalar sık ​​sık değiştirilir ve birçok günlük dosyası çakışır, böylece birleştirilemezler.
Aldatmaca basit ve aptal :) Bir Master iş istasyonum var ve "~" 'den gelen tüm dosyalar ikinci "Slave" olana kopyalandı. Farkında olduğum an, bir şeyi değiştirmem gerekiyor - bunu Master'da yapıyorum ve Slave bu değişiklikleri senkronize ediyor.

Ayrıca, bazı bash komut dosyalarının bu makinelerde farklı çalışması gerekir, bu yüzden /etc/bash.bashrc dosyasını düzenledim:

oOHOST ihracat = ana

Şimdi, scriptler hangi Host'a hizmet ettiklerini biliyorlar;)

1
kolypto

Ubuntu One , aradığınız şey olabilir. Ne yazık ki hala beta aşamasında ve bu konuda deneyimim yok, bu yüzden sizin için çalışıp çalışmadığından emin değilim.

1
Ilari Kajaste

Silinen dosyaları yayabilir ve sadece değiştirilmiş olanları güncelleyebilir osync gibi bir senkronizasyon komut dosyası kullanabilirsiniz. http://www.netpower.fr/osync osync rsync tabanlıdır, ancak yerel klasörler veya ssh üzerinden uzaktakiler arasında birçok senkronizasyon senaryosunu kullanabilir.

0
Orsiris de Jong

SyncTwoFolders for Mac ve Syncback for PC - evdeki üç mac'um (dizüstü bilgisayar dahil) ve ikincisi işyerindeki PC'im için kullanıyorum. Her iki program da çeşitli ayarlar ve senkronizasyon seçeneklerine sahiptir ve ön ayarlar yapıldıktan sonra bu işlemi kolaylaştırır. Basit! Linux ve Ubuntu için benzer yazılımların başka sürümleri olduğundan eminim.

0

Düşüneceğim geçici çözümler:

  • Dropbox.
    Başlıca sakıncaları: makul miktarda veri için ücretsiz değildir. Aksi takdirde kusursuz çalışır IMHO

  • Bir NAS sunucusu. Dosyalarınızı bir NAS sunucusuna yerleştirin, son zamanlarda makul bir şekilde uygun hale geldiler (150 $ 'dan beri) ve iyi bir kişi çok fazla enerji tüketmiyor. Hiç senkronizasyon sorunu yok.
    Ana dezavantaj: yerel bir kopyadan daha yavaş

0
Rabarberski