Torgholodmash.ru

ТоргХолодМаш
38 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Что делать, если Яндекс Диск не синхронизируется

Что делать, если Яндекс Диск не синхронизируется

Яндекс Диск не синхронизируется: решение проблемы

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

Новый алгоритм синхронизации Яндекс.Диска: как не подавиться 900 000 файлов

Яндекс.Диск — один из немногих сервисов Яндекса, частью которого является программное обеспечение для десктопа. И одна из самых важных его составляющих — алгоритм синхронизации локальных файлов с их копией в облаке. Недавно нам пришлось его полностью поменять. Если старая версия с трудом переваривала даже несколько десятков тысяч файлов и к тому же не достаточно быстро реагировала на некоторые «сложные» действия пользователя, то новая, используя те же ресурсы, справляется с сотнями тысяч файлов.

В этом посте я расскажу, почему так получилось: чего мы не смогли предвидеть, когда придумывали первую версию ПО Яндекс.Диска, и как создавали новую.

Прежде всего, о самой задаче синхронизации. Технически говоря, она состоит в том, чтобы в папке Яндекс.Диска на компьютере пользователя и в облаке был один и тот же набор файлов. То есть такие действия пользователя, как переименование, удаление, копирование, добавление и изменение файлов, должны синхронизироваться с облаком автоматически.

Почему это не так просто, как кажется на первый взгляд?

Теоретически задача может показаться достаточно простой, но в реальности мы сталкиваемся с разными сложными ситуациями. Например, человек переименовал папку на своем компьютере, мы это детектировали и послали команду на бекенд. Однако никто из пользователей не ждет, пока бекенд подтвердит успешность переименования. Человек сразу открывает свою локально переименованную папку, создает в ней подпапку, и, к примеру, переносит в нее часть файлов. Мы попали в ситуацию, в которой невозможно сразу выполнить все необходимые операции синхронизации в облаке. Сначала надо дождаться завершения первой операции и только потом можно продолжать.

Ситуация может стать еще сложнее, если с одним аккаунтом одновременно работают несколько пользователей или у них есть общая папка. А это случается достаточно часто в организациях, использующих Яндекс.Диск. Представьте себе, что в предыдущем примере в тот момент, когда мы получили от бекенда подтверждение первого переименования, другой пользователь берет и переименовывает эту папку еще раз. В этом случае опять нельзя сразу выполнить действия, которые уже совершил первый пользователь у себя на компьютере. Папка, в которой он работал локально, на бекенде в это время уже называется по-другому.

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

Прошлая версия алгоритма

В прошлой версии десктопного ПО Яндекс.Диска для поиска изменений использовался алгоритм сравнения деревьев. Любое другое решение на тот момент не позволяло реализовать поиск перемещений и переименований, так как бэкэнд не имел уникальных идентификаторов объектов.

В этой версии алгоритма мы использовали три основных дерева: локальное (Local Index), облачное (Remote Index) и последнее синхронизированное (Stable Index). Кроме этого, чтобы предотвратить повторную генерацию уже поставленных в очередь операций синхронизации, использовались ещё два вспомогательных дерева: локальное ожидаемое и облачное ожидаемое (Expected Remote Index и Expected Local Index). В этих вспомогательных деревьях хранилось ожидаемое состояние локальной файловой системы и облака, после выполнения всех операций синхронизации, которые уже поставлены в очередь.

Процедура сравнения деревьев в старом алгоритме выглядела следующим образом:

  1. Если локальное ожидаемое дерево и облачное ожидаемое дерево пусты, инициализируем их, копируя последнее синхронизированное дерево;
  2. Сравниваем локальное дерево с облачным ожидаемым и по результатам сравнения отдельных узлов добавляем в очередь операции синхронизации в облаке (создание коллекций, передача файлов в облако, перемещение и удаление в облаке);
  3. Для всех операций, которые поставлены в очередь на предыдущем шаге, фиксируем их будущий эффект в ожидаемом облачном дереве;
  4. Сравниваем облачное дерево с локальным ожидаемым и по результатам сравнения отдельных узлов добавляем в очередь операции синхронизации с локальной файловой системой (создание директорий, скачивание файлов из облака, перемещение и удаление локальных файлов и директорий);
  5. Для всех операций, которые поставлены в очередь на предыдущем шаге, фиксируем их будущий эффект в ожидаемом локальном дереве;
  6. Если в очередь попадают одновременные операции с одним и тем же файлом или директорией (например, передача файла в облако и скачивание этого же файла из облака), то фиксируем конфликт — файл изменился в двух местах;
  7. После того, как операция синхронизации выполнена в облаке или с локальной файловой системой, заносим её результат в последнее синхронизированное дерево;
  8. Когда очередь операций синхронизации становится пустой, удаляем локальное ожидаемое и облачное ожидаемое дерево. Синхронизация закончена, и они нам больше не понадобятся.
Читать еще:  Как синхронизировать айфон с компьютером по wifi без кабеля

Почему нам пришлось придумывать новый алгоритм

Главными проблемами алгоритма сравнения деревьев стали большое потребление памяти и необходимость сравнения деревьев целиком даже при небольших изменениях, что приводило к большой нагрузке на процессор. Во время обработки изменений даже одного файла использование оперативной памяти возрастало примерно на 35%. Допустим, у пользователя было 20 000 файлов. Тогда при простом переименовании одного файла размером 10Кб потребление памяти вырастало скачкообразно — со 116Мб до 167МБ.

Также мы хотели увеличить максимальное количество файлов, с которым без проблем может работать пользователь. Несколько десятков и даже сотен тысяч файлов может оказаться, к примеру, у фотографа, который хранит в Яндекс.Диске результаты фотосессий. Эта задача стала особенно актуальной, когда у людей появилась возможность купить дополнительное место на Яндекс.Диске.

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

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

Новый алгоритм

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

Так как мы понимали, что это серьезное изменение, то создали прототип, подтвердивший эффективность нового решения. Рассмотрим на примере, как меняются данные в дереве во время синхронизации нового файла.

  1. После того как пользователь добавил в папку Диска новый файл, программа обнаружила его и добавила в дерево новый элемент. У этого элемента известно только одно состояние – local. Так как stable и remote состояния отсутствуют, память под них не выделяется;
  2. Программа выполняет upload файла. Из облака приходит push, подтверждающий появление нового файла, и в дерево добавляется remote состояние;
  3. Состояния local и remote сравниваются. Так как они совпадают, добавляется stable состояние;
  4. Состояния local и remote удаляются. Они больше не нужны, так как вся информация есть в stable.

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

Другие улучшения

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

Яндекс.Диск использует дайджесты sha256 и MD5 для проверки целостности файлов, обнаружения изменившихся фрагментов и дедупликации файлов на бекенде. Так как эта задача сильно нагружает CPU, в новой версии реализация расчетов дайджеста была существенно оптимизирована. Скорость получения дайджеста файла увеличена примерно в два раза.

Цифры

Синхронизация уникальных 20000 файлов по 10Кб

Версия ПОЗагрузка на CPU.
Расчет дайджестов
Нагрузка на CPU
upload
Использование оперативной памяти, Мб
Яндекс.Диск 1.3.328% (1 ядро 100%)Примерно 1%102
Яндекс.Диск 1.2.748% (2 ядра 100%)Примерно 10%368

Вычисление дайджестов уникальных 20000 файлов по 10кб (индексация)

Читать еще:  Что можно синхронизировать в яндекс браузере
Версия ПОНагрузка на CPUВремя, секИспользование оперативной памяти, Мб
Яндекс.Диск 1.3.325% (1 ядро 100%)19082
Яндекс.Диск 1.2.750% (2 ядра 100%)200245

Запуск с 20000 синхронизированных файлов по 10Кб

Версия ПОНагрузка на CPUВремя, секИспользование оперативной памяти, Мб
Яндекс.Диск 1.3.325% (1 ядро 100%)1055
Яндекс.Диск 1.2.750% (2 ядра 100%)22125

Upload 1Gb. Соединение Wi-Fi 10 МБит

Версия ПОНагрузка на CPUВремя, сек
Яндекс.Диск 1.3.35%1106
Яндекс.Диск 1.2.75%2530

Что получилось

Из примеров видно, что новая версия ПО Яндекс.Диска использует примерно в 3 раза меньше оперативной памяти и примерно в 2 раза меньше нагружает CPU. Обработка мелких изменений не приводит к увеличению объема используемой памяти.

В результате проделанных изменений существенно увеличилось количество файлов, с которым без проблем справляется программа. В версии для Windows – 300 000, а на Mac OS X — 900 000 файлов.

Отключение от хранилища

Перед удаление Яндекс.Диска с компьютера – необходимо отключить синхронизацию с сервером:

  1. Перейти на панель задач, в область уведомлений. Отыскать на ней иконку в виде летающей тарелки, кликнуть по ней правой кнопкой мыши (ПКМ). Из всплывающего меню выбрать пункт “Настройки”.Настройки диска
  2. В открывшемся окне перейти на вкладку “Аккаунт”, а на ней нажать на “Отключить компьютер от диска”, затем “ОК”.Отключить от диска
  3. Отключение от сервера завершено, теперь можно перейти к удалению приложения.

История

Запуск сервиса для бизнеса без рекламы

15 мая 2020 года стало известно, что Яндекс запустил Диск и Почту для бизнеса без рекламы.

Яндекс.Диск

Для начала платным пользователям Яндекс.Диск для бизнеса сервис предоставит от 200 ГБ до 2 ТБ, приоритетную поддержку и уберет рекламу, а также покажет все изменения файлах за последние 90 дней. За каждого пользователя компания будет платить от 147 до 500 рублей в месяц. В бесплатном варианте все сотрудники получат по 10 ГБ свободного места.

Яндекс.Почта для бизнеса предоставляется бесплатно или за 129 рублей в месяц. Пользователям доступна адресная книга с контактами всех коллег, и управление мероприятиями через Яндекс.Календарь. Платная версия предлагает те же бонусы, что и на Диске, а также неограниченное количество ящиков. Вместе с тем «Почта» для домена стала теперь бесплатной частью «Почты» для бизнеса.

Диск доступен в веб-версии, мобильных и десктопных приложениях, а Почта — в веб-версии и приложениях для смартфонов [1] .

Доступность в AppGallery

8 апреля 2020 года стало известно о полной интеграции всех мобильных приложений компании Яндекс в магазин приложений AppGallery. Подробнее здесь.

2016: Отказ от локального хранения файлов

«Яндекс» объявил в декабре о выпуске экспериментальной программы — бета-версии «Яндекс.Диска» 2.0 для компьютера. В отличие от других клиентов для облачных хранилищ, новый «Диск» хранит файлы только в облаке, так что они не дублируются на компьютере пользователя.

«Бета-версия «Яндекс.Диска» 2.0 — это не замена классической программы «Диска», а отдельный продукт для людей, которые хотят управлять своим облачным хранилищем с компьютера, а хранить файлы локально не хотят. Наш опрос показал, что 23% пользователей десктопного клиента «Яндекс.Диска» недовольны тем, что папка «Диска» занимает место на компьютере. Для них мы и разработали новую программу», — сказала руководитель облачных сервисов «Яндекса» Наталья Хайтина.

Экспериментальная программа «Яндекс.Диска» предназначена для сохранения файлов в облаке: для загрузки достаточно перетащить файл на виджет программы. Внешне новый «Диск» похож на системные файловые менеджеры Проводник и Finder, так что пользователям будет несложно освоить интерфейс.

Бета «Яндекс.Диска» 2.0 пригодится тем, кому важно освободить место на компьютере или сохранить в облаке копии документов, но при этом всегда иметь их под рукой. Если есть интернет, любой файл можно открыть и отредактировать — все изменения сохранятся автоматически.

Программа доступна для Windows и macOS. Пользователи, у которых установлена классическая версия «Яндекс.Диска», тоже могут попробовать новый «Диск» — программы работают параллельно и не мешают друг другу.

2015: Microsoft Office Online действует в Яндекс.Диск

16 ноября 2015 года Яндекс объявила о дополнительных услугах — в облачном хранилище и почтовом сервисе появился Microsoft Office Online. Это пакет для редактирования документов популярных офисных форматов прямо в браузере [2] .

Читать еще:  Если синхронизировать iphone с другим компьютером удалятся ли данные

Скриншот окна Microsoft Office Online из ресурса Яндекс.Диск (2015)

Предположительно в конце 2015 года конкуренцию продуктам Microsoft составить отечественный «МойОфис» — облачный редактор. Российский МойОфис «опоздал» на 2−3 месяца и «один Microsoft Office Online» — версия МоегоОфиса «для облачных провайдеров» выйдет в феврале 2016 года.

2014: Поддержка автономного режима

5 августа 2014 года компания «Яндекс» выпустила обновленную версию приложения «Яндекс.Диск» для Android и iOS, добавив в нее поддержку автономного режима. Он позволяет сохранить выбранные файлы в память мобильного устройства и всегда иметь к ним доступ, даже в отсутствии интернет-соединения.

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

Помимо добавления новой функции, разработчики улучшили процесс загрузки данных в приложении «Яндекс.Диск» в фоновом режиме.

2013: Запуск платного расширения пространства

В июле 2013 г. пользователи получили возможность платного расширения пространства. Стоимость дополнительных 10 ГБ составляет 30 руб. в месяц, 100 ГБ — 150 руб., 1 ТБ — 900 руб. При оплате за год предоставляются скидки.

2012: Запуск сервиса

27 февраля 2012 года стало известно, что «Яндекс» разрабатывает сервис с рабочим названием «Яндекс.Диск».

Сервис был запущен весной 2012 года в бета-версии и был доступен по приглашениям. Сообщалось, что в распоряжении пользователя — до 10 гигабайт свободного пространства, куда можно сложить свои личные документы, фотографии, музыку, фильмы. Они будут доступны пользователю везде, где есть интернет, – дома, на работе, в гостях или в кафе. Можно в любой момент открыть нужный файл или поделиться им с другими людьми. Помимо тех файлов, которые пользователь загружает на сервис, Диск хранит вложения из его почты на Яндексе. Для них выделяется дополнительное пространство.

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

Диск не настроен

Вы установили программу, но не выбрали папку для синхронизации и не авторизовались в программе.

Конфликт папки синхронизации

Указанная в настройках программы папка уже используется с другой учётной записью Диска. Использовать одну и ту же папку для синхронизации с разными аккаунтами нельзя. Выберите другую папку в настройках программы.

Папка синхронизации не выбрана

Не выбрана папка, которая будет синхронизироваться с Диском. Выбрать папку можно в настройках программы.

Невозможно загрузить файл больше 10 ГБ

В папке Яндекс.Диск есть файлы объемом более 10 гигабайт. Такие файлы загрузить на Диск нельзя.

Сначала надо проконтролировать, включена ли вообще синхронизация. В трее наводим курсор мышки на иконку Яндекс.Диска и всплывает окошко с уведомлением, что синхронизация выключена.

Синхронизация Яндекс.Диска выключена

Синхронизация выключена

Чтобы синхронизацию включить, кликаем по иконке Яндекс.Диска правой кнопкой и в контекстном окошке кликаем по пункту меню Включить синхронизацию. Выполняется ее запуск.

Включаем синхронизацию Яндекс.ДискаВключаем синхронизацию

Примечание

Если всё настроено верно, то на Яндекс Диске почти сразу будут появляться все файлы из директории backup. Если что-то не работает, попробуйте исправить ошибки руководствуясь статьёй резервное копирование VESTA. В конце статьи рассказывается как исправить типовые ошибки.

Читайте также

Кстати, на сайте нет рекламы. У сайта нет цели самоокупаться, но если вам пригодилась информация можете задонатить мне на чашечку кофе в макдаке. Лайкнуть страницу или просто поблагодарить. Карма вам зачтется.

Комментарии к статье “ Резервное копирование на Яндекс Диск (на примере Vesta) ” (5)

Отличный мануал. Скажите, а какие команды нужно сменить чтобы добиться такого же результата в Ubuntu 16.04 ?

С Ubuntu не работал, но во втором абзаце есть ссылка на сайт Яндекса. Там инструкция для всех популярных Linux систем.

Общее количество сообщений у пользователя

отличается от вот этого

# Путь к файлу с данными авторизации
auth=»/root/.config/yandex-disk/passwd»

# Каталог хранения backup в VESTA
dir=»/backup»

# Не синхронизировать указанные каталоги
# exclude-dirs=»exclude/dir1,exclude/dir2,path/to/another/exclude/dir»

Хороший вопрос. Подразумевал ли я, что они должны быть разными, уже не вспомню. Вероятно ничем, кроме пояснений. Поправил описание в статье.

0 0 голоса
Рейтинг статьи
Ссылка на основную публикацию
ВсеИнструменты