W jaki sposób Dropbox określa, kiedy należy zastąpić plik lokalny, a który plik w chmurze?

10

Gdy Dropbox napotka na komputerze plik inny niż wersja w chmurze tego pliku, o którym wie, jak decyduje, czy powinien je zsynchronizować, zastępując plik lokalny plikiem w chmurze, czy synchronizując, nadpisując plik w chmurze plik lokalny?

Aby ponownie sformułować:

  • Jeśli kopia serwera i kopia lokalna pliku są różne,

  • a jeśli program Dropbox zostanie uruchomiony i zakończy synchronizację,

  • wtedy te dwa pliki będą takie same.

Te dwa pliki będą również identyczne z jednym ze starych plików. Moje pytanie brzmi: która --- stara kopia serwera lub stara kopia lokalna? Jak się decyduje?

Ein
źródło
Mmmm, nie jestem pewien, czy twoje wyrażenie powoduje, że jest jaśniejsze. Ale myślę, że Dropbox używa (wersji) sumy kontrolnej pliku (i być może daty zmiany), aby sprawdzić, czy plik musi zostać przesłany. (Ma stare w lokalnej bazie danych). Jeśli suma kontrolna jest inna, następuje przesłanie. Jeśli w sieci istnieje wersja z nowszą datą i inną sumą kontrolną niż stara w lokalnej bazie danych, ktoś inny musiał zmienić plik, a nazwa pliku zostanie zmieniona przez dodanie „konfliktu kopii”. (oczywiście jest to spekulacja i jeszcze nie znalazłem potwierdzenia tego online)
Rik

Odpowiedzi:

5

Nie znam szczegółów technicznych, ale mam sytuację, w której ja i mój asystent prowadzimy wspólny dropbox z dwoma różnymi komputerami włączanymi i wyłączanymi w różnych momentach.

Odpowiedź na twoje pytanie brzmi: kiedy łączysz się z chmurą, Dropbox wie (jakoś), że wersja aktualnie w chmurze została pierwotnie zsynchronizowana z twoim komputerem. Jeśli więc twoja wersja komputera jest inna, jest to wersja, która zostanie zsynchronizowana z chmurą.

Jeśli dwa komputery (powiedzmy A i B) używają tego samego dropboksa, a każdy dokonuje zmian w trybie offline, pierwszy komputer zostanie włączony (powiedzmy, że to komputer A) wygeneruje synchronizację swojej aktualizacji z chmurą. Więc teraz będzie taka sama wersja (zawierająca aktualizację A) w A i Cloud.

Gdy komputer B zostanie włączony, Dropbox zda sobie sprawę, że wersja pliku B komputera nie tylko różni się od bieżącej wersji chmury (co jest normalne), ale różni się od ostatniej synchronizacji Dropbox z nim. Gdyby więc zsynchronizować plik B z wersją A, zmiany B zostałyby utracone. Dropbox tworzy kopię wersji B i dodaje do nazwy „konflikt pliku B”. Oryginalny plik B jest następnie synchronizowany z aktualizacjami A. Konflikt pliku, zawierający aktualizacje B, jest następnie synchronizowany z chmurą i z powrotem do A.

Usunięcia i konflikty wynikające z synchronizacji selektywnej są obsługiwane w podobny sposób

Konflikt powstaje również, jeśli jeden z komputerów nie zamknie pliku przed wyłączeniem zasilania. Synchronizacja nie występuje w otwartym pliku, więc w tym przypadku aktualizacje B będą synchronizowane, a otwarty plik A zakończy się konfliktem. To może być ogromny problem z harmonizacją, ale to nasza wina, a nie Dropbox.

Mam nadzieję że to pomoże.

Margie
źródło
1

Mam częściowe informacje, które zaczynają odpowiadać na to pytanie. Nie jestem pewien, jak przydatne jest to dla doświadczonych użytkowników, ale wiem, że nowi użytkownicy, tacy jak ja, uznają ten raport za pomocny.

Nawiasem mówiąc, wypracowanie tego sprawia, że ​​jeszcze bardziej zastanawiam się, jak bardzo podstawowe pytanie nie ma żadnej oficjalnej ani autorytatywnej odpowiedzi. Brak dostępnej dokumentacji lub dyskusji mówi mi, że użytkownicy Dropbox są w porządku przyjmować wszystko, co Dropbox faktycznie robi, zgodnie z oczekiwaniami w takich okolicznościach. (tj. nie powiedziałbym nawet, że użytkownicy mają konkretne oczekiwania, że ​​utrzymają Dropbox)

Przykłady zachowania Dropbox:

W moich przykładach komputer A i komputer B nigdy nie są jednocześnie włączone. Wyobraź sobie, że pojedynczy użytkownik nie współpracuje w domu i pracy, a każdy komputer jest wyłączany przed powrotem do drugiego.

Co się stanie, gdy folder Dropbox jednego komputera nie będzie identyczny z folderem Dropbox w chmurze? Dla maksymalnej przejrzystości wolę sobie wyobrazić, jak dropbox.exezareaguje, gdy jeden komputer ma pusty folder Dropbox. Traktuje dropbox.exete brakujące pliki jako „usunięcia” (co oznacza, że ​​usunie je z folderu Dropbox w chmurze) lub „nieaktualne” (co oznacza, że ​​utworzy nowe kopie ich w lokalnym folderze Dropbox).

  1. Zacznij od sytuacji, w której zachowanie jest oczywiste: komputer A jest włączony, a komputer B jest wyłączony. Jeśli dropbox.exedziała, a zmiany są wprowadzane w A, są one propagowane do folderu w chmurze, a nie odwrotnie. Tak więc w tej chwili, jeśli folder A zostanie opróżniony, te brakujące pliki / foldery zostaną uznane za „usunięcia”, a folder w chmurze zostanie opróżniony.

  2. Załóżmy, że B ma pusty folder Dropbox, a A tworzy pliki i synchronizuje je z folderem Dropbox w chmurze. Jeśli przejdziemy na komputer B, sytuacja dropbox.exebędzie interpretować pusty folder skrzynki B jako „nieaktualny”, a nowe kopie z folderu w chmurze zostaną utworzone na B.

  3. Teraz mniej oczywiste: załóżmy, że dokonamy pewnych zmian w B i zsynchronizujemy te zmiany z folderem dropbox w chmurze. Jeśli przejdziemy na komputer A i --- bez pierwszego uruchomienia dropbox.exe--- usuniemy rzeczy z folderu dropbox A, co będzie dropbox.exepotem działać? W tej sytuacji dropbox.exezinterpretuje brakujące pliki / foldery jako nowe usunięcia, które powinny być propagowane do folderu dropbox w chmurze.

Uważam za mylące, że w sytuacjach 2 i 3 zostałeś dropbox.exewłączony i napotkałeś ten sam „świeży” stan na nowym komputerze, który różni się od folderu w chmurze, ale będzie działał inaczej.

Jeśli chcesz wymyślić regułę, która wyjaśnia, jak dropbox.exedziała, najwyraźniej nie możesz założyć, że jest to funkcja trzech zmiennych: (1) to, co widzi teraz na komputerze, (2) to, co widzi w folderze w chmurze, i (3 ), który komputer był ostatnio synchronizowany z folderem w chmurze. (!!!)

Być może dodatkową zmienną jest to, że Dropbox pamięta, co każdy komputer ostatnio synchronizował z folderem w chmurze. W sytuacji 2 możemy założyć, że przy ostatniej synchronizacji komputer B zsynchronizował pusty folder. W sytuacji 3 Dropbox pamięta, że ​​kiedy ostatni raz komputer A synchronizował, zsynchronizował folder inny niż ten, który obecnie znajduje się w folderze.

Ein
źródło
1
Nie chodzi dropbox.exetylko o sprawdzenie katalogu offline i online. Podobnie jak w ostatnim akapicie, dropbox prowadzi rejestr każdego pliku przechowywanego lokalnie i online, dzięki czemu dokładnie wie, kiedy / co (a kiedy / co nie) do synchronizacji. Spójrz na moje skrzynki referencyjnej-dir in C:\Users\<name>\AppData\Roaming\Dropbox. Widzisz wiele .dbxplików, w których dropbox przechowuje te informacje (nie tylko daty, ale także sumy kontrolne itp.). (Usuń te pliki, a Dropbox poważnie zepsuje Ci katalog Dropbox online i offline;)
Rik
Nie wiem, jak oczekujesz, że Dropbox będzie śledził zmiany, gdy w ogóle nie działa. W scenariuszu 2 dodajesz pliki do Dropbox, S3 usuwa pliki z Dropbox. Są to dwa różne scenariusze i powinny zachowywać się inaczej. Nie jestem pewien, skąd bierze się twoje zamieszanie. Dropbox dołoży wszelkich starań w oparciu o zawartość chmury i dysk twardy w momencie włączania Dropbox. Najlepszym sposobem na korzystanie z Dropbox jest zawsze włączenie. Jeśli musisz wyłączyć komputery, zachowaj ostrożność podczas usuwania. Przynajmniej DropBox zapewnia przywrócenie w ciągu 30 dni. Uważasz, że Dropbox jest zły, wypróbuj OneDrive.
niedz.
„Nie wiem, jak oczekujesz, że Dropbox będzie śledził, kiedy jest wyłączony” <- prawdopodobnie oczekujesz tego, jeśli spodziewasz się, że S3 będzie działać inaczej niż S2. „Jeśli wyłączysz komputery, zachowaj ostrożność przy usuwaniu” <- Jako użytkownik dropbox to ostrzeżenie, które chciałbym zobaczyć w dokumentacji. Bardzo łatwo jest powiedzieć „powinno się zachowywać inaczej”, ponieważ nie określasz dokładnie, co ma robić. Niepokoi mnie to, że nie mogłem znaleźć dokumentacji, która faktycznie NIE określa, co należy zrobić. Właśnie dlatego byłem zdezorientowany: musiałem zgadywać, jakie były zmienne, i mylnie je rozumiałem!
Ein
To jest naprawdę bardzo ważne pytanie i przyszedłem tutaj z google. Mój laptop nie był w pełni zsynchronizowany z Dropboxem przez co najmniej rok, ponieważ zabrakło mi miejsca. Więc użyłem synchronizacji selektywnej. Teraz zaktualizowałem HD do większego dysku SSD i chcę ponownie zsynchronizować wszystko. W wielu folderach na moim laptopie brakuje wielu plików i obawiam się, że Dropbox źle zinterpretuje, co robić podczas synchronizacji. Czy doda pliki z chmury do folderów lokalnych - czy zamiast tego usunie brakujące pliki z chmury? Nie jestem całkowicie pewny!
marlar
-2

Z Dropbox FAQ :

W przeciwieństwie do aplikacji komputerowej Dropbox, która stale sprawdza pliki pod kątem zmian, aplikacja mobilna zwykle synchronizuje tylko na żądanie. Zapobiega to zużyciu przez Dropbox całej przepustowości i miejsca.

Jak to robi?

To również jest wspomniane na ich stronie :

Przed przesłaniem pliku porównujemy nowy plik z poprzednią wersją i wysyłamy tylko ten fragment pliku, który się zmienił. Nazywa się to „różnicą binarną” i działa na dowolnym typie pliku. Dropbox kompresuje pliki (bez utraty danych lub jakości) przed ich przesłaniem. W ten sposób nigdy nie musisz się martwić o ponowne przesłanie pliku przez Dropbox lub marnowanie przepustowości.

Karan Raj Baruah
źródło
1
Pytam o bardziej podstawowe pytanie niezwiązane z kompresją / różnicami ... skąd ma wiedzieć, kiedy plik lokalny powinien stać się nową „najbardziej aktualną wersją” w porównaniu z tym, czy plik lokalny jest „nieaktualny”.
Ein
Nie jest to niezwiązane z różnicami. Dropbox API zna porównywanie tych różnic, gdy dany plik staje się „nieaktualny”, i postanawia zsynchronizować ten plik. Poza tym nie mogłem znaleźć więcej informacji. Sam Dropbox będący zamkniętym źródłem nie opublikował już żadnych informacji.
Karan Raj Baruah,
Zredagowałem pytanie, aby przeformułować to, o co pytam, ponieważ prawdopodobnie zachodzi pewne zamieszanie. Nie mogę też przeanalizować twojego drugiego zdania.
Ein