Bir dosyayı her bilgisayar değiştirildiğinde dosya dosyalarının izleyicisi ile 2 bilgisayar arasında senkronize edin.


20

Sahibim:

  • IP 203.0.113.0 bağlantı noktası 1234'te SSH üzerinden bağladığım bir Linux sunucusu

  • ev bilgisayarı (yönlendiricinin arkasında), genel IP 198.51.100.17, Debian veya Windows + Cygwin

Bir klasörü /home/inprogress/ senkronize etmenin en kolay yolu (her iki yönde), rsyncancak bir dosya sistemi izleyicisiyle , bir dosya her değiştirildiğinde, hemen diğer tarafta çoğaltılır mı? (yani bir senkronizasyon programını manuel olarak çağırmanıza gerek yoktur)

Sunucu başsız olduğu için bir komut satırı / no-GUI çözümü arıyorum.

Yerleşik bir Linux / Debian çözümü var mı?


7
Siz tarif ediyorsunuz syncthing.
Kusalananda

Var lsync, ama çift yönlü senkronizasyon için yararlı olup olmadığını bilmiyorum.
Ulrich Schwarz

lsync, csync2, inotify + rsync, ancak yerel bir ağ ayarında kullanmayı tercih ederim.
Rui F Ribeiro

2
Dosya sistemi düzeyinde, bu OCFS2 veya hatta NBD üzerinden RAID 1 gibi geliyor
roaima

3
Tek yönlü senkronizasyon kolaydır. Çift yönlü senkronizasyon, çatışma çözümlemesi anlamına gelir (evet, bir noktada OLACAKTIR), bu da bir çeşit UI (GUI gerekli olmasa da) anlamına gelir.
jcaron

Yanıtlar:


23

@ Kusalananda'nın yorumunu takiben, bu kullanım durumu için Syncthing'i test etmek için birkaç saat geçirdim ve harika çalışıyor. Her iki taraftaki değişiklikleri otomatik olarak algılar ve çoğaltma çok hızlıdır.

Örnek: server.pyEn sevdiğiniz Not Defteri yazılımında yerel olarak çalıştığınızı hayal edin , CTRL + S (Kaydet) tuşlarına basın. Birkaç saniye sonra uzak sunucuda otomatik olarak çoğaltılır (açılır iletişim kutusu olmadan).

Fark ettiğim harika bir şey, Syncthing ile ev bilgisayarı ve sunucunun IP'sini düşünmek zorunda olmamanızdır: her bir "cihaz" (bilgisayar, sunucu, telefon vb.) Benzersiz bir Cihaz Kimliği'ne sahiptir ve paylaşırsanız Kimlik başka bir cihazla, birbirlerine nasıl bağlanmaları gerektiğini otomatik olarak öğrenecektir.

Yapmak:

  • Ev bilgisayarı tarafı (Windows veya Linux):

    Normal Senkronizasyon tarayıcı içi yapılandırma aracını kullanın

  • VPS tarafı:

    İlk olarak VPS'yi bir port yönlendirme ile bağlayın:

    ssh <user>@<VPS_IP> -L 8385:localhost:8384
    

    İkinci seçenek, 8384 numaralı bağlantı noktasını dinleyen VPS'nin Eşitleme web yapılandırma aracını ev bilgisayarın bağlantı noktası 8385'e yeniden yönlendirir.

    Sonra bunu VPS'de çalıştırın:

    wget https://github.com/syncthing/syncthing/releases/download/v0.14.52/syncthing-linux-amd64-v0.14.52.tar.gz 
    tar xvfz syncthing-linux-amd64-v0.14.52.tar.gz
    nohup syncthing-linux-amd64-v0.14.52/syncthing &
    

    Daha sonra evdeki bilgisayarın tarayıcısında http: // localhost: 8385'i açın : bu VPS'nin Eşitleme yapılandırması olacak!


Denediğim diğer çözüm:


Yeni fark ettiğim Syncthing'in ek avantajları:

  • Eğer azaltabilir fsWatcherDelaySiçinde config.xmlgelen 10için 2saniyeler böylece 2 saniye sonra CTRL + S, yaptıktan sonra (yüklemesi için zaman +, yani daha az küçük bir metin dosyası için 1 saniyeden daha az) diğer bilgisayarda bulunuyor

  • aynı yerel ağdaki iki bilgisayarı senkronize ederseniz (sadece DeviceID'yi birbirine vererek, yerel IP adreslerini önemsemeye gerek yoktur), otomatik olarak internet üzerinden geçiş yapmasının gerekmediğini fark eder, ancak yerel olarak anlaşma. Bu harika ve phone <--> computerWiFi üzerinden aynı ev yönlendiriciye bağlı çok hızlı bir hızlı aktarım (4 MB / s!) Senkronizasyonuna izin veriyor ... ... bir Dropbox senkronizasyonu ile ADSL'de 100 KB / s'de sıkışmış olacak ! (ADSL'm yükleme sırasında 100 KB / sn ile sınırlı)


@sudodus Bir arkadaşım birkaç hafta önce bana tavsiye etti ve bilgisayar <-> telefon senkronizasyonu için denedim, ama bir geliştirme sunucusu için de çok işe yarayacağını hayal etmedim! Kodunuzu düzenleyin, kaydet tuşuna basın, 1 2 3 diğer bilgisayarda!
Basj

1
+1. Uzun bir süre aynı problemi yaşadım, rsync + yıllardır bazı scriptler kullandım ve sonunda 2 ay önce senkronizasyon, csync, unison ve birkaç tane daha denedim. Herhangi bir sayıda bilgisayarla ve bazılarının kalıcı bir ağ bağlantısı olmadığında bile harika çalışır. % 100 tavsiye edebilir.
Guntram Blohm, Monica'yı

1
Tüm bu farklı çözümleri @GuntramBlohm'da test ettiğiniz için harika! Senkronizasyon, rsync, csync, unison, vb. Arasında geri bildiriminizi / karşılaştırmanızı vermek için bir cevap göndermek için birkaç dakikanız varsa, her biri için artıları / eksileri, gelecekteki referans için süper ilginç olurdu!
Basj

16

Unison gibi sesler bu işi yapmalı.

Unison, OSX, 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üncel duruma getirilmesine izin verir.

Çatışmaları çözmeyi biraz daha kolaylaştıran isteğe bağlı bir GUI'ye sahiptir, ancak her şey metin tabanlı bir kullanıcı arabirimi kullanılarak da yapılabilir. Ayrıca tamamen katılımsız işlem için çakışmaların nasıl çözüleceğini önceden tanımlayabilirsiniz.

Gerektiğinde senkronizasyonu tetikleyen bir dosya izleyici (fsmonitor) bileşeni var. Ayrıntılar için kılavuzda "tekrar izleme" yi arayın .

Görünüşe göre Debian kutudan çıkan doğru sürüme (2.48+) sahip .


Teşekkürler! Dosya izleyici fsmonitor Unison ile birlikte kutudan çıkarılmış mı yoksa bu aracı kurup Unison ile manuel olarak mı bağlamak zorundayız?
Basj

1
@Basj Yeterince son sürümlere dahil edilmiştir ve kurulumu gerçekten önemsizdir. El kitabına bir bağlantı ekledim.
TooTea

Eskiden eski bir Mac'te kullandım. Sadece minimum güçlükle çalışır. Yine de sunucu senaryoları için uygun olup olmadığı hakkında hiçbir fikrim yok.
Rui F Ribeiro
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.