Как Облако@mail. ru спасло все* мои файлы и что из этого вышло / Хабрахабр. Однажды я увидел этот баннер и решил, что бесплатный терабайт мне совсем не помешает, тем более, что мой архив фотографий и документов как раз лежал на терабайтном винчестере. Признаюсь, я очень опасался ставить на компьютер программу с логотипом mail. Я зарегистрировался, получил место, установил клиент, настроил его и забыл. А несколько месяцев назад произошло неизбежное — мой жёсткий диск с архивом приказал долго жить.
После авторизации окно приложения Cloud@ mail. Через pgrep можно посмотреть pid процесса. Первым делом перейдем по адресу - https://cloud. При запросе https://cloud.
К счастью, к тому времени все файлы были скопированы в облако и ничего не потерялось. В конце статьи есть UPD, UPD2, UPD3 и UPD4, в котором описаны причины такого поведения. TL; DR: ложная тревога, с файлами и синхронизацией всё в порядке, а вот пользовательский интерфейс и работу тех. Но спустя пару минут я увидел, что на диске ничего не появилось, а вот из Облака файлы стремительно удаляются.
Обратите внимание, что синхронизация Облака с любым из ваших устройств кнопкой мыши значок Облака и перейдите в раздел «Выбрать папки». Загруженные в Облако @ mail. Вы поставили облачную услугу mail. Переходим по ссылке: https://cloud. 1 Получить 25 Гигабайт на Облаке Майл ру бесплатно.
Запили распространение через пакеты: https://help.
![Иконку Облако Mail.Ru Иконку Облако Mail.Ru](http://www.softportal.com/scr/35673/oblako-mailru-big-3.png)
Как выяснилось после общения с тех. Файлы там можно скачивать по одному, а можно выбрать несколько файлов или папок и скачать их одним архивом, что довольно удобно. Единственное ограничение — архив не может превышать 4. Гб. Я попробовал пойти этим путём, но быстро понял, что это очень неудобный вариант: Ограничение в 4 гигабайта означает, что если у вас в облаке находится около терабайта, придётся качать как минимум 2.
Каждый архив нужно создавать вручную, выбирая папки, считая их суммарный размер и помечая те, что уже скачаны. Иногда архивы не открываются по неизвестной причине.
Теряется структура папок. Ну и получить удовольствие от решения задачи, разумеется. Первым делом нужно понять, как получить список папок и файлов.
Изначально я планировал просто парсить страницы, выдирать с них информацию о папках и файлах и строить дерево. Но, открыв исходный код страницы, я сразу же увидел, что весь интерфейс работы с документами строится через javascript, что, если подумать, весьма логично. Поэтому, у меня появилось два возможных варианта решения: подключить.
Selenium и всё- таки строить дерево из html или разобраться с внутренним API, которое используется в скрипте. Я выбрал второй путь, как самый разумный — зачем что- то парсить с использованием сторонних инструментов, если уже есть готовое API? К счастью, скрипт не был обфусцирован и даже не сжат — мне были доступны исходные имена переменных и функций и комментарии разработчиков, это сильно облегчило задачу.
После нескольких минут изучения я увидел, что все доступные методы API описаны в массиве: Вот поэтому я и не трачу в своём коде времени на красивое форматирование — кто- нибудь его обязательно поломает. Я рассудил, что для получения списка папок и файлов в директории нужно вызывать метод folder. Для этого нужно отправить get- запрос на адрес https: //cloud. Открываем страницу в браузере и видим такой ответ.
Авторизуюсь, повторяю запрос и вижу другую ошибку. В списке методов есть два подходящих: tokens/csrf и tokens/download. При запросе https: //cloud. Запрашиваем его, добавляем в вызов метода folder параметр ?
![Скачать Иконку Облако Mail.ru Скачать Иконку Облако Mail.ru](http://bobr.by/data/internet145sm.png)
X9cc. JNw. Yeow. QTak. ZC1y. GHs. Wzb. 7q. Tp. P и получаем новую ошибку. Оказалось, что нужно указать папку, содержимое которой мы хотим получить в параметре home. Итак, в ответ на запрос по url https: //cloud.
X9cc. JNw. Yeow. QTak. ZC1y. GHs. Wzb. 7q. Tp. P& home=/ возвращается вот такой объект. Я решил писать консольное приложение на php, поскольку хорошо знаю этот язык. Для этой задачи идеально подходит компонент Console из состава Symfony. Я уже писал консольные команды для Laravel, которые построены как раз на этом компоненте, но там уровень абстракции довольно высок и напрямую с ним я не работал, поэтому решил, что настало время познакомиться поближе.
Не буду пересказывать документацию, она довольно подробная и очень простая. Ничего не зная о компоненте, за несколько часов я написал вот такие нехитрые интерфейсы: Так выглядит приложение в процессе скачивания файлов. А вот так по завершении: показывается небольшая табличка (максимум 1. Никакой практической пользы она не несёт и сделана исключительно в образовательных целях. В состав консольного приложения может входить несколько команд, вызываемых следующим образом: php app.
Но для моих целей нужна всего одна команда и я хотел бы запускать скачивание так: php app. Этого легко добиться при помощи инструкции из документации компонента. Итак, консольное приложение готово, оно выводит информацию из заранее заготовленных фикстур и даже покрыто тестами. Самое время реализовать непосредственно получение информации о файлах и папках из облака. Здесь я тоже не стал изобретать велосипед и воспользовался прекрасной библиотекой Guzzle.
С её помощью очень удобно отправлять http запросы, при этом она использует интерфейсы PSR- 7. При авторизации с главной страницы mail. Login и Password. Вот так выглядит метод авторизации в моём приложении/**. Invalid. Credentials. Но я ящиком не пользуюсь, поэтому для моих целей этого достаточно.
Очень похоже на проблему с куками и действительно, оказывается, в Guzzle они по- умолчанию выключены и их нужно включать руками. Проще всего это сделать один раз при инициализации клиента: $client = new \Guzzle. Http\Client(. Ну а дальше дело техники — запрашивать содержимое корневой папки и рекурсивно содержимое её подпапок, и дерево готово.
Как оказалось, дерево в итоге даже не понадобилось — каждый файл хранит полный путь от корня, поэтому для скачивания достаточно плоского списка. Механизм скачивания немного хитрый: нужно сначала запросить рекомендуемый шард (что- то похожее на https: //cloclo. Учитывая, что адреса шардов отличаются только цифрой, думаю, можно было бы не заморачиваться и захардкодить адрес, но если уж делать, то делать до конца! Для получения массива шардов нужно выполнить метод dispatcher (https: //cloud.
X9cc. JNw. Yeow. QTak. ZC1y. GHs. Wzb. 7q. Tp. P). Хочу выразить- таки спасибо Mail. Амиго», а во- вторых, за то, что спасли меня от потери всего домашнего архива (даже не уверен, что из этого важнее).
Но всё же, от греха подальше, я решил переехать в облако другой компании: 2. Все, которые не успело сначала удалить.
UPD: Общение с тех. Старый диск сломался, поэтому перенести данные с него нет возможности. В веб- интерфейсе все мои данные на месте.
Когда я создал пустую папку на новом диске и настроил её в приложении, при синхронизации начали удаляться файлы в облаке. Как мне настроить приложение на компьютере, чтобы оно считало основной копией веб, а не пустую папку — то есть начало бы скачивать файлы на компьютер, а не удалять их в облаке. Пробовал скачивать файлы через браузер, но это нереально — их очень много.
Здравствуйте. К сожалению, восстановить удалённые одновременно и в Облаке, и на ПК файлынельзя. По умолчанию между web- интерфейсом и приложением на компьютереосуществляется полная двусторонняя синхронизация — если вы удаляете файл из. Облака в web- интерфейсе, то файл удаляется и в приложении, так же инаоборот: удаляя файл в приложении, вы удаляете файл и в Облаке.
Вы можете настроить выборочную синхронизацию в ПК- клиенте Облака. Для этогокликните на иконке Облака (в системном трее) правой кнопкой мыши иперейдите в раздел «Выбрать папки». В открывшемся окне снимите галочки напротив тех папок, синхронизацию длякоторых вы хотите отменить и нажмите «Выбрать». Если ранее папка была синхронизирована, то она будет удалена с вашегокомпьютера, но в web- интерфейсе Облака папка, а также все содержащиеся вней файлы, сохранятся.
Чтобы вновь включить синхронизацию для удаленной ранее папки, кликните наиконку приложения Облака правой кнопкой мыши, нажмите «Выбрать папки» иустановите галочку напротив имени необходимой папки. Вы также можете временно отключить синхронизацию. Для этого кликните наиконку приложения Облака правой кнопкой мыши и выберите «Приостановитьсинхронизацию». Подробнее о синхронизации Вы можете прочитать в системе Помощиhelp.
Я купил новый HDD и хочу эти файлы на него скачать. Но когда я создал на нем пустую папку и указал её в приложении, вместо скачивания файлов из облака на компьютер, файлы начали удаляться из облака. Как мне запустить процесс в обратном направлении — скачать всё из облака на компьютер, не используя веб- интерфейс.
Если это невозможно сделать через приложение, есть ли какие- то альтернативные инструменты? Web. Dav, как я понимаю, еще не реализован? Здравствуйте. На текущий момент данная функциональность отсутствует. Ваше замечание передано разработчикам. UPD2: Проблема до сих пор воспроизводится, представители Облака@mail. Добавил видеопример: youtu.
TF9. UCd. N2. S8. Прошу прощения за вотермарки и общее качество, просто proof of concept. UPD3: На ноутбук, где до этого облачный клиент никогда не стоял, скачал последнюю версию с официального сайта, установил, запустил. При выборе существующей папки история повторяется: файлы вместо скачивания начинают удаляться. Попробовал не создавать папку — аналогично. UPD4: Bulldozavr написал, что, похоже, это удаляются системные файлы Thumbs. Я запустил синхронизацию и не стал её останавливать — действительно, периодически в статусе было видно такие файлы (но из- за того, что ширина контекстного меню ограничена, а доступного файла лога нет, пользователю убедиться, что удаляются только эти файлы невозможно).
Спустя пару минут все системные файлы, судя по всему, удалились и началась закачка из облака на компьютер, как и должно быть. Вердикт следующий: синхронизация работает нормально, хоть и пугает поначалу пользователя удалением файлов из облака; тех.