Имя: Пароль:
IT
 
ДропБокс, синхронизируя файлы, передает только измененные блоки или весь файл?
0 Феофан
 
20.03.14
10:31
Вопрос такой..
1 ДенисЧ
 
20.03.14
10:32
Насколько я знаю, весь.
2 le_
 
20.03.14
10:32
Весь.
3 ShoGUN
 
20.03.14
10:37
(1)(2) Как проверяли? FAQ Dropbox-а(и моя практика) говорит об обратном: https://www.dropbox.com/help/8/en
4 ShoGUN
 
20.03.14
10:38
https://www.dropbox.com/help/8/ru - даже так лучше.
5 m-serg74
 
20.03.14
10:41
(4) оттуда:
"Для опытных пользователей

Хотите подробности? Тогда вот:

Перед передачей файла мы сравниваем его последнюю и предыдущую версии..."

и как часто версионирование происходит?
6 m-serg74
 
20.03.14
10:42
или сравнивает локальную версию с сетевой? тогда один х надо либо туда передать либо сюда стащить
7 m-serg74
 
20.03.14
10:43
я поддерживаю (1) и (2) невзирая на чёс ДропБокса
8 Asmody
 
20.03.14
10:45
оно бьет файл на чанки, считает хеши от чанков и сравнивает с хешами на сервере.
9 ShoGUN
 
20.03.14
10:45
(7) Выгрузи в дропбокс конфу, потом поменяй что-то в конфе, потом выгрузи в файл в дропбоксе ещё раз. Как показывает мой опыт сидения на ADSL, вторая синхронизация будет НАМНОГО быстрей первой.
10 Базис
 
naïve
20.03.14
10:45
(6) Ага, хеши и чексумы придумали мёртвые люди из толстых пыльных книжек чисто для диссеров.
11 ShoGUN
 
20.03.14
10:45
(8) Именно, но кому какое дело до "чёса"?
12 dmpl
 
20.03.14
10:46
(6) Дык можно разбить на блоки, допустим, по 16 кБ, и посчитать для них контрольную сумму. Размер контрольной суммы - по желанию. Можно по 2 байта на блок, можно по 4, 8, 16. Передаются контрольные суммы, вот они-то и сравниваются.
13 Базис
 
naïve
20.03.14
10:47
(12) Если в начале файла добавить пробел - оно поймёт, что блок сдвинут и надо передать только первый?
14 m-serg74
 
20.03.14
10:49
(13) спасибо, хоть один поддержал, а то накинулись типа я не знаю про контр. суммы и прочую хню
15 ShoGUN
 
20.03.14
10:51
(13) А почему бы и нет, можно же и diff файла сделать на клиенте, а не тупо контрольные суммы считать.
16 Базис
 
naïve
20.03.14
10:51
Узбагойся, никто тебя не поддерживал. Шутка.

Только 1 фирма стала бы перегонять весь файл для сравнения. Все нормальные безусловно оптимизируют и трафик, и размеры файлов.
17 Базис
 
naïve
20.03.14
10:52
(15) Мне и самому интересно, просто руки не дошли до использования дропбокса или аналогов, по старинке ношу флешку.
18 m-serg74
 
20.03.14
10:52
(15) "diff файла сделать на клиенте"

diff с чем делать будем?
19 ShoGUN
 
20.03.14
10:52
http://en.wikipedia.org/wiki/Rolling_hash - знакомьтесь, 1с-ники, математика!
20 m-serg74
 
20.03.14
10:54
(16) я не отрицал опимизацию и прочее, а вот с хэшами, как повезет, а то не оптимизация а наоборот пролет может выйти
21 dmpl
 
20.03.14
11:01
(13) Дык если ты в начало файла добавишь пробел - то у тебя и локально весь файл перепишется. Т.е., формально у тебя изменятся ВСЕ блоки.
22 dmpl
 
20.03.14
11:02
(18) Дык на клиенте можно и предыдущую версию хранить, если уж на то пошло...
23 m-serg74
 
20.03.14
11:04
(22) какой размер ДропБокса счас?
24 m-serg74
 
20.03.14
11:05
придется же пред. версию всего что там есть хранить
25 Lama12
 
20.03.14
11:05
(5) И как же они это делают?
Что б достоверно сверить два файла, нужно иметь на одной стороне оба варианта файла. Т.е. либо нужно с сервера загрузить файл имеющийся на сервере и сравнить побайтно с версией готовящейся к передаче, либо передать файл на сервер и там сравнить.
Сравнение по Хэш может иметь коллизии. Я бы не стал доверять системе выполняющей сравнение файлов по хэш суммам.
26 m-serg74
 
20.03.14
11:06
(25) мне вопрос???
это либо дропу вопрос, либо к тем кто мне тут понаписал что я неуч и нифига не шарю в хэшах :)
27 vlandev
 
20.03.14
11:08
(25) rsync проверенное более чем десятилетием решение , тоже использует хэши блоков , технология более чем обкатанная , можно спокойно доверится.
28 m-serg74
 
20.03.14
11:09
(25) кстати, если [либо передать файл на сервер и там сравнить]? ИМХО, в таком случае сравнение теряет всякий смысл
29 dmpl
 
20.03.14
11:11
(24) Э-э-э... зачем всего? Только того, с чем работаешь в последнее время. Все остальное довольно быстро устареет, если работать с разных девайсов...
30 m-serg74
 
20.03.14
11:12
(29) а если ты офф лайн так сказать будешь менять что то?
31 dmpl
 
20.03.14
11:15
(30) Фиг тебе, а не оффлайн. Ведь прежде чем менять локальный файл - надо убедиться, что это последняя версия.
32 m-serg74
 
20.03.14
11:16
т.е. если я не подключен, я не поменяю все что захочу локально?
33 m-serg74
 
20.03.14
11:17
или как понять фиг мне?
34 Chai Nic
 
20.03.14
11:19
WebDAV штука неплохая в своей идее, но реализации убоги без исключений..
35 m-serg74
 
20.03.14
11:20
не совершенства в этом мире :)
36 dmpl
 
20.03.14
11:21
(32) Даже если ты сможешь поменять - то не факт что потом не возникнет коллизий при синхронизации. Так что не стоит этого делать, если не уверен в 100% одинаковости файла локально и на сервере.
37 m-serg74
 
20.03.14
11:24
(36) ))) очень удобная система)))
38 m-serg74
 
20.03.14
11:24
(36) и нахрена геммориться с хэшами, когда других более важных проблем куча
39 ShoGUN
 
20.03.14
11:24
(37) "Не нравится - не ешь."(с)
40 m-serg74
 
20.03.14
11:24
(39) спс, я и не ем
41 ShoGUN
 
20.03.14
11:26
Ветка отдает мракобесием. И практику уже привёл, и теорию, ан нет - "корабли без парусов - это нелепость".
42 m-serg74
 
20.03.14
11:28
(41) ответь на (18), если не затруднит
43 ShoGUN
 
20.03.14
11:29
(42) diff не делается, математика для файла с измененным размером в (19). И кроме того - есть ПРАКТИКА в (9) - проверь сам.
44 dmpl
 
20.03.14
11:29
(37) Дык а как ты хотел? Как еще можно обеспечить целостность файла при многопользовательской работе? Тем более что далеко не все программисты открывают файл с правильным режимом разделения доступа...
45 ShoGUN
 
20.03.14
11:32
(44) Вообще-то конфликты нормально разрешаются, если будут конфликтующие версии файла - сохранятся обе.
46 m-serg74
 
20.03.14
11:33
(43) насчет практики
отправка через квип файла размером несколько килобайт занимает от полуминуты до нескольких минут, вопрос - что за фигня? многократная передача одного и того же просто время потянуть?
47 ShoGUN
 
20.03.14
11:34
(46) Я понятия не имею, что у вас там в квипе, и при чем он тут.
48 dmpl
 
20.03.14
11:34
(45) Дык а какая будет открываться при доступе к файлу?
49 m-serg74
 
20.03.14
11:34
(43) насчет "diff не делается":
а как же твое же (15) понимать?
50 m-serg74
 
20.03.14
11:36
(48) так глубоко лучше не зарываться, думается, прислушиваясь к твоему же (36) "Так что не стоит этого делать, если не уверен в 100% одинаковости файла локально и на сервере"
51 ShoGUN
 
20.03.14
11:36
(49) >а как же твое же (15) понимать?
Как гипотезу при недостатке информации. Гипотеза не подтвердилась гуглением.
52 m-serg74
 
20.03.14
11:36
(47) к тому что ваша практика не показатель
53 m-serg74
 
20.03.14
11:37
(51) т.е. только сегодня узнал про CRC? благодаря гуглу?
54 ShoGUN
 
20.03.14
11:39
(48) Одна из двух, какая именно - спроси у дропбокса. Вторая
(53) Мля... Про CRC я узнал лет 15 назад. Вопрос - когда ты про него узнал. И главное - почему ты путаешь проверку целостности и хэширование потока.
55 m-serg74
 
20.03.14
11:40
(54) "Вопрос - когда ты про него узнал", примерно так же как и ты
56 ShoGUN
 
20.03.14
11:41
>Одна из двух, какая именно - спроси у дропбокса. Вторая
*Вторая хранится в папке cо словом Conflicts в названии. Сталкивался пару раз. Неудобство в том, что объединять приходилось руками.
57 ShoGUN
 
20.03.14
11:42
(55) Ну так может прочитаешь и подумаешь, чем Кольцевое хэширование отличается от CRC.
58 m-serg74
 
20.03.14
11:44
(57) CRC - это общее выражение, а не принцип выделения его, суть в том что ни один ХЭШ не в состоянии гарантировать стопроцентную целостность или восстановление потерянных моментов
59 ildary
 
20.03.14
11:45
(8) разбиение на чанки работало до тех, пока систему обмена Dropbox-а не похакали и им пришлось вводить жёсткое шифрование, которое поломало обмен с дроблением на куски. Правда это было уже давно и они могли придумать как и шифрование сделать и чанки сравнивать.
60 ShoGUN
 
20.03.14
11:45
(58) Видимо дураки авторы rsync-а этого не знают, господин теоретик.
61 m-serg74
 
20.03.14
11:46
(60) видимо знают
62 ShoGUN
 
20.03.14
11:48
(59) Оно до сих пор работает. Не работает дедупликация - т.е. совпадающие блоки ищутся только в том же файле сейчас, а не во всех файлах.
(61) Знают, и всё равно сделали систему синхронизации на хэшах?
63 m-serg74
 
20.03.14
11:50
(62) а есть другие варианты?
64 ShoGUN
 
20.03.14
11:51
(64) Вы еврей?
65 m-serg74
 
20.03.14
11:51
походу да :)
66 ShoGUN
 
20.03.14
11:51
*(64)->(63)
67 m-serg74
 
20.03.14
11:52
(66) а почему как еврей так сразу на Вы перешел? :)
68 ShoGUN
 
20.03.14
11:56
(67) Точно еврей. Альтернатива - тащить весь файл, но почему-то этого не делают.
69 Jump
 
20.03.14
11:59
(0)Только блоки.
Это собственно его основная фишка, отличающая его от многих других облачных сервисов синхронизации.
70 m-serg74
 
20.03.14
12:00
(68) я просто не пойму нафига с таким пафосом открывать Америку про контрольные суммы? наверное даже ребенок знает что любой пакет в сети(и не только) считается принятым только тогда когда контр. сумма на приемной стороне совпадет

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

знаю что есть... давно знаю
71 ShoGUN
 
20.03.14
12:01
(70) Проверка целостности(идентичности) блока/файла и проверка "что и где именно изменилось" - разные задачи, если что.
72 Jump
 
20.03.14
12:05
(25)-"Сравнение по Хэш может иметь коллизии. Я бы не стал доверять системе выполняющей сравнение файлов по хэш суммам."

Все делается просто.
Во первых возможность коллизий различается в разных системах хэширования.
Для начала используется максимально быстрая система хэширования богатая на коллизии.
Если она показывает идентичность, можно сделать хэш в другой системе, и сравнить эти хэши, это практически сведет к нулю возможность коллизии.
Ну и окончательно - когда блок загружен можно уже побайтно сравнить и окончательно увериться в отсутствии коллизий.
73 m-serg74
 
20.03.14
12:09
(71) в чем же разница? объясни
проверить пакет/кусок файла/весь файл, на мой взгляд разницы нету
74 m-serg74
 
20.03.14
12:11
(72) "Ну и окончательно - когда блок загружен можно уже побайтно сравнить и окончательно увериться в отсутствии коллизий."

сведет на ноль всю пользу предыдущих проверок
75 ShoGUN
 
20.03.14
12:13
(73) Пример различия приведен в (13). Задача нахождения места изменения - сложнее, чем задача нахождения факта изменения. Средства - похожие(но не идентичные), но для нахождения факта можно посчитать md5, а для всех блоков md5 считать - опупеешь.
76 Jump
 
20.03.14
12:13
(58)Хэш собственно и не должен что то гарантировать, и тем более восстанавливать.
Хэш служит лишь для быстрого сравнения - если хэши разные, то данные однозначно разные.
Если хэш совпал, значит либо файлы одинаковые либо коллизия.
Проводится дополнительная проверка чтобы исключить коллизию.
77 m-serg74
 
20.03.14
12:15
(76) "Проводится дополнительная проверка чтобы исключить коллизию."

как именно?

польза только одна - хэш совпал - считается что все правильно передано или что объекты равны
78 Jump
 
20.03.14
12:15
(74)С чего бы это?
Суть системы обеспечить минимальный трафик между хостами.
Суть проверки - не допустить передачи того блока который уже есть на другом хосте.
Двойная передача одного блока случается только в случае коллизии. Но поскольку это случается крайне редко, то система свою задачу выполняет.
79 m-serg74
 
20.03.14
12:17
(78) ты сам написал - первый контроль прошел проводим еще один, опять прошел, сравниваем весь переданный блок побайтно, прочитай внимательно всё в своем (72)
80 ShoGUN
 
20.03.14
12:18
(77) facepalm.jpg
Берешь две разные функции, считаешь два разных хэша. Вероятность коллизии для двух посчитанных хэшей равна произведению вероятностей.
81 m-serg74
 
20.03.14
12:19
(80) прочитай тоже внимательно всё в (72) Jump
82 ShoGUN
 
20.03.14
12:19
Чувствую, сейчас докатимся до дискуссии "Уникален ли GUID? Я очень боюсь, что у меня два совпадут!".
83 Jump
 
20.03.14
12:20
(77)Смотри - на хосте А есть блок нужно проверить стоит ли его передавать на хост Б.
Считаем хэш этого блока - если его хэша нет в БД хоста Б то однозачно передаем этот блок.
Если хэш нашелся в БД хоста Б то тут ситуация сложнее - либо это коллизия, либо такой файл есть, проверяем его более сложной хэш функцией на обоих хостах и по результату делаем вывод.
84 Jump
 
20.03.14
12:21
(81)Ну насчет побайтного сравнения я лоханулся. Это немножко не из той оперы.
А в остальном все верно.
85 m-serg74
 
20.03.14
12:22
(84) тады ква :)
86 ShoGUN
 
20.03.14
12:23
(83) Это не исключает ошибку, лишь минимизирует её. Штука в том, что такой надёжности достаточно для повседневного применения. С тем же(если не большим) порядком малости может накрыться локальный носитель или умереть сам хозяин информации :)
87 Jump
 
20.03.14
12:23
Побайтное сравнение применяется не в дропбоксе и аналогах, а в дедупликации, когда файлы на одном диске и передавать никуда не надо.
Там да, при совпадении хэша на всякий пожарный проводится побайтное сравнение.
88 m-serg74
 
20.03.14
12:23
(82) я не понял зачем было открывать Америко/Вики про хэши? про них знают даже дети
89 m-serg74
 
20.03.14
12:24
(87) а смысл?
получается:
не совпал - передаем всё
совпал всё равно передаем всё что бы убедиться

так что ли? смысл проверки тогда
90 ShoGUN
 
20.03.14
12:24
(88) Я привёл ссылку конкретно на кольцевой хэш. Я забыл о его существовании, и нагуглил именно то, что он применяется в дропбоксе.
91 oleg_km
 
20.03.14
12:25
(88) Заело что ли?
92 Jump
 
20.03.14
12:25
(86)Да минимизирует. Но там такие порядки, что не стоит даже заморачиваться. Т.е есть вероятность что луна на голову свалится, и она ненулевая.
93 m-serg74
 
20.03.14
12:26
(91) как и оппонента
94 Jump
 
20.03.14
12:27
(89)
Не совпал - передаем.
Совпал - хэшируем другим алгоритмом, более сложным и долгим, но имеющий на много порядков меньшую возможность образования коллизий, и передаем ХЭШи а не файлы для сравнения.
95 ShoGUN
 
20.03.14
12:27
(89) Нет, если совпал 1,2..n раз - не передаём блок вообще. Чем больше n - тем больше надёжность.
96 m-serg74
 
20.03.14
12:28
(95) что нет? читай в (87)

"Там да, при совпадении хэша на всякий пожарный проводится побайтное сравнение."

что есть "побайтное сравнение"?
97 ShoGUN
 
20.03.14
12:28
(96) Тебя заело? Jump уже сказал, что лоханулся с побайтным сравнением.
98 m-serg74
 
20.03.14
12:29
(97) в (84) написал лоханулся, а (87) опять тоже самое
99 Lama12
 
20.03.14
12:29
(94) (95) В принципе, да. Подобная схема сведет вероятность коллизий практически к нулю.
100 ShoGUN
 
20.03.14
12:30
(98) Ты прав в том, что емли мы априори хэшам не доверяем - то считать - смысла нет, всё равно потом побайтно сравнивать.
101 m-serg74
 
20.03.14
12:32
(100) так и я про тоже. есть проверенные алгоритмы, и нет смысла проверять ими. а при совпадении проверять сложнее, сложнее и в конце концов сравнивать побитно, типа "не может быть что всё правильно"

только если не совпало
102 ShoGUN
 
20.03.14
12:36
(101) Вообще не доверять проверке целостности - нонсенс :) Она же везде. Ты же не закладываешься на то, что тебе корректные TCP-пакеты с мусором попадут, или с диска мусор считается, хотя контрольная сумма совпадёт.
103 m-serg74
 
20.03.14
12:36
(102) я где то отрицал это?
104 Jump
 
20.03.14
12:37
(98)Прочитай внимательнее (87)там не тоже самое :)
я там лишь объяснил почему лоханулся.
В дропбоксе побайтное сравнение исключено, т.к файлы в разных местах.
В дедупликации локальной оно применяется т.к файлы в одном месте и проще сравнить побайтно, чем считать сложный хэш.
105 ShoGUN
 
20.03.14
12:38
(103) В (57) например. Коллизии, коллизии, кругом одни коллизии.
106 ShoGUN
 
20.03.14
12:39
Тьфу, в (58).
107 m-serg74
 
20.03.14
12:39
(104) не буду биться об заклад но думаю кнтроллер винта в конце пакета передает контр. сумму, так что даже если сравнивать два файла на одном винте все равно будет использоваться принцип "проверили КС, не совпало проверяем точнее"
108 m-serg74
 
20.03.14
12:41
(106) в (58) дословно сказано 100% гарантии нету.. и не больше, там я не говорил что не доверяю КСам
109 ShoGUN
 
20.03.14
12:42
(108) 100% гарантии сохранности чего бы то ни было нет ни в каком случае.
110 ShoGUN
 
20.03.14
12:43
+(109) И хэши тут качественно ничем не выделяются.
111 m-serg74
 
20.03.14
12:43
(109) так на что (106) тогда указывает? :)
112 Jump
 
20.03.14
12:44
(107)Примерно так оно и есть.
113 ShoGUN
 
20.03.14
12:44
(111) На то, что ты подчеркнул отсутствие 100% гарантий как качественную особенность хэшей.
114 Jump
 
20.03.14
12:45
(113),(111) Хорош спорить о том, кто, где, что не так сказал.

С сабжем вроде разобрались?
115 m-serg74
 
20.03.14
12:46
(113) ты с этим поспоришь, а говоря что нет 100%, я не имел ввиду что я не доверяю... мне и 70% хватит
116 m-serg74
 
20.03.14
12:47
(114) с сабжем только после декомпиляции и анализа продукта :)

а мы пока про возможность того что это так и есть в ДБ:)
117 ShoGUN
 
20.03.14
12:47
(114) Мне и разбираться не надо было, я и так знал про частичную синхронизацию и регулярно ей пользуюсь :)
118 m-serg74
 
20.03.14
12:49
(117) а вот команда ДБ пишет почему то для "опытных пользователей" что "Перед передачей файла мы сравниваем его последнюю и предыдущую версии", тут вроде ничего про хэши нету... или я не вижу
119 Jump
 
20.03.14
12:50
(116)Ну декомпиляция не обязательна.
Можно просто провести тестирование на специально измененных файлах.
Я этим кстати баловался.
Как в случае с дропбоксом, так и в случае с дедупликацией от майкрософта.
120 Jump
 
20.03.14
12:51
(118)Ну ты не совсем правильно их понял.
В дропбоксе помимо всего прочего есть еще и хранение версий.
Т.е можно откатиться к версии файла которая была вчера, или неделю назад.
121 ShoGUN
 
20.03.14
12:53
(118) Во-первых, тут ничего нет и про средства сравнения. Вообще. И как оно делается - сравнением хэшей, или по-другому - не указано. Или "сравниваем" это именно "сравниваем побитово"? А во-вторых, там написано "для опытных пользователей" а не "для программистов и хакеров".
122 ShoGUN
 
20.03.14
12:55
+(121) А две версии - это клиентская и серверная.
123 ShoGUN
 
20.03.14
12:56
(120) Имеет место, но к сабжу не имеет прямого отношения.
124 m-serg74
 
20.03.14
12:58
(121) не спорю:) ибо думается "для опытных пользователей" = "могут установить винду":)
125 m-serg74
 
20.03.14
13:00
(117) а вот так было бы грамотно сказано из (117):
"используется частичная синхронизация"
126 m-serg74
 
20.03.14
13:00
(125) к (121)
127 Jump
 
20.03.14
14:58
(13)Кстати да. Хитрый вопрос.
Но тем не менее поймет.
128 le_
 
20.03.14
16:25
Вот тут есть вроде неплохая статья о dropbox.
http://habrahabr.ru/post/163189/
Файлы бьются на блоки, и да, передаются измененные блоки. Только некоторые файлы могут содержать всего один блок. И при изменении они будут передаваться полностью. Такие файлы скорее всего будут иметь размер до 4 мб.