9

Когда Dropbox обнаруживает файл на своем компьютере, который отличается от облачной версии этого файла, о которой он знает, как он решает, следует ли ему синхронизировать их, перезаписывая локальный файл с файлом облака, или синхронизируя их, перезаписывая файл облака с помощью локальный файл?

Перефразировать:

  • Если копия сервера и локальная копия файла отличаются,

  • и если программа dropbox запущена и заканчивает синхронизацию,

  • тогда эти два файла будут одинаковыми.

Эти два файла также будут идентичны одному из старых файлов. Мой вопрос, который --- старая копия сервера или старая локальная копия? Как это решить?

3 ответа3

5

Я не знаю технических подробностей этого, но у меня есть ситуация, когда я и мой помощник работаем с общим Dropbox с двумя разными компьютерами, которые включаются и выключаются в разное время.

Ответ на ваш вопрос заключается в том, что когда вы подключаетесь к облаку, Dropbox знает (каким-то образом), что версия, находящаяся в данный момент в облаке, изначально была синхронизирована с вашего компьютера. Таким образом, если версия вашего компьютера отличается, то эта версия будет синхронизироваться с облаком.

Если два компьютера (скажем, A и B) используют один и тот же выпадающий список, и каждый вносит изменения в автономном режиме, то первый компьютер включается (скажем, это компьютер A), и будет генерироваться синхронизация его обновления в облаке. Так что теперь будет одна и та же версия (содержащая обновление A) для A и Cloud.

Когда компьютер B включается, Dropbox понимает, что версия файла компьютера B не только отличается от текущей облачной версии (что является нормальным), но и отличается от последней синхронизации Dropbox с ним. Таким образом, если бы он синхронизировал файл B с версией A, изменения B были бы потеряны. Так что Dropbox делает копию версии B и добавляет «конфликтующий файл B» к имени файла. Исходный файл B затем синхронизируется с обновлениями A. Конфликтующий файл, содержащий обновления B, затем синхронизируется с облаком и возвращается обратно в A.

Удаления и конфликты, возникающие в результате выборочной синхронизации, обрабатываются аналогичным образом.

Конфликт также возникает, если один из компьютеров не закрывает файл перед выключением. Синхронизация не происходит с открытым файлом, поэтому в этом случае обновления B будут синхронизироваться, а открытый файл A будет конфликтовать. Это может быть огромной болью для гармонизации, но это наша вина, а не Dropbox.

Надеюсь это поможет.

1

У меня есть частичная информация, которая начинает отвечать на этот вопрос. Я не уверен, насколько это полезно для опытных пользователей, но я знаю, что новые пользователи, такие как я, сочтут этот отчет полезным.

Кроме того, разработка этого делает меня еще более озадаченным, что у невероятно основного вопроса нет никакого официального или авторитетного ответа. Отсутствие доступной документации или дискуссий говорит мне о том, что пользователи Dropbox вполне могут принять то, что Dropbox действительно делает, в соответствии с тем, что они ожидали бы сделать в таких условиях. (то есть я бы даже не сказал, что у пользователей есть конкретное ожидание, что они держат Dropbox)

Примеры поведения Dropbox:

В моих примерах компьютер A и компьютер B никогда не включаются одновременно. Представьте себе, как один пользователь работает дома и на работе без совместной работы, при этом каждый компьютер выключается, а затем возвращается к другому.

Что происходит, если папка Dropbox на одном компьютере не идентична папке облачной папки Dropbox? Для максимальной ясности я предпочитаю представить, как dropbox.exe реагирует, когда на одном компьютере есть пустая папка dropbox. Будет ли dropbox.exe рассматривать эти отсутствующие файлы как "удаления" (что означает, что они удалят их из папки облачного хранилища) или как "устаревшие" (что означает, что они будут создавать новые копии в локальной папке Dropbox).

  1. Начните с ситуации, когда поведение явно очевидно: компьютер A включен, а компьютер B выключен. Если dropbox.exe и внесены изменения в файл A, они распространяются в облачную папку, а не наоборот. Таким образом, в данный момент, если папка А очищается, эти отсутствующие файлы / папки считаются "удаленными", а папка облака очищается.

  2. Предположим, что в B есть пустая папка Dropbox, а A создает файлы и синхронизирует их с облачной папкой Dropbox. Если мы переключимся на компьютер B, ситуация такова, что dropbox.exe будет интерпретировать пустую папку Dropbox B как устаревшую, а новые копии из облачной папки будут созданы на B.

  3. Теперь для менее очевидного: предположим, мы вносим некоторые изменения в B и синхронизируем эти изменения в папке облачного хранилища. Если мы переключимся на компьютер A и --- без первого запуска dropbox.exe --- удалим вещи из папки A dropbox, что потом будет делать запуск dropbox.exe ? В этом случае dropbox.exe будет интерпретировать отсутствующие файлы / папки как новые удаления, которые следует распространять в папку облачного хранилища.

Меня сбивает с толку тот факт, что в ситуациях 2 и 3 у вас dropbox.exe и вы столкнулись с тем же "свежим" состоянием на новом компьютере, которое отличается от облачной папки, но оно будет работать по-другому.

Если вы хотите изобрести правило, объясняющее, как работает dropbox.exe , вы, очевидно, не можете предположить, что оно является функцией трех переменных: (1) того, что он видит на компьютере прямо сейчас, (2) того, что он видит в облачной папке, и (3) какой компьютер был последним синхронизировать с облачной папкой. (!!!)

Возможно, дополнительная переменная в том, что Dropbox запоминает, что каждый компьютер в последний раз синхронизировал с облачной папкой. В ситуации 2 мы могли бы предположить, что в последний раз компьютер B синхронизировал, он синхронизировал пустую папку. В ситуации 3 Dropbox запоминает, что в последний раз компьютер A синхронизировался, он синхронизировал папку, отличную от того, что он в настоящее время находит внутри папки.

-2

Из Dropbox FAQ:

В отличие от настольного приложения Dropbox, которое постоянно проверяет ваши файлы на наличие изменений, мобильное приложение обычно синхронизируется только по требованию. Это предотвращает использование Dropbox всей вашей пропускной способности и места.

Как оно работает?

Это тоже упоминается на их сайте:

Перед передачей файла мы сравниваем новый файл с предыдущей версией и отправляем только измененный фрагмент файла. Это называется "бинарным diff" и работает с любым типом файлов. Dropbox сжимает файлы (без потери данных или качества) перед их передачей. Таким образом, вам также никогда не придется беспокоиться о повторной загрузке файла Dropbox или потере пропускной способности.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .