Dropbox, yerel dosyanın ne zaman üzerine yazılacağını ve bulut dosyasının üzerine ne zaman yazılacağını nasıl belirler?


10

Dropbox, bir kişinin bilgisayarında bildiği o dosyanın bulut sürümünden farklı bir dosyayla karşılaştığında, yerel dosyanın üzerine bulut dosyası yazarak veya bulut dosyasının üzerine yazarak senkronize edilip edilmeyeceğine nasıl karar verir? yerel dosya?

Yeniden ifade etmek için:

  • Sunucu kopyası ile dosyanın yerel kopyası farklıysa,

  • ve dropbox programı başlatılır ve senkronizasyonu tamamlarsa,

  • bu iki dosya aynı olacaktır.

Bu iki dosya eski dosyalardan biriyle aynı olacaktır . Sorum şu --- eski sunucu kopyası mı yoksa eski yerel kopya mı? Nasıl karar veriyor?


Mmmm, ifadenizin daha net olup olmadığından emin değilim. Ancak Dropbox, dosyanın yüklenmesi gerekip gerekmediğini görmek için bir dosya checksum (ve belki de değişiklik tarihi) kullandığını düşünüyorum. (Yerel veritabanında eskileri vardır). Sağlama toplamı farklıysa yükleme için gider. Çevrimiçi olarak, yerel veritabanında daha yeni bir tarihe ve eskisinden farklı bir sağlama toplamına sahip bir sürüm varsa, başka birinin dosyayı değiştirmiş olması ve dosyanın "çakışan kopya" eklenerek yeniden adlandırılması gerekir. (Tabii ki bu spekülasyon ve ben henüz bu çevrimiçi onay bulamadık)
Rik

Yanıtlar:


5

Bunun tekniklerini bilmiyorum, ancak ben ve asistanımın farklı zamanlarda iki farklı bilgisayar açılıp kapandığı ortak bir dropbox çalıştırdığım durumum var.

Sorunuzun cevabı, Cloud ile bağlantı kurduğunuzda, Dropbox'ın şu anda Bulut'taki sürümün orijinal olarak bilgisayarınızdan senkronize edildiğini (bir şekilde) bilmesi. Dolayısıyla, bilgisayar sürümünüz farklıysa, Bulut ile senkronize edilecek sürüm budur.

İki bilgisayar (Diyelim ki A ve B) aynı dropbox kullanıyorsa ve her biri çevrimdışı değişiklik yapıyorsa, ilk bilgisayar açılır (diyelim ki A bilgisayarıdır) bulut güncellemesinin senkronizasyonunu oluşturur. Şimdi A ve Cloud'da aynı sürüm (A güncellemesini içeren) olacak.

B bilgisayarına güç verildiğinde, Dropbox, B bilgisayarının dosya sürümünün yalnızca geçerli bulut sürümünden (normaldir) değil, Dropbox'ın son senkronizasyonundan farklı olduğunu fark edecektir. Dolayısıyla, B'nin dosyasını A sürümüyle senkronize etseydi, B'nin değişiklikleri kaybolurdu. Dropbox'ın yaptığı şey, B sürümünün bir kopyasını oluşturmak ve dosya adına "B'nin çakışan dosyasını" eklemektir. B'nin orijinal dosyası A güncellemeleriyle senkronize edilir. B güncellemelerini içeren çakışan dosya daha sonra buluta senkronize edilir ve A'ya geri döner.

Silme ve seçici senkronizasyondan kaynaklanan çakışmalar benzer şekilde ele alınır

Bilgisayarlardan biri kapatılmadan önce dosyayı kapatmazsa da çakışma ortaya çıkar. Senkronizasyon açık bir dosyada gerçekleşmez, bu durumda B'nin güncellemeleri senkronize edilen güncellemeler olur ve A'nın açık dosyası bir çakışma olarak sonuçlanır. Bu uyum sağlamak için büyük bir acı olabilir, ama bu bizim hatamız, Dropbox'ın değil.

Bu yardımcı olur umarım.


1

Bu soruya cevap vermeye başlayan kısmi bilgilerim var. Bunun deneyimli kullanıcılar için ne kadar yararlı olduğundan emin değilim, ancak benim gibi daha yeni kullanıcıların bu raporu yararlı bulacağını biliyorum.

Bir kenara, bunun üzerinde çalışmak, inanılmaz derecede basit bir sorunun resmi veya yetkili bir cevabı olmadığı konusunda beni daha da şaşkına çeviriyor. Mevcut belgelerin veya tartışmaların eksikliği, Dropbox kullanıcılarının, Dropbox'ın gerçekte ne yaparsa yapsınlar, bu koşullar altında yapmasını bekledikleri gibi almanın iyi olduğunu söylüyor. (yani, kullanıcıların dropbox tuttukları konusunda somut bir beklentileri olduğunu bile söyleyemem)

Dropbox'ın nasıl davranacağına ilişkin örnekler:

Örneklerimde, bilgisayar A ve bilgisayar B hiçbir zaman aynı anda açılmıyor. Evde ve işte işbirliği yapmadan çalışan tek bir kullanıcının diğerine dönmeden önce her bilgisayarın kapatıldığını düşünün.

Bir bilgisayarın dropbox klasörü bulut dropbox klasörü ile aynı değilse ne olur? Maksimum netlik için dropbox.exe, bir bilgisayarda boş bir dropbox klasörü olduğunda nasıl tepki vereceğini hayal etmeyi tercih ederim . Will dropbox.exe(yerel dropbox klasörü içindeki onlardan yeni kopyalarını yaratacak araçlar) "tarih dışı" (bulut dropbox klasöründen bunları kaldıracaktır araçlar) ya da "silme" olarak bu eksik dosyaları düşünün.

  1. Davranışın açıkça belirgin olduğu durumla başlayın: Bilgisayar A açık ve bilgisayar B kapalı. Eğer dropbox.exeçalışıyorsa ve değişiklikler A yapılır, daha sonra bu bulut klasörüne yayılır ve tersi de geçerlidir. Şu anda, A'nın klasörü boşaltılırsa, bu eksik dosyalar / klasörler "silme" olarak kabul edilir ve bulut klasörü boşaltılır.

  2. B'nin boş bir dropbox klasörü olduğunu ve A'nın dosyalar oluşturduğunu ve bunları bulut dropbox klasörüne senkronize ettiğini varsayalım. B bilgisayarına dropbox.exegeçersek durum, B'nin boş dropbox klasörünü "güncel değil" olarak yorumlaması ve bulut klasöründen yeni kopyaların B'de oluşturulmasıdır.

  3. Şimdi daha az belirgin: Diyelim ki B'de bazı değişiklikler yapıyoruz ve bu değişiklikleri bulut dropbox klasörüne senkronize ediyoruz. A ve --- bilgisayarına ilk çalıştırmadan dropbox.exegeçersek --- A'nın dropbox klasörü içindeki şeyleri silersek, dropbox.exedaha sonra ne işe yarar ? Bu durumda dropbox.exe, eksik dosyaları / klasörleri bulut dropbox klasörüne yayılması gereken yeni silme işlemleri olarak yorumlar.

Durum 2 ve 3'te dropbox.exeaçıldığını ve bulut klasöründen farklı yeni bir bilgisayarda aynı "taze" durumla karşılaştığınızı kafa karıştırıcı buluyorum , ancak farklı davranacak.

Nasıl açıklayan bir kural icat etmek isteseydim dropbox.exeçalışır, sen besbelli değil üç değişkenlerin bir fonksiyonu olduğunu varsayalım: bulut klasörü gördüklerini şu anda bilgisayarda gördüğü (1), (2) ve (3 ) hangi bilgisayarın bulut klasörüyle en son senkronize edildiği. (!!!)

Belki de ekstra değişken, Dropbox'ın her bilgisayarın bulut klasörüyle en son ne senkronize ettiğini hatırlamasıdır. 2. durumda, B bilgisayarının en son ne zaman senkronize edildiğini, boş bir klasörü senkronize ettiğini varsayabiliriz. Durum 3'te, Dropbox, A bilgisayarının en son ne zaman senkronize edildiğini, o anda klasörün içinde bulduklarından farklı bir klasörü senkronize ettiğini hatırlar.


1
Sadece dropbox.exedizini çevrimdışı ve çevrimiçi olarak kontrol etmek değil . Son paragrafınızda belirttiğiniz gibi, dropbox yerel ve çevrimiçi olarak saklanan her dosyanın kaydını tutar, böylece tam olarak ne zaman / neyi (ve ne zaman / neyi) senkronize edeceğini bilir. Benim bir göz atın dropbox-dir içinde C:\Users\<name>\AppData\Roaming\Dropbox. .dbxDropbox'ın bu bilgileri saklayacağı birçok dosya görüyorsunuz (sadece tarihler değil, aynı zamanda sağlama toplamları vb.). (Bu dosyaları ve dropbox'ı silin, çevrimiçi ve çevrimdışı dropbox dizinini ciddi şekilde karıştıracaktır;)
Rik

Dropbox'ın çalışmadığında değişiklikleri nasıl takip edeceğini beklediğinizi bilmiyorum. Senaryo 2'de Dropbox'a dosya ekliyorsunuz, S3 Dropbox'tan dosyaları siliyor. Bunlar iki farklı senaryodur ve farklı davranmalıdırlar. Karışıklıklarınızın nereden geldiğinden emin değilim. Dropbox, Dropbox'ı açtığınızda bulutta ve sabit diskinizde ne olduğuna bağlı olarak en iyi çabayı gösterecektir. Dropbox'ı kullanmanın en iyi yolu her zaman açık tutmaktır. Bilgisayarları kapatmanız gerekiyorsa, silme işlemlerine dikkat edin. En azından DropBox size 30 günlük geri yükleme sağlar. Dropbox'ın kötü olduğunu düşünüyorsunuz, OneDrive'ı deneyin.
Paz

"Dropbox'ın kapalıyken nasıl takip etmesini beklediğinizi bilmiyorum" <- muhtemelen S3'ün S2'den farklı hareket etmesini bekliyorsanız bekleyebilirsiniz. "Bilgisayarları kapatırsanız, silme işlemlerine dikkat edin" <- Bir dropbox kullanıcısı olarak, bu belgede görmek istediğim bir uyarıdır. "Farklı davranmalı" demeniz çok kolay çünkü tam olarak ne yapması gerektiğini söylemiyorsunuz. Beni rahatsız eden şey, aslında ne yapması gerektiğini bildiren belgeler bulamadım. Bu yüzden kafam karıştı: değişkenlerin ne olduğunu tahmin etmeye ve yanlış yapmaya zorlandım!
Ein

Bu gerçekten çok alakalı bir soru ve ben de bu soruyu Google'dan aramaya geldim. Dizüstü bilgisayarım en az bir yıldır Dropbox ile tam olarak senkronize edilmedi çünkü alanım bitti. Bu yüzden seçici senkronizasyonu kullandım. Şimdi HD'mi daha büyük bir SSD'ye yükselttim ve her şeyi tekrar senkronize etmek istiyorum. Dizüstü bilgisayarımdaki bazı klasörlerde çok sayıda dosya eksik ve Dropbox'ın senkronizasyon yaptığımda ne yapacağımı yanlış yorumlayacağından korkuyorum. Dosyaları buluttan yerel klasörlere ekleyecek mi yoksa bunun yerine eksik dosyaları buluttan silecek mi? Tam olarak emin değilim!
marlar

-2

Gönderen Dropbox SSS :

Dosyalarınızı sürekli olarak değişikliklere karşı kontrol eden Dropbox masaüstü uygulamasının aksine, mobil uygulama genellikle yalnızca istek üzerine senkronize edilir. Bu, Dropbox'ın tüm bant genişliğinizi ve alanınızı tüketmesini önler.

Bunu nasıl yapıyor?

Çok onların üzerinde belirtilen O sitede :

Bir dosyayı aktarmadan önce, yeni dosyayı önceki sürümle karşılaştırırız ve yalnızca değişen dosyayı göndeririz. Buna "ikili fark" denir ve herhangi bir dosya türünde çalışır. Dropbox, dosyaları aktarmadan önce (veri veya kalite kaybı olmadan) sıkıştırır. Bu şekilde, Dropbox'ın bir dosyayı yeniden yüklemesi veya bant genişliğini boşa harcamasından asla endişelenmenize gerek yoktur.


1
Sıkıştırma / diffs ile ilgili olmayan daha temel bir soru soruyorum ... yerel dosya "güncel değil" karşı yerel dosyanın yeni "en güncel sürüm" ne zaman olması gerektiğini nasıl biliyor.
Ein

Farklar ile ilgisi yoktur. Dropbox API'si, belirli bir dosya "modası geçmiş" hale geldiğinde bu farkları karşılaştırmayı bilir ve belirli bir dosyayı senkronize etmeye karar verir. Bunun dışında daha fazla bilgi bulamadım. Dropbox'ın kapalı kaynak olması, daha fazla bilgiyi herkese açık hale getirmedi.
Karan Raj Baruah

Soruyu düzenlediğim şeyi yeniden ifade etmek için düzenledim, çünkü muhtemelen bazı karışıklıklar var. Ayrıca, ikinci cümlenizi ayrıştıramıyorum.
Ein
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.