Після реєстрації та створення Яндекс Диска його можна налаштувати на свій розсуд. Розберемо основні налаштування програми.

Налаштування Яндекс Диска викликається правою кнопкою миші по значку програми в треї. Тут ми бачимо список останніх синхронізованих файлів і маленьку шестерню в правому нижньому кутку. Вона нам і потрібна. Натискаємо, у контекстному меню, що випадає, знаходимо пункт «Налаштування».

На цій вкладці налаштовується запуск програми при вході в систему і включається можливість отримання новин від Яндекс Диска. Можна також змінити розташування папки програми.

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

Змінювати розташування папки, на думку автора, особливого сенсу не має, якщо тільки Ви не хочете звільнити місце на системному диску, а саме там папка і лежить. Перенести дані можна в будь-яке місце, навіть на флешку, щоправда, у цьому випадку, при відключенні накопичувача від комп'ютера, Диск працювати перестане.

І ще один нюанс: необхідно стежити за тим, щоб буква диска при підключенні флешки відповідала вказаній в налаштуваннях, інакше програма не знайде шлях до папки.

Щодо новин від Яндекс Диска складно щось сказати, оскільки за весь час використання жодної новини не приходило.

Обліковий запис

Це більша інформативна вкладка. Тут вказано логін від облікового запису Яндекс, інформація про витрату обсягу та кнопка відключення комп'ютера від Диска.

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

Синхронізація

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

Для окремих папок синхронізацію можна вимкнути, але в цьому випадку папка буде видалена з комп'ютера і залишиться лише у хмарі. У меню налаштувань вона також буде помітна.

Яндекс Диск дозволяє автоматично імпортувати фотографії з підключеної до комп'ютера камери. При цьому програма запам'ятовує профілі налаштувань, і при наступному підключенні нічого не налаштовувати.

Кнопка "Забути пристрої"відв'язує всі камери від комп'ютера.

Скріншоти

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

Програма для виробництва скріншотів всього екрану дозволяє використовувати стандартну клавішу Prt Scr, а ось для зйомки певної області доведеться викликати скріншотилку через ярлик. Це дуже незручно, якщо потрібно зробити скріншот частини вікна, розгорнутого на весь екран (наприклад, браузера). Тут і приходять на допомогу гарячі кнопки.

Поєднання можна вибрати будь-яке, головне, щоб ці комбінації були зайняті системою.

Проксі

Про ці установки можна написати цілий трактат, тому обмежимося коротким поясненням.

Проксі сервер - сервер, через який йдуть запити клієнта до мережі. Він є своєрідним екраном між локальним комп'ютером та інтернетом. Такі сервери виконують різні функції – від шифрування трафіку до захисту ПК від атак.

У будь-якому випадку, якщо Ви користуєтеся проксі, і знаєте, навіщо він Вам потрібний, то налаштуйте все самостійно. Якщо ж ні, то він і не потрібний.

Додатково

На цій вкладці налаштовується автоматичне встановлення оновлень, швидкість з'єднання, надсилання повідомлень про помилки та повідомлення про спільні папки.

Тут все зрозуміло, розповім лише про налаштування швидкості.

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

Тепер ми знаємо, де знаходяться налаштування Яндекс Диска і що вони змінюють у програмі. Можна розпочинати роботу.

Програма може керувати лише одним диском, що належить одному певному акаунту. Якщо ви авторизуєтеся з іншим логіном, для синхронізації буде створено нову папку Яндекс.Диска з ім'ям «Яндекс.Диск – інший логін». Копію файлів попереднього облікового запису буде збережено.

Що станеться, якщо перемістити папку Яндекс.Диска?

Якщо ви перенесете папку Яндекс.Диска, не вказавши нове положення в налаштуваннях програми, програма створить папку на новому місці. Щоб перемістити копію диска, натисніть піктограму диска, виберіть у меню пункт Налаштування , натисніть кнопку Налаштувати розташування папокта вкажіть новий шлях до папки: програма автоматично перенесе файли на нове місце.

Чи можна довіряти роботу з диском стороннім програмам?

Чи можна зберігати файли, що зберігаються на диску, на своєму комп'ютері?

Програма Яндекс.Диск 3.0 дозволяє синхронізувати з комп'ютером не всі файли з диска, щоб заощадити місце на комп'ютері. Наприклад, якщо ви часто працюєте з папкою Документи , увімкніть для неї синхронізацію - ця папка зберігатиметься на комп'ютері. Інші папки зберігатимуться лише у хмарі, але будуть також доступні у програмі.

Налаштувати вибіркову синхронізацію можна за інструкцією для Windows, MacOS.

Що станеться, якщо видалю файли з папки Яндекс.Диска?

Коли ви видаляєте файли в програмі, вони потрапляють у Кошик і зберігаються у ньому 30 днів. Після цього вони автоматично видаляються із сервера. Відновити видалені з сервера файли не можна.Відновити файли з Кошика можна лише на веб-інтерфейсі Яндекс.Диска.

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

Якщо ви хочете видалити файл з комп'ютера, але зберегти на сервері, налаштуйте вибіркову синхронізацію за інструкцією для Windows, MacOS.

Чи можна обмежити доступ до папки Яндекс.Диска?

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

Що станеться, якщо я видалю програму або перевстановлю операційну систему?

Файли Диску можуть залишитися на комп'ютері, але синхронізуватися не будуть. Щоб автоматично синхронізувати файли з сервером, установіть програму та авторизуйтесь.

Як вибрати іншу папку для синхронізації із сервером?

    Натисніть кнопку Налаштувати розташування папок.

    Вкажіть іншу папку для синхронізації із сервером.

Як дізнатися скільки залишилося вільного місця на Диску?

Як настроїти програму для роботи через проксі-сервер?

    Натисніть піктограму Диска в області сповіщень.

    Виберіть пункт Установки .

    Перейдіть на вкладку Проксі.

    Виберіть пункт Налаштування проксі-сервера вручну.

Як приховати піктограму диска на панелі Dock у macOS?

    Натисніть піктограму Диска в області сповіщень.

    Виберіть пункт Установки .

    Перейдіть на вкладку Додатково.

    Увімкніть опцію Сховати значок на панелі Dock.

Збігається з даними на сервері завдяки синхронізації. Відповідно, якщо вона не працює, то втрачається сенс використання програмної версії сховища. Тому виправленням ситуації потрібно зайнятися якнайшвидше.

Спосіб вирішення проблеми залежатиме від причини її виникнення. У будь-якому випадку розібратися, чому Яндекс Диск не синхронізується, можна самостійно, не витративши багато часу.

Причина 1: Синхронізація не ввімкнена

Спочатку найочевиднішим буде перевірити, чи включена синхронізація в програмі. Для цього клацніть по значку Яндекс Диска і у верхній частині вікна дізнайтесь про її стан. Щоб увімкнути, натисніть відповідну кнопку.

Причина 2: Проблеми інтернет-з'єднання

Якщо у вікні програми Ви побачите повідомлення «Помилка з'єднання»Отже, логічно буде перевірити, чи підключений комп'ютер до Інтернету.

Щоб перевірити підключення до Інтернету, натисніть значок "Мережа". За потреби підключіться до робочої мережі.

Зверніть увагу на стан поточного підключення. Тут має бути статус "Доступ до Інтернету". В іншому випадку потрібно звертатися до провайдера, який має вирішити проблему з підключенням.

Іноді помилка може виникнути через низьку швидкість підключення до Інтернету. Тому потрібно спробувати запустити синхронізацію, відключивши інші програми, які використовують Інтернет.

Причина 3: Немає місця у сховищі

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

Для роботи синхронізації сховище потрібно очистити або розширити.

Причина 4: Синхронізація блокується антивірусом

В окремих випадках антивірусна програма може блокувати роботу синхронізації Яндекс Диска. Спробуйте ненадовго відключити її та поспостерігати результат.

Причина 5: Не синхронізуються окремі файли

Деякі файли можуть не синхронізуватися, тому що:

  • вага цих файлів занадто велика, щоб розмістити їх у сховищі;
  • ці файли використовуються іншими програмами.

У першому випадку потрібно подбати про вільне місце на диску, а в другому – позакривати всі програми, де відкрито проблемний файл.

На замітку: файли об'ємом більше 10 Гб на Яндекс Диск завантажити взагалі не можна.

Причина 6: Блокування Яндекса в Україні

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

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

Повідомлення про помилку

Якщо не один із наведених методів не допомагає, то правильно буде повідомити проблему розробникам. Для цього натисніть на значок налаштувань, наведіть курсор на пункт «Довідка»та виберіть «Повідомити в Яндекс про помилку».

Незабаром Ви отримаєте відповідь від служби підтримки з Вашої проблеми.

Для своєчасної зміни даних у сховищі має бути включена синхронізація у програмі Яндекс Диск. Для її роботи комп'ютер повинен бути підключений до Інтернету, в «хмарі» має бути достатньо місця для нових файлів, а файли не повинні бути відкриті в інших програмах. Якщо причину проблем із синхронізацією не вдалося з'ясувати, зверніться до служби підтримки Яндекса.

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

У цьому пості я розповім, чому так вийшло: чого ми не змогли передбачити, коли вигадували першу версію ПО Яндекс.Діска, і як створювали нову.

Насамперед, про завдання синхронізації. Технічно кажучи, вона полягає в тому, щоб у папці Яндекс.Диска на комп'ютері користувача та у хмарі був один і той же набір файлів. Тобто такі дії користувача, як перейменування, видалення, копіювання, додавання та зміна файлів повинні синхронізуватися з хмарою автоматично.

Чому це не так просто, як здається на перший погляд?

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

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

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

Попередня версія алгоритму

У минулій версії десктопного програмного забезпечення Яндекс.Диска для пошуку змін використовувався алгоритм порівняння дерев. Будь-яке інше рішення на той момент не дозволяло реалізувати пошук переміщень та перейменувань, оскільки бекенд не мав унікальних ідентифікаторів об'єктів.

У цій версії алгоритму ми використовували три основні дерева: локальне (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 порівнюються. Так як вони збігаються, додається стабільний стан;
  4. Стан local і remote видаляються. Вони більше не потрібні, тому що вся інформація є у stable.


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

Інші покращення

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

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

Цифри

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

Обчислення дайджестів унікальних 20 000 файлів по 10кб (індексація)

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

Upload 1Gb. З'єднання Wi-Fi 10 Мбіт
Час, сік

Що вийшло

З прикладів видно, що нова версія Яндекс.Диска використовує приблизно в 3 рази менше оперативної пам'яті і приблизно в 2 рази менше навантажує CPU. Обробка дрібних змін не призводить до збільшення обсягу пам'яті, що використовується.

В результаті виконаних змін суттєво збільшилася кількість файлів, з якими без проблем справляється програма. У версії для Windows – 300 000, а на Mac OS X – 900 000 файлів.