Яндекс.Диск не синхронизируется. Что делать? Выборочная синхронизация папок на Яндекс.Диске

Яндекс диск — это облачный сервис, который позволяет хранить любые ваши файлы на серверах компании Yandex. Вы можете обмениваться ссылками на файлы с любым из ваших знакомых или же по работе. Сервис построен по принципу синхронизации. Синхронизация происходит на всех устройствах и синхронизируются все изменения. Таким образом на каком бы устройстве вы не работали, все ваши изменения будут автоматически отражаться на других устройствах (компьютер, ноутбук, планшет или телефон), где установлен Yandex Disk и используется тот же аккаунт для входа.

Возможности Яндекс Диска

На данный момент Yandex при регистрации предлагает бесплатно 10 Гб дискового пространства. Этот объем можно увеличить до 20 Гб, если вы пригласите в сервис 10 своих друзей (по 512 Мб за каждого) и они примут приглашение и зарегистрируются. Если вам этого объема не достаточно, Яндекс предлагает за дополнительную ежемесячную плату расширить до максимум 1 Тб. Цены на сегодня следующие:

  • дополнительные 10 Гб за 30 рублей в чесяц;
  • объем диска 100 Гб за 150 рублей;
  • объем 1 Тб за 900 рублей в месяц;

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

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

Как установить яндекс диск на компьютер

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

Для установки софта перейдите по этой ссылке -> Yandex.Disk Setup . Скачайте необходимый для вашей операционной системы файл установки (обычно определяется автоматически) и установите на компьютер. Во время установки программа по умолчанию предложит установить дополнительные сервисы, которые лично по моему мнению абсолютно не нужны и я ими никогда не пользуюсь. Отключите галочки в соответствующих полях.

После установки программы, вам надо будет войти в аккаунт, используя почтовый ящик от Яндекс почты в качестве логина и пароль от вашего почтового аккаунта. Если вы еще не заводили почтовый ящик Mail.Yandex, нажимаете на ссылку зарегистрироваться и регистрируете аккаунт. После этого входите под этим логином.

Следующий шаг — это расположение папки для хранения файлов. По умолчанию она располагается на системном диске. В моем случае этот вариант не подходит т.к. мой системный диск С: имеет маленький размер (я использую для установки системы SSD диски т.к. они очень значительно ускоряют работу Windows), а для хранения основных файлов у меня стоит обыкновенный диск большой емкости.

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

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

Яндекс диск: как пользоваться

Чтобы начать пользоваться диском как хранилище ваших файлов, вам необходимо разместить эти самые файлы в облаке Яндекс в своем аккаунте. После установки на компьютер вы можете попасть в папку с файлами через «Мой компьютер», выбрав соответствующую папку «Яндекс. Диск» или же дважды кликнув на иконку летающей тарелки в системном трее. Управлять файлами в этой папке можно точно так же как и другими на вашем компьютере. Можно использовать буфер обмена для копирования/перемещения из другой папки, а можно использовать технологию «Drag-and-drop» перетаскивая папки и файлы мышкой.

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

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

Удаление файлов происходит так же как и при удалении файлов на вашем диске. Нажатие кнопки Del или же удаление по нажатию правой кнопкой мыши на объекте. Сразу же после этой операции программа автоматически удалит файл в облачном хранилище.

Если вы не используете программу на компьютере для управления вашим диском, Yandex предусмотрел возможность производить все операции через вэб интерфейс. Вам нужно просто запустить браузер (на любом устройстве) и зайти на сайт Disk.Yandex . Входите под своим логином и паролем и сразу же попадаете на свой диск.

Откроется интерфейс, в котором будут находиться все ваши папки и файлы. Загрузить файлы на диск можно нажав на область «Загрузить файлы» или же просто скопировать объекты перетаскиванием в эту же область. Переход по папкам происходит по двойному нажатию.

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

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

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

Как удалить яндекс диск

Чтобы удалить программу Yandex.Disk с компьютера, необходимо проделать некоторые действия в определенной последовательности. Первое, что необходимо сделать, это отключить локальную папку где хранятся файлы от удаленного сервера. Для этого зайдите в настройки программы и откройте вкладку «Аккаунт» и нажмите на кнопку «Отключить компьютер от диска». Нажимаете «Применить» или «Ок».

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

После отключения нажимаете «Пуск» и заходите в «Панель управления». Выбираете «Программы и компоненты» (это в том случае, если у вас Windows 7) и в списке находите программу Yandex.Disk и удаляете ее с компьютера.

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

Сравнение OneDrive, Google disc, DropBox, Яндекс Диск

В конце прошлого месяца по Интернету прошла волна слухов о скором открытии нового облачного сервиса для синхронизации данных от Google. Но пока все с интересом ждали появления Google Drive, 5 апреля подобный сервис без лишней рекламы представил «Яндекс». За день до запуска нового сервиса в официальном «Твиттере» компании был опубликован его логотип, и пользователям предлагалось отгадать, что за ним скрывается.

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

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

Когда в Сети появляется очередной сервис для синхронизации, сразу же возникает вполне резонный вопрос: чем он лучше? У «Яндекса» есть несколько очевидных преимуществ перед конкурентами:

  • Бесплатный статус. Возможно, в будущем какие-то платные пакеты и появятся, но пока что об этом не говорят. При этом в онлайновом хранилище можно размещать до 10 Гбайт данных. Это в пять раз больше, чем Dropbox дает новым пользователям (правда, за привлеченных пользователей на Dropbox можно получить еще 16 Гбай т, но для этого придется поработать). У Microsoft на SkyDrive — 25 Гбайт, но удобного клиента для работы с файлами на компьютере все еще нет.
  • Неограниченная тарифом скорость для тех провайдеров, в локальной сети которых находится «Яндекс». Полный список провайдеров, подключенных к программе «Локальная сеть Яндекса», .
  • Поддержка протокола WebDav, благодаря чему «Яндекс.Диск» может работать и без «родного» клиента. У сервиса пока что нет клиента для Linux, но поддержка WebDav позволяет работать с ним и в этой среде.
  • Русский интерфейс. Людей, для которых это имеет значение, по-прежнему много.

Подобно Google, «Яндекс» идет по пути интеграции своих сервисов. «Яндекс.Диск» интегрирован с почтой: для доступа к веб-интерфейсу нужно открыть страницу mail.yandex.ru/neo2/#disk/. Исходный размер хранилища — 3 Гбайт, но его легко увеличить до 10 Гбайт за три простых шага: скачать и установить клиент для Windows или Mac OS X, загрузить несколько файлов на сервис с помощью этой программы и рассказать о новом сервисе друзьям в социальных сетях или же отправив им сообщение по электронной почте. Нужно иметь в виду, что такое сообщение не является приглашением — это просто уведомление о появлении нового сервиса.

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

На некоторых компьютерах, работающих под управлением Windows 7, приложение устанавливаться не хочет. Разработчики о проблеме уже знают и обещают решить, а пока что, если не повезет, можно получить вот такое сообщение:

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

Если приложение установлено на нескольких компьютерах, все изменения синхронизируются. О том, что файлы успешно синхронизированы, можно догадаться по зеленым пометкам на их названиях в файловом менеджере, а также по наличию такой же пометки на иконке приложения в трее (смотрите, как похоже на Dropbox, — его иконка справа).

По умолчанию папка располагается по адресу C:\Пользователи\Имя_пользователя\YandexDisk, но ее расположение изменяется в настройках программы. Там же можно отключить запуск приложения при загрузке системы, посмотреть, сколько осталось свободного места, и задать ручные настройки прокси-сервера.

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

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

Все файлы, к которым был открыт доступ, можно просмотреть в разделе «Опубликованные» в веб-интерфейсе сервиса. Если выбрать файл, можно снова получить ссылку на него (на этот раз — уже не короткую), а также снова сделать его личным. При этом он сразу же пропадет из «Опубликованных».

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

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

Просмотр пока что работает только для графических файлов. Попытки просмотреть в браузере документы PDF, RTF, MS Office, а также текстовые и HTML-файлы успехом не увенчались — сервис предлагает их только скачать. То же самое с музыкой — загруженные на сервис MP3 слушать с сервера нельзя.

Отдельного внимания заслуживает папка «Почтовые вложения», в которой хранятся все отправленные и полученные аттачменты. Размер этой папки в общую квоту «Диска» не входит. В этом разделе можно быстро находить вложения по типам (графика, документы, музыка, видео, архивы), а также по дате получения или отправки либо по имени отправителя. Файл вложения можно загрузить, не переходя к письму. Просится еще кнопочка для копирования вложения в основное хранилище «Диска», но ее пока что нет.

Одно из главных преимуществ «Яндекс.Диска» перед Dropbox — поддержка протокола WebDAV. Благодаря этому можно управлять файлами в сетевом хранилище через любую программу, которая поддерживает этот протокол. Такие программы существуют и для Windows, и для Mac OS X, и для Linux — даже для FreeBSD. При использовании «Яндекс.Диска» через WebDAV можно создать виртуальный диск, который будет отображаться в списке устройств системы. К тому же, в этом случае можно не беспокоиться о попадании в систему «лишних» приложений вроде «Яндекс.Бара». С другой стороны, при работе с WebDAV, например, не работает быстрое открытие доступа к файлу при помощи команды контекстного меню.

Для настройки доступа к «Яндекс.Диску» через WebDAV в Windows нужно выбрать команду «Подключить сетевой диск» в контекстном меню элемента «Компьютер» в «Проводнике», затем выбрать букву виртуального диска, указать адрес сервера «Яндекса» — https://webdav.yandex.ru — и ввести данные учетной записи почты.

После этого виртуальный диск появится в списке устройств. Инструкции по подключению «Диска» через WebDav для других систем можно найти в справочном центре «Яндекса .

Теперь еще пара слов о мобильных приложениях, ведь именно их наличие для многих является главным фактором для выбора сервиса синхронизации. «Яндекс» предлагает приложения для устройcтв с Android и iOS, но не пытайтесь найти «Яндекс.Диск» в Google Play и App Store. «Диск» доступен не в виде отдельного приложения, а как часть обновленной «Яндекс.Почты» . Конечно, не всем это понравится, но для тех, кто уже использует почту от «Яндекса» , удобство налицо — дополнительное приложение устанавливать не нужно.

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

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

⇡ Заключение

Хотя скептики продолжают твердить о том, что хранение файлов «на сервере у незнакомого дяди» — небезопасно, даже они вынуждены согласиться: это чертовски удобно. Сервисы для синхронизации позволяют нам не задумываться о том, на каком компьютере мы в последний раз работали с файлом и в кармане каких брюк оставили флешку с последней копией. Они также обеспечивают удобнейший обмен файлами между компьютерами и мобильными устройствами, поэтому нет ничего удивительного, что число пользователей Dropbox, SugarSync и прочих сервисов с каждым днем растет.

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

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

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

Вход

Как войти в Яндекс.Диск с Android:


Использование

Действия, которые можно выполнять в приложении:

  • сортировка документов или по имени, или по дате изменения;
  • выбор документа;
  • поиск по документам.

Прикосновение к иконке «гамбургер-меню» даст возможность перейти в настройки диска. Здесь есть подпункты:

  1. Диск (перемещаемся в наше хранилище).
  2. Офлайн (переместит в окно, в котором доступны без интернета, как отдельные документы, так и их папки).
  3. Корзина (раскроется окно с удаленными документами).

Касание надписи «Настройки» позволит ознакомиться с установленными на телефоне настройками:

  • увеличить размер диска;
  • очистить рубрику «Офлайн» или кеш;
  • опция, позволяющая осуществить «переезд с телефона на телефон».

Прикосновение к надписи «О программе» позволит вам обнаружить версию и номер сборки клиента, установленного на смартфоне. Номер сборки указывается с конкретной датой сборки.

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

    Мы решили изменить структуру хранения данных и заменить три дерева (Local Index, Remote Index, Stable Index) на одно, что должно было привести к снижению избыточности в главной структуре данных. Из-за того что ключом в дереве является путь к элементу файловой системы, в результате объединения значительно сократился объем используемой оперативной памяти.


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

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

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


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

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

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

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

    Цифры

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

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

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

    Upload 1Gb. Соединение Wi-Fi 10 МБит
    Время, сек

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

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

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

    В последнее время все большую популярность набирают сервисы облачного хранения данных, такие как Яндекс.Диск, Google Drive и т.д и т.п. Они позволяют Вам подстраховаться от потери важных данных, таких как документы фотографии и др. В принципе это удобно, за исключением одного момента — программное обеспечение сервиса создаёт на компьютере свою папку, с которой осуществляет синхронизацию облачный сервис, т. е. чтобы отправить какие-то данные в «облако» нужно скопировать их в эту папку. Это неудобно при больших объемах данных: так если у вас, к примеру, 300 Гб фотографий, то для синхронизации их нужно выделить и скопировать в папку сервиса (а копирование такого объема явно не для слабонервных), и это процесс нужно повторять при обновлении данных. Но нашлось решение проблемы — символическая ссылка.

    Символическая (символьная) ссылка - специальный файл в файловой системе, для которого не формируются никакие данные, кроме одной текстовой строки с указателем. Эта строка трактуется как путь к файлу, который должен быть открыт при попытке обратиться к данной ссылке (файлу). Символьная ссылка занимает ровно столько места в файловой системе, сколько требуется для записи её содержимого.

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

    Это по материалам Wikipedia, а если «по-русски», то все что у вас в каталоге, на который указывает ссылка, то и в целевом каталоге. Сама символьная ссылка широко используется на Linux системах, но есть возможность создать ее и в системе Windows.

    Создать ссылку можно с помощью командной строки, но гораздо-гораздо проще с помощью утилиты Link Shell Extension , которая умеет создавать требуемый тип ссылки.

    Рассматривать данный метод мы будем на примере сервиса Яндекс.Диск.

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

    Также будет создана папка Яндекс.Диск на компьютере в указанном вами месте.

    Затем скачиваем утилиту Link Shell Extension , устанавливаем ее, перезагружаем компьютер и в контекстном меню, вызываемом нажатием правой кнопки мыши, у нас появляются новая строка «Запомнить источник ссылки».

    Чтобы синхронизировать папку с «облаком», находим ее на Компьютере, нажимаем по ней правой кнопкой мыши и выбираем «Запомнить источник ссылки».

    После всего этого переходим в папку Яндекс.Диск, нажимаем правой кнопкой мыши и выбираем «Поместить как -> Символическую ссылку»