Bt-teh.ru

БТ Тех
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

На arm64

Яндекс.Диск на arm64

Существует ли в природе данный пакет? На оф. сайте только i386 и amd64.

Яндекс Диск и Webdav

Яндекс.диск, подключенный в Caja через webdavs, никогда не отличался реактивностью, но в последнюю неделю аплоад стал в районе десятка кб/с. Это там что-то сломали или в Caja что-то сломали, или в руках дело? Кто-нибудь пользуется WebDav?

По https все работает как положено, шустро.

Хранение, сбор, обработка в Яндекс.Диске

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

База не большая, не больше 10ГБ.

Барахлит gnome-online-accounts

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

Копирование файлов с одного сетевого диска на другой

Допустим, есть VPSка, к которой примонтированы разные удаленные файловые системы, находящиеся в разных странах: с помощью sshfs или smb или еще каким-нибудь путем (возможно, нетрадиционным). Если я начну копирование файлов с одного сетевого диска на другой, каким маршрутом пойдем трафик: через эту VPSку или напрямую?
Конкретный пример. На VPSке примонтирован через sshfs удаленный жесткий диск (Hetzner storage box). Я хочу скопировать файлы, находящиеся там, на Яндекс диск с помощью программы rclone (что-то вроде rsync, но специально заточенная на работу с облачными хранилищами и использующая не WebDAV, а что-то свое, возможно, API Яндекса). Будет ли трафик проходить через VPS между ними или нет?

WebDav Yandex.Disk просит пароль.

Как сделать так, чтобы при открытии папки Яндекс диска с WebDav не просился пароль. ФМ — Dolphin

Яндекс Диск. У вас скачивается оттуда сейчас?

Не получается ничего скачать. Ошибка: Unable to download file. Please try again later.

(Вчера работало норм).

Совет про бэкап

Есть три сервера на CENTOS7, надо с них бэкапить , есть яндекс диск, возможно ли в разные папки как то смонтировать?

Может какие то другие есть варианты ,бэкапить надо примерно 30 гб вместе.

Объясните нубу про шифрование в связке с облаком

Есть каталог, который через утилиту yandex-disk синхронизируется с Яндекс-Диском. Вопрос: если я этот каталог зашифрую с помощью кдешного Vault (это фронтенд к EncFS/CryFS), то на Я.Диск будут синкаться зашифрованные данные? И сможет ли утилита yandex-disk читать каталог и его содержимое после шифровки?

И да, какой бэкенд лучше выбрать — CryFS или EncFS?

Максимальный размер файла на Яндекс.Диске

В документации указано, что через webdav или официальное приложение можно загрузить максимум 50 Гб. Но на заборе тоже написано, как известно.

По факту я ни разу даже не догружал и 10 гигов (грузил и через cadaver и transmit — одна херня) — соединение тупо разваливалось по таймауту.

Тех. поддержка сообщила, что УМВР.

Есть ли истории успеха?

Яндекс диск и внешний винт

Я на телефон фотаю всякий кал, который попадается по жизни, туалетные сеэлфи, как голуби доедают собачий труп, вобщем всё, чем полна моя светлая жизнь. Чтобы не прокакать фоточки вместе с телефоном, они по воздуху улетают в несколько хранилищ. Одно из таких хранилищ — яндекс диск. Пока всё хорошо. Дальше начинаются проблемы. Дело в том, что система у меня стоит на SSD не шибко великого размера, а всякие фоточки я компьлю на внешнем трёхтерабайтнике, подключённом по юсб 3. Проблема по-видимому в том, что демон яндекс диска запускается раньше, чем подключается винт. В результате демон не видит винта, ругается матом и отваливается. Далее мне выскакивает диалоговое окошко с предложением прописать правильный путь для синхронизации. Но он и так правильный и к этому моменту уже существует. Если теперь ручками стартонуть демон ещё раз, то всё пойдёт нормуль. Как это можно починить?

Яндекс диск и халявное музло

И так: есть яндекс диск, есть 100500 флаков из трекеров на хдд, их хочу забэкапить на яндекс.
Раньше я лил их в архив под пассом и тогда уже грузил на яндекс.
Теперь надоело мучить хард бэкапами и хочется лить файло в открытом виде.
Вопрос — если яндексоиды посчитают фалы пиратскими — то что будет?
Я расшаривать их не собираюсь.
Акк на псевдоним.
Блочат ли они такое или яндексоидам пофиг?
Кто хранит скачанные из инета файлы на яндекс диске — отзовитесь!

Яндекс Диск

Всех с первомаем!

У меня проблемы с яндекс диском под ubuntu Я его поставил, чтобы можно было его архивировать (мало ли что)) Написал скрипт, который прекрасно отрабатывает при запуске из консоли, но из крона не запускается:

yandex-disk start -c $DCONF >> $LOGFILE

yandex-disk sync -c $DCONF >> $LOGFILE

при запуске из крона в лог пишет следующее:

Ошибка: демон уже запущен с другими настройками

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

Может кто-нибудь сталкивался с чем-либо подобным?

Яндекс диск требует firefox

Кто там с тындекса? Почему при заходе на Диск мне предлагают скачать файрфокс? (у меня firefox 45.2)

Облачков тред: Mega, Mail.ru и Яндекс.Диск

Собственно мучаюсь выбором облачка. ОСь — онтопик соответственно. Понравилась Mega. Она всем хороша, однако ценник там в валюте и совсем не деревянной, т.е. дорого. Бесплатно они конечно дают 50 гигов, а это большущий +. Однако у них множество вариантов ограничений по трафику (и в тарифах тоже). Т.е. я файлик на 8 гигов выложил, а скачать его не возможно по сути другому юзеру т.к. «превышен суточный трафик» и т.п. Шифрование и open source это конечно меня в ней очень привлекает, но дорогой тарифный план слишком дорог.
У ненавистного многими Mail.ru говорят есть клиенты под все ОСи и работает без ограничений на трафик. Ценник средненький (мягко говоря).
Яндекс очень привлекателен ценником, но с клиентами там не так хорошо как у мэйл.сру и меги. Да и вообще Яндекс и Мэйл.ру те еще конторки.
Рад буду почитать ваши комментарии дабы определиться с сервисом.

Yandex.Disk через WebDav — разрывы соединения

«Вы не овечаете на мой ответ!» (с) самизнаетекто

Использую библу easywebdav. До какого-то недавнего времени работало все хорошо. Сейчас начинаю наращивать функционал бекапера и ловлю ошибки «ваш хост разорвал соединение», «соединение разорвано по причине удаленного хоста» и подобные. Ловятся эксепшены requests.exceptions.ConnectionError.

Кто-нибудь разбирался? Почему такое происходит? Думал-было, что я лимит в 2 гига невзначай превысил, ан нет — по 600Мб файлики лью.

Что, выходит, зря мы 2Тб купили?

Чем шифровать бэкап на yandex disk?

Буду использовать yandex disk для хранения информации. Часть файлов хочу зашифровать. Чем это сделать? Чтобы можно было расшифровать в windows при необходимости.

Несколько каталогов в Yandex.Disk

Сейчас у меня через утилиту yandex-disk синхронизирован каталог с рабочими материалами. Теперь мне нужно синхронизировать ещё каталог с музыкой через другой аккаунт Яндекса. Эту их утилиту можно настроить на работу с двумя каталогами и двумя аккаунтами? Или, может, можно как-то запустить две копии утилиты?

mount: Could not resolve hostname `webdav.yandex.ru’

Добрый день. Пытаюсь подключить яндекс.диск к своей малинке. делал по статье https://habrahabr.ru/sandbox/70446/ (п.1).

Тем не менее при загрузке диск не монтируется, в syslog строки:

OS: Debian jessie

Малинка получает адрес по dhcp, есть подозрение, что она, подняв eth0 и не успев получить адрес, пытается смонтировать я.диск. как можно исправить? пробовал костыль в виде добавление адреса яндекса в файл hosts — не помогло, да и не хотелось бы решать проблему так.

Читать еще:  Как синхронизировать нетбук с компьютером

P.s. А что сделали с rc.local? чтобы я туда не добавил, он не срабатывает, в логах

Помогите пожалуйста настроить яндекс синхронизацию

Здравствуйте, У меня ситуация такая: Система Linux Mint 17.3 «Rosa» Mate. Установил его на ссд диск. Параллельно стоит в ноутбуке винчестер на 700 гигов. Установил Yandex-Disk командой sudo apt-get install yandex-disk. Настроил через консоль, вот что получилось в config файле: auth=«/home/leonid/.config/yandex-disk/passwd» dir=«/media/leonid/D/Яндекс Диск» proxy=«no»

После запуска демона (вернее при завершении настройки) демон яндекс диска запускается. Подключается и на команду yandex-disk status выводит данные, что получает данные или что-то такое.

Затем спустя минут 5 он начинает в созданную папку копировать папки и файлы. Но затем просто зависает. На команду status ничего не происходит. После зависания не могу ни запустить вновь демон яндекса. При перезагрузке, демон не перезапускается. Я новичёк в линуксе, это моя 5-я попытка пересесть на линукс, очень хочется, о всегда сталкивался с чем-то что решить не мог.

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

Не работает Яндекс.Диск: вероятные причины, простые способы решения проблемы и рекомендации специалистов

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

Почему не работает «Яндекс.Диск»: самые распространенные ситуации

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

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

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

Устранение проблем с синхронизацией

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

Отключенная синхронизация с хранилищем

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

Проверка доступа к интернету

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

Повторное включение доступа в интернет

Первым делом попробуйте просто отключиться от Сети, а затем выполнить подключение заново. Для устранения аналогичной проблемы при использовании беспроводной связи на основе Wi-Fi такой подход может не сработать, поэтому желательно выполнить полное отключение маршрутизатора (роутера или модема) от электросети, выдержать паузу примерно в 10-15 секунд, включить устройство, дождаться его полной загрузки и проверить синхронизацию снова. Такие действия позволяют выполнить сброс настроек маршрутизатора и иногда оказываются весьма эффективными.

Проверка места в хранилище

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

Проверка свободного места в хранилище

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

Блокировка со стороны защитного ПО

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

Временное отключение антивируса

Для начала просто выполните отключение антивируса, установив минимальный промежуток времени, и попытайтесь войти в хранилище. Если вход окажется возможным, внесите апплет в список исключений. То же самое касается и настроек встроенного в Windows брандмауэра, который может не разрешать использование интернет-соединения этой службой. Кроме того, в том же брандмауэре, исходя из советов специалистов компании «Яндекс», неплохо бы проверить состояние портов 443 и 5222.

Создание правила для портов

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

Примечание: иногда проброс портов нужно будет выполнить не в файрволе, а непосредственно на роутере.

Что делать, если не синхронизируются отдельные файлы?

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

Перестал работать «Яндекс.Диск» в Украине: как обойти блокировку?

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

программ изменения внешнего IP-адреса

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

Что предпринять, если ничего не помогло

Устранить рассматриваемую нами проблему («Яндекс.Диск» не работает) в Windows 10 можно за счет поиска папки сервиса в системном разделе среди установленных программ путем создания для сервиса нового ярлыка и помещения его с заменой в каталог текущего пользователя. Но саму пользовательскую директорию нужно искать на диске «С» в папке Users.

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

Яндекс.Диск — использование облачного хранилища в Linux

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

Читать еще:  Как skype синхронизирует сообщения

Загрузка и установка пакета Яндекс.Диск

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

Утилита является бесплатной и, как указывают сами разработчики, написана на языке C++ в IDE Kdevelop. Распространяется Яндекс.Диск в виде пакетов *.deb и *.rpm, которые можно скачать и установить как вручную (используя менеджер пакетов apt например), так и при помощи системы управления пакетами используемой ОС.

Для Debian-ориентированной системы для установки Яндекс.Диск через систему управления пакетами (СУП) нужно выполнить следующие команды:

В результате в системный репозиторий будет добавлен новый источник «deb http://repo.yandex.ru/yandex-disk/deb/ stable main» со стабильными сборками Яндекс.Диск, из которого будет производиться установка и последующие обновления утилиты.

Для RPM-ориентированных систем порядок установки с помощью СУП несколько иной. Нужно для начала вручную создать и отредактировать файл источника для добавления его в системный репозиторий:

Запустится текстовый редактор nano (который сразу создаст файл yandex.repo по указанному пути), в котором нужно ввести следующее содержимое:

Далее, сохранить сделанные изменения, нажав сочетание клавиш , подтвердить сохранение (Enter), закрыть редактор nano (Ctrl + X) и выполнить следующие команды:

Все эти действия выполняются и при использовании пакетных менеджеров, если сначала вручную скачать пакеты Яндекс.Диска через веб-браузер (или утилиту wget), например для deb-пакетов:

Сами пакеты для нужных платформ и под соответствующую архитектуру можно скачать по адресу: https://disk.yandex.ru/download#pc.

Также может потребоваться импортировать с помощью wget открытые GPG-ключи для проверки цифровой подписи пакетов, если это по какой-либо причине не произошло автоматически при использовании СУП или менеджера пакетов. Для Debian:

Управление демоном из командной оболочки

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

  • программа должна быть очень (насколько это возможно) небольшой;
  • программа должна выполнять только одну простую задачу, но выполнять её хорошо;
  • программа должна легко взаимодействовать с другими программами.

Утилита Яндекс.Диск, как уже говорилось, работает как демон (в хорошем смысле…), а потому основной метод управления ею — это дискретные команды с соответствующими опциями и параметрами. Эти команды могут выполняться как непосредственно пользователем в командной оболочке, так и другими программами, которые могут быть графическими оболочками для демона Яндекс.Диска, как в виде оконных приложений, так и в виде виджетов и/или апплетов рабочего стола. Некоторые достойные реализации (YD-tools, Yandex.Disk ServiceMenu) графического пользовательского интерфейса (GUI) давно существуют.

Для управления клиентом Яндекс.Диск предназначена команда yandex-disk, её общий синтаксис следующий:

Внутренними командами утилиты yandex-disk являются команды управления демоном синхронизации, а также команды его настройки, которые приведены в следующей таблице:

<td «>Начальное конфигурирование демона.

КомандаНазначение
startЗапускает как демон и начинает синхронизацию каталога. В файл «.sync/status» каталога синхронизации записывается текущий статус синхронизации.
stopОстанавливает демон.
statusВыводит статус демона: статус синхронизации, ошибки, последние синхронизированные файлы, состояние дискового пространства.
tokenПолучает OAuth-токен, шифрует и сохраняет его в специальном файле (по умочанию — /.config/yandex-disk/passwd). Если не указаны опции -p PASSWORD или —password PASSWORD, то выводит приглашение ввести пароль из STDIN.
syncСинхронизирует каталог и завершение работы (если демон запущен, дождается окончания синхронизации). Требуется для ручной синхронизации по требованию.
publishДелает файл/каталог публичным и выводит ссылку в STDOUT. Сам объект будет скопирован в синхронизируемый каталог. Для перезаписи существующих объектов следует использовать опцию —overwrite.
unpublishУдаляет публичный доступ к файлу/каталогу.
setupНачальное конфигурирование демона.

Начальное конфигурирование демона.

Соответственно, сами эти команды могут выполняться в следующем виде:

В следующей таблице приводится описание всех доступных для yandex-disk опций:

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

Первое, что необходимо выполнить в командной строке, после установки утилиты Яндекс.Диск — это запустить начальную настройку её демона с помощью команды:

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

В приведённом примере производится настройка демона синхронизации для учетной записи mylogin без задействования прокси-сервера. Каталогом для синхронизации в данном случае является каталог Disk на отдельном разделе (или устройстве) Yandex.Disk.

Интеграция с файловым менеджером

Поскольку сервис Яндекс.Диск поддерживает работу по протоколу WebDAV, то синхронизацию легко настроить для приложений, которые поддерживают эту технологию. В Linux таковыми являются например файловые менеджеры Dolphin (для среды KDE), а также Nautilus – для среды GNOME.

Сама настройка файлового менеджера для работы через WebDAV совсем несложна и на примере Dolphin выглядит следующим образом:

  • Для начала в адресной строке файлового менеджера нужно перейти по адресу webdavs://webdav.yandex.ru.
  • Далее, в появившемся диалоговом окне требуется ввести имя пользователя и пароль для доступа к облачному хранилищу.
  • После успешной авторизации Dolphin отобразит содержимое облачного хранилища, как-будто это локальный каталог.
  • По желанию можно добавить данный адрес в список точек «быстрого входа» в Dolphin, чтобы каждый раз не вводить адрес вручную.

Как можно видеть, благодаря грамотной реализации для Linux-систем и поддержке современных технологий для работы и защиты данных в удалённых хранилищах, утилита Яндекс.Диск легко и гибко способна организовать синхронизацию файлов. Для системных администраторов она примечательна ещё и тем, что полностью соответствует принципам администрирования UNIX/Linux систем. И если в это позволяет политика и регламент безопасности сети организации, то утилита Яндекс.Диск — это отличный вариант предоставить пользователям инструмент для синхронизации их данных с облаком.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

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

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

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

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

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

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

Читать еще:  Htc синхронизировать контакт с gmail

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

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

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

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

В этой версии алгоритма мы использовали три основных дерева: локальное (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Кб

Версия ПОЗагрузка на 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 файлов.

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