среда, 15 ноября 2017 г.

Возможность запуска клиента синхронизации MEGA с несколькими учётными записями

Как одним клиентом синхронизации MEGA работать с несколькими аккаунтами независимо друг от друга

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

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

Описываемое ниже было реализовано в Linux Mint 18.2 c DE xfce и в Windows 7, для которых и даётся подробное описание.


Создание настроек для каждой из учётных записей MEGA

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

1. Определить местоположение настроек облачного клиента MEGA.
2. Перенастроить синхронизацию, если в этом имеется необходимость.
3. Создать места хранения различных конфигураций клиентов MEGA.

Обратимся к своему облаку MEGA по веб-браузеру. Найдите слева вертикальную полосу чёрного цвета и, щёлкнув по значку шестерёнки, перейдите в раздел "Продвинутые".



В левом верхнем горизонтальном меню кликните по ссылке "Управление файлами" и отметьте поле "Оставить зашифрованные метаданные сохранёнными локально для быстрого входа в систему при последующих сессиях".


Для Linux

Зашифрованные метаданные в Linux расположены по адресу:

/home/user/.local/share/data/Mega Limited/MEGAsync – где под user следует понимать Ваш домашний каталог.

Чтобы увидеть их в файловом менеджере включите в нём показ скрытых файлов.


Для Windows

Зашифрованные метаданные в Windows расположены по адресу:

C:\Users\User\AppData\Local\Mega Limited\MEGAsync – где под User следует понимать папку профиля пользователя Windows. Запустите Проводник и обратитесь к папке "Пользователи". Для отображения всех элементов папки Вам придётся в свойствах папки включить отображение скрытых файлов и папок (Панель управления – Параметры папок).




Если это необходимо, то перенастройте синхронизацию клиента MEGA со своими каталогами.

Linux

Например, если у меня происходила синхронизация определённой папки облака MEGA с каталогом /home/user/Clouds/Mega/, то на этом этапе мной было определено, что синхронизация будет производиться с каталогом /home/user/Clouds/Mega/Mega-1, а другая учётная запись будет иметь в настройках синхронизацию с каталогом  /home/user/Clouds/Mega/Mega-2.

Windows

Например, на этом этапе мной было определено, что синхронизация будет производиться с папкой C:\Data\Mega1, а другая учётная запись будет иметь в настройках синхронизацию с папкой C:\Data\Mega2.

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


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

Linux

Например, мной определено, что эти данные будут располагаться в:
/home/user/Tools/MEGA1 и /home/user/Tools/MEGA2. У себя сделайте там, где Вам это будет удобно.

Windows

Например, мной определено, что эти данные будут располагаться в:
C:\Users\spinner\MegaConfig\Mega1 и C:\Users\spinner\MegaConfig\Mega2. У себя сделайте там, где Вам это будет удобно.

Так как мной уже сохранена конфигурация условно говоря первой учётной записи, то удаляю каталог MEGAsync и мой каталог в Linux
/home/user/.local/share/data/Mega Limited будет пустым.

В Windows папка MEGAsync удаляется в папке (не забудьте, что папка AppData является скрытой) C:\Users\User\AppData\Local\Mega Limited – где под User следует понимать папку профиля пользователя Windows.

Запускаю клиент MEGA. Так как какие-либо данные для входа в систему отсутствуют, то мне предлагается настроить учётную запись.



Если Вы отследите изменения в содержании каталога
 /home/user/.local/share/data/Mega Limited, то заметите, что в нём будет автоматически создан каталог MEGAsync с содержанием:


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


Так как для второй учётной записи мной определено, что синхронизация папки облака MEGAsync будет производиться с каталогом
/home/user/Clouds/Mega/Mega-2, то справа от строки "Локальная папка" нажимаю кнопку "Изменить" и указываю свой путь.

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

Снимаю галочку в поле "Запускать при старте":


Осуществляю "Выход" из синхронизации MEGA. Не выключая отображение скрытых файлов копирую каталог MEGAsync в созданный мной каталог /home/user/Tools/MEGA2.

Для Windows действия, аналогичные тем, которые Вы осуществили для сохранения конфигурации клиента 1. К примеру, конфигурация для запуска клиента с первой учётной записью будет храниться в папке C:\Users\spinner\MegaConfig\Mega1. Для второго клиента это будет, соответственно, папка C:\Users\spinner\MegaConfig\Mega2.

Примечание. После обновления состоявшегося на днях обновления ПО клиента MEGA в настройках будет расположен каталог (папка) avatars, содержащий изображение, которое сопоставлено учётной записи (осуществляется через веб-браузер в настройках, раздел "Аккаунт").

Всё. Конфигурации для первого и второго клиента настроены и сохранены.


Запуск клиента с необходимой учётной записью MEGA

Linux

Теперь пишу скрипт sh, который будет содержать последовательность необходимых мне команд для запуска клиента с первой учётной записью. Скрипт пишется в текстовом редакторе и начинается со строк

#!/bin/bash
#

Указываю команды, которые должны быть выполнены.

Удалить каталог MEGAsync в home/user/.local/share/data/Mega Limited со всеми файлами:

rm -R "/home/user/.local/share/data/Mega Limited/MEGAsync"

При указании путей с пробелами (Mega Limited) путь пишется в двойных или одинарных кавычках.

Скопировать конфигурацию первой учётной записи на место удалённого каталога MEGAsync:

cp -R /home/user/Tools/MEGA1/MEGAsync "/home/user/.local/share/data/Mega Limited/MEGAsync"

Запустить клиент – команда megasync.

После завершения работы клиента удалить сохранённую ранее конфигурацию первого клиента (откуда она была скопирована):

rm -R /home/user/Tools/MEGA1/MEGAsync 

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

Несмотря на то, что отображаемая ниже команда воспринимается как 2 строчки, на самом деле это команда в одну строку, так как между ... MEGAsync" и /home/user ... имеется знак пробела:

cp -R "/home/user/.local/share/data/Mega Limited/MEGAsync" /home/user/Tools/MEGA1/MEGAsync

Так как для копирования конфигурации завершившего работу клиента необходимо какое-то время, то вывожу напоминание, которое автоматически исчезнет через 10 секунд (timeout=10), так как мне будет "лениво" каждый раз нажимать кнопку OK.


Время автоматического закрытия этого окна в секундах (timeout=10) можно установить и меньше, также на эту же разницу изменив в тексте сообщения "20-30 секунд". Это окно несёт исключительно информационный характер для напоминания, чтобы Вы не запускали сразу же клиент с настройками другой учётной записи, так как конфигурация предыдущей не успеет скопироваться. Итого, команда имеет вид:

zenity --info --text "Запуск другой конфигурации MEGA\nосуществляйте только через 20-30 секунд." 2>/dev/null --timeout=10

Примечание. Символы \n указывают следующему за ними символу отображаться с новой строки.

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

#!/bin/bash
#
rm -R "/home/user/.local/share/data/Mega Limited/MEGAsync"
cp -R /home/user/Tools/MEGA1/MEGAsync "/home/user/.local/share/data/Mega Limited/MEGAsync"
megasync
zenity --info --text "Запуск другой конфигурации MEGA\nосуществляйте только через 20-30 секунд." 2>/dev/null --timeout=5
rm -R /home/user/Tools/MEGA1/MEGAsync
cp  -R "/home/user/.local/share/data/Mega Limited/MEGAsync" /home/user/Tools/MEGA1/MEGAsync

Сохраняю указанный выше текст как файл с расширением sh, например, Mega1.sh и отмечаю его как исполняемый (в свойствах файла секция "Права"):


Аналогичным образом создаю скрипт Mega2.sh для запуска клиента со второй конфигурацией:

#!/bin/bash
#
rm -R "/home/user/.local/share/data/Mega Limited/MEGAsync"
cp -R /home/user/Tools/MEGA2/MEGAsync "/home/user/.local/share/data/Mega Limited/MEGAsync"
megasync
zenity --info --text "Запуск другой конфигурации MEGA\nосуществляйте только через 20-30 секунд." 2>/dev/null --timeout=5
rm -R /home/user/Tools/MEGA2/MEGAsync
cp  -R "/home/user/.local/share/data/Mega Limited/MEGAsync" /home/user/Tools/MEGA2/MEGAsync

Если вместо информационного сообщения по центру экрана Вы предпочитаете видеть вплывающие системные уведомления (оповещения), то вместо строки

zenity --info --text "Текст сообщения." 2>/dev/null --timeout=5

используйте строку  notify-send -i info "Текст сообщения."

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

sudo apt install libnotify-bin



Windows

Пользователям Windows придётся написать подобную последовательность команд с использованием либо файлов bat, либо js, vbs и т. п.

Ниже приводятся примеры bat файлов, содержащих необходимые команды. Так как в указании пути имеются пробелы, то он пишется в кавычках. Действия осуществляются под пользователем системы, учётная запись которого – spinner. В Вашем случае это будете Вы.

Полное удаление папки настроек клиента MEGA со всем содержимым:

rd "C:\Users\spinner\AppData\Local\Mega Limited\MEGAsync" /s /q

Создание пустой папки настроек MEGA:

md "C:\Users\spinner\AppData\Local\Mega Limited\MEGAsync"

Копирование настроек выбранной учётной записи для клиента MEGA со всем содержимым в папку настроек клиента (команда пишется в одну строку, обратите внимание на пробел – \MEGAsync "C:\Users):

Xcopy C:\Users\spinner\MegaConfig\Mega1\MEGAsync "C:\Users\spinner\AppData\Local\Mega Limited\MEGAsync\" /s /e

Запуск клиента MEGA:

C:\Users\spinner\AppData\Local\MEGAsync\MEGAsync.exe

Удалить ранее сохранённую пользовательскую конфигурацию клиента:

rd C:\Users\spinner\MegaConfig\Mega1\MEGAsync /s /q

Создать папку для записи в неё сохраняемой пользовательской конфигурации клиента:

md C:\Users\spinner\MegaConfig\Mega1\MEGAsync

Скопировать в созданную папку сохраняемую пользовательскую конфигурацию клиента:

Xcopy "C:\Users\spinner\AppData\Local\Mega Limited\MEGAsync" C:\Users\spinner\MegaConfig\Mega1\MEGAsync\ /s /e

Осуществить завершение работы bat файла:  exit

Для подстраховки мной были внесены паузы между операциями в 1 секунду:

timeout /t 1 /nobreak

Для первой учётной записи файл bat имеет вид:

@echo off
rd "C:\Users\spinner\AppData\Local\Mega Limited\MEGAsync" /s /q
timeout /t 1 /nobreak
md "C:\Users\spinner\AppData\Local\Mega Limited\MEGAsync"
timeout /t 1 /nobreak
Xcopy C:\Users\spinner\MegaConfig\Mega1\MEGAsync "C:\Users\spinner\AppData\Local\Mega Limited\MEGAsync\" /s /e
timeout /t 1 /nobreak
C:\Users\spinner\AppData\Local\MEGAsync\MEGAsync.exe
rd C:\Users\spinner\MegaConfig\Mega1\MEGAsync /s /q
timeout /t 1 /nobreak
md C:\Users\spinner\MegaConfig\Mega1\MEGAsync
timeout /t 1 /nobreak
Xcopy "C:\Users\spinner\AppData\Local\Mega Limited\MEGAsync" C:\Users\spinner\MegaConfig\Mega1\MEGAsync\ /s /e
timeout /t 3 /nobreak
exit

Для второй учётной записи файл bat имеет вид:

@echo off
rd "C:\Users\spinner\AppData\Local\Mega Limited\MEGAsync" /s /q
timeout /t 1 /nobreak
md "C:\Users\spinner\AppData\Local\Mega Limited\MEGAsync"
timeout /t 1 /nobreak
Xcopy C:\Users\spinner\MegaConfig\Mega2\MEGAsync "C:\Users\spinner\AppData\Local\Mega Limited\MEGAsync\" /s /e
timeout /t 1 /nobreak
C:\Users\spinner\AppData\Local\MEGAsync\MEGAsync.exe
rd C:\Users\spinner\MegaConfig\Mega2\MEGAsync /s /q
timeout /t 1 /nobreak
md C:\Users\spinner\MegaConfig\Mega2\MEGAsync
timeout /t 1 /nobreak
Xcopy "C:\Users\spinner\AppData\Local\Mega Limited\MEGAsync" C:\Users\spinner\MegaConfig\Mega2\MEGAsync\ /s /e
timeout /t 3 /nobreak
exit

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

Запустите поочерёдно созданные Вами скрипты. В настройках клиента должны отображаться разные учётные записи (разные e-mail), а также различный расход выделенного Вам облаком MEGA дискового пространства.

Примечание. Если необходимо продолжить работу MEGA с предыдущей учётной записью, то смысла в запуске MEGA через скрипт sh или файл bat не имеется. Просто запустите клиент MEGA из меню программ.

Linux

При выходе из синхронизации после нажатия кнопки "Да"


Вам должно отображаться уведомление:


Завершение работы скрипта Вы можете проконтролировать через диспетчер задач, в котором при выходе из синхронизации сначала исчезнет процесс megasync, а несколько позже и сам скрипт. На показанном ниже рисунке скрипт отображён процессом MEGA2.sh (занимает 2,9 Мб резидентной памяти):


Windows

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

Для подавления отображения окна на рабочем столе создайте для каждого из файлов bat ярлык, в свойствах которого укажите "Свернутое в значок":


В этом случае работа файла bat не будет отображена на экране. Вместо этого Вы будете наблюдать значок в трее чёрного цвета, который исчезнет после завершения работы файла bat:



Дополнительная настройка, доступная через веб-браузер

Каждой учётной записи выделяется 50 Гб дискового пространства облака MEGA, а учётная запись привязана к адресу электронной почты. Можно отметить, что для почты Яндекс Вы будете иметь сразу 6 разных почтовых адресов:

user@ya.ru, user@yandex.by, user@yandex.com, user@yandex.kz, user@yandex.ru, user@yandex.ua

А если привяжете свой номер телефона, то и все 7.


  Примечание. В 2017 г. 50 Гб дискового пространства навечно для бесплатной учётной записи выдаваться перестали. 50 Гб Вы получите на время, по истечении которого у бесплатной учётной записи останется лишь 15 Гб (в сети можно найти много материалов, в которых упоминается именно 50 Гб).


Чтобы не "тратить время" на очистку Корзины на облаке MEGA, команда отображения которой расположена перед значком шестерёнки в левом столбце чёрного цвета при отображении Вашего облака MEGA в веб-браузере,


обратите внимание на настройку расписания её автоматической очистки. Щёлкните по значку шестерёнки и перейдите в раздел "Продвинутые". В левом верхнем горизонтальном меню кликните по ссылке "Управление файлами".


В отображении Корзины Вы можете наблюдать папку SyncDebris. Данная папка содержит файлы, которые были удалены на Вашем компьютере, а клиент MEGA реплицировал данные изменения в облако.



Скрытые папки и каталоги MEGA в Windows и Linux

В процессе работы клиентов MEGA на ОС Windows и Linux было отмечено наличие таких объектов как папка Rubbish в Windows и каталог .debris в Linux. При этом при работе в Linux мной было обращено внимание на то, что для одной из учётных записей каталог .debris имеется, а для другой отсутствует.

На заданный службе поддержки MEGA по этому поводу вопрос был получен ответ и даже (к моему величайшему изумлению) на русском языке. Вы можете с ним ознакомиться, так как в нём изложены некоторые полезные, на мой взгляд, сведения о работе клиента MEGA. Читать файл pdf.

1 комментарий: