Як Dropbox визначає, коли замінити локальний файл проти замінити хмарний файл?


10

Коли Dropbox стикається з файлом на своєму комп’ютері, який відрізняється від хмарної версії цього файлу, про який він знає, як він вирішує, чи слід синхронізувати їх, перезаписавши локальний файл із хмарним файлом, або синхронізуючи їх, замінивши файл хмари на локальний файл?

Перефразовуйте:

  • Якщо копія сервера та локальна копія файлу відрізняються,

  • і якщо програма запуску і запущена синхронізація,

  • тоді ці два файли будуть однаковими.

Ці два файли також будуть ідентичними одному із старих файлів. Моє питання: яка --- стара копія сервера чи стара локальна копія? Як воно приймає рішення?


Мммм, не впевнений, чи перефразовування робить це зрозумілішим. Але я думаю, що Dropbox використовує (версію) файлової контрольної суми (і, можливо, дати зміни), щоб побачити, чи потрібно файл завантажувати. (Він має старі у своїй локальній базі даних). Якщо контрольна сума відрізняється, це стосується завантаження. Якщо в Інтернеті є версія з новою датою та іншою контрольною сумою, ніж стара в її локальній базі даних, хтось ще повинен змінити файл, і файл буде перейменований, додавши "конфліктну копію". (звичайно, це міркування, і я ще не знайшов підтвердження цього в Інтернеті)
Рік

Відповіді:


5

Я не знаю технічних можливостей цього, але в мене є ситуація, коли я та мій помічник керуємо загальним дроп-бокс із двома різними комп’ютерами, які працюють та вимикаються в різний час.

Відповідь на ваше запитання полягає в тому, що під час з'єднання з Cloud, Dropbox знає (якимось чином), що версія, яка наразі знаходиться в Cloud, спочатку синхронізувалася з вашого комп’ютера. Отже, якщо ваша версія комп'ютера інша, то це версія, яка буде синхронізована з хмарою.

Якщо два комп’ютери (скажімо, A і B) використовують один і той же дроп-скрипт, і кожен робить зміни в режимі офлайн, тоді перший комп'ютер увімкнеться (скажімо, це комп'ютер A) генерує синхронізацію оновлення до хмари. Тож тепер на A і Cloud буде однакова версія (що містить оновлення A).

Коли комп'ютер B увімкнений, Dropbox зрозуміє, що версія файлу комп'ютера B не тільки відрізняється від поточної хмарної версії (що є звичайною), але відрізняється від останнього часу, коли Dropbox синхронізувався з неї. Отже, якби синхронізувати файл B з версією A, зміни B були втрачені. Тож, що робить Dropbox - це зробити копію версії B і додати ім'я файлу "конфліктуючий файл B". Потім оригінальний файл B синхронізується з оновленнями A. Конфліктуючий файл, що містить оновлення B, потім синхронізується до хмари та повернеться до А.

Видалення та конфлікти, що виникають внаслідок селективної синхронізації, обробляються аналогічно

Конфлікт також виникає, якщо один із комп'ютерів не закриває файл до вимкнення живлення. Синхронізація не відбувається у відкритому файлі, тому в цьому випадку оновлення B будуть синхронізовані, а відкритий файл A закінчиться конфліктом. Це може бути величезним болем для гармонізації, але це наша вина, а не Dropbox.

Сподіваюсь, це допомагає.


1

У мене є часткова інформація, яка починає відповідати на це питання. Я не впевнений, наскільки це корисно досвідченим користувачам, але я знаю, що нові користувачі, як я, вважають цей звіт корисним.

Як осторонь, розробка цього питання ще більше здивує мене, як на неймовірно основне запитання немає жодної офіційної чи авторитетної відповіді. Відсутність доступної документації чи дискусій підказує мені, що користувачі Dropbox прекрасно приймають те, що насправді Dropbox робить так, як вони очікували б цього зробити за тих обставин. (тобто я б навіть не сказав, що користувачі конкретно сподіваються, що вони вважають, що вони отримують папку "dropbox")

Приклади поведінки Dropbox:

У моїх прикладах комп'ютер A і комп'ютер B ніколи не включаються одночасно. Уявіть, що один користувач працює вдома і працює без співпраці, при цьому кожен комп'ютер вимикається, перш ніж повернутися до іншого.

Що станеться, коли папка папки "одній з комп'ютерів" не є ідентичною папці "хмара"? Для максимальної ясності я вважаю за краще уявити, як dropbox.exeреагує, коли на одному комп’ютері є порожня папка папки. dropbox.exeЦі файли, які відсутні, будуть розглядатися як "видалення" (це означає, що вони видалять їх із папки хмарних скриньок) або "застарілими" (це означає, що вони створюватимуть нові копії з них у локальній папці папки).

  1. Почніть із ситуації, коли поведінка очевидно: комп'ютер A увімкнено, а комп'ютер B вимкнено. Якщо dropbox.exeзапущено і зміни внесені до A, то вони поширюються у хмарну папку, а не навпаки. Таким чином, якщо папка A спорожняється, то ці відсутні файли / папки вважаються "видаленнями", а хмарна папка випорожнюється.

  2. Припустимо, в B є порожня папка папки, а A створює файли та синхронізує їх у папці хмарних папок. Якщо ми перейдемо на комп'ютер B, то ситуація така, що dropbox.exeінтерпретувати порожню папку 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 пам’ятає, що комп'ютер, який востаннє синхронізувався, синхронізував папку, яка була іншою, ніж те, що знаходиться зараз у папці.


1
Справа не в тому, що dropbox.exeпросто перевіряє каталог в режимі офлайн і онлайн. Як ви заявляєте в останньому абзаці, dropbox зберігає запис кожного файла, що зберігається локально та в Інтернеті, щоб він точно знав, коли / що (і коли / що ні) синхронізувати. Погляньте на мій дроп-бокс у C:\Users\<name>\AppData\Roaming\Dropbox. Ви бачите безліч .dbxфайлів, де папка для зберігання цієї інформації (не тільки дати, але і контрольні суми тощо). (Видаліть ці файли та папку, яка серйозно заплутається у каталозі Dropbox в Інтернеті та в режимі офлайн;)
Rik

Я не знаю, як ви очікуєте, що Dropbox буде відслідковувати зміни, коли він взагалі не працює. У сценарії 2 ви додаєте файли до Dropbox, S3 стирає файли з Dropbox. Вони є двома різними сценаріями і повинні вести себе по-різному. Не знаєте, звідки походить ваша плутанина. Dropbox докладе максимум зусиль, залежно від того, що знаходиться у хмарі та на вашому жорсткому диску під час увімкнення Dropbox. Найкращий спосіб використання Dropbox - це завжди тримати його. Якщо вам доведеться вимкнути комп’ютери, будьте обережні зі видаленням. Принаймні, DropBox дає 30-денний відновлення. Ви вважаєте, що Dropbox поганий, спробуйте OneDrive.
Нд

"Я не знаю, як ви очікуєте, що Dropbox буде відслідковувати, коли він вимкнений" <- можливо, ви очікуєте цього, якщо очікуєте, що S3 діятиме інакше, ніж S2. "Якщо вимкнути комп’ютери, будьте обережні зі видаленням" <- Як користувач, який випадає, це попередження я хотів би бачити в документації. Вам дуже просто сказати, що "слід поводитись інакше", тому що ви не констатуєте, що саме має робити. Мене хвилює те, що я не зміг знайти документацію, яка фактично НЕ визначає, що вона повинна робити. Саме тому я був плутаний: змушений здогадуватися, що таке змінні, і помилятися!
Ейн

Це насправді дуже актуальне запитання, і я прийшов сюди з питання гуглити. Мій ноутбук не був повністю синхронізований з Dropbox принаймні рік, тому що мені не вистачало місця. Тому я використовував селективну синхронізацію. Тепер я модернізував свій HD до більшого SSD і хочу знову синхронізувати все. У деяких папках на моєму ноутбуці багато файлів відсутні, і я боюся, що Dropbox неправильно трактує, що робити під час синхронізації. Чи додасть він файли з хмари до локальних папок - чи замість цього видалить відсутні файли з хмари? Я не зовсім впевнений!
марла

-2

З питання про Dropbox :

На відміну від настільного додатка Dropbox, який постійно перевіряє ваші файли на предмет змін, мобільний додаток зазвичай синхронізується лише за запитом. Це запобігає використанню Dropbox усієї вашої пропускної здатності та простору.

Як це зробити?

Це теж зазначено на їхньому сайті :

Перш ніж перенести файл, ми порівнюємо новий файл з попередньою версією та надсилаємо лише частину файлу, який змінився. Це називається "двійковий розмін" і працює на будь-якому типі файлів. Dropbox стискає файли (без втрати даних або якості) перед передачею також. Таким чином, вам також ніколи не доведеться турбуватися про повторне завантаження файлу Dropbox або втрату пропускної здатності.


1
Я запитую про більш базове питання, не пов’язане зі стисненням / розходженням ... як це знати, коли локальний файл повинен стати новою "найновішою версією" проти того, чи локальний файл "застарів".
Ейн

Це не пов'язано з різницями. API Dropbox знає порівняння цих відмінностей, коли певний файл стає "застарілим" і вирішує синхронізувати конкретний файл. Крім цього, я не міг знайти більше інформації. Сам Dropbox із закритим джерелом не оприлюднив більше інформації.
Каран Радж Баруа

Я відредагував питання, щоб перефразувати те, про що я запитую, тому що, мабуть, відбувається певна плутанина. Також я не можу розібрати ваше друге речення.
Ейн
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.