Показаны сообщения с ярлыком Dropbox. Показать все сообщения
Показаны сообщения с ярлыком Dropbox. Показать все сообщения

понедельник, 19 мая 2025 г.

Устранение самовосстановления автозапуска Dropbox при старте Linux


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


Если раньше в панели управления клиентом можно было полностью отключить автозапуск приложения при старте системы, то теперь, как видно из рисунка выше, такая возможность отсутствует. Однако лично у меня имеется потребность выключения автостарта Dropbox по различным причинам, например, Dropbox запускается с задержкой либо запускается только по расписанию cron.

Отключение в настройках автозапусков приложений Cinnamon и XFCE старта Dropbox проблему не решает, так как вносимые таким образом изменения в виде добавления строк
 X-GNOME-Autostart-enabled=false или Hidden=true в файл dropbox.desktop не сохраняются. На первом рисунке показано, что в Cinnamon сдвигается движок влево. Второй рисунок относится к настройкам XFCE, где в поле Dropbox необходимо снять галочку.



Работающее на момент написания данной заметки решение было найдено в документации Dropbox. Для выключения автостарта выполните в терминале 

dropbox autostart n

После этой команды файл dropbox.desktop в ~/.config/autostart  удаляется. Для возобновления автостарта Dropbox выполните в терминале команду 

dropbox autostart y 

В примечании к этим командам в man dropbox указано, что данные команды работают лишь в текущих версиях дистрибутивов Ubuntu Linux. Данная команда удаляет файл ~/.config/autostart/dropbox.desktop  Однако у меня такая настройка действует только до первого запуска Dropbox из меню, после чего файл dropbox.desktop снова появляется среди автозагружаемых программ при старте системы.

Лично для себя решение было найдено в переопределении прав доступа на файл dropbox.desktop

Сразу поясню, что описанный ниже способ не является, как говорится, "кошерным", но ничего лучшего на настоящий момент мной найдено не было.

Сначала в настройках системы в "Автозагрузка" выключается автозапуск Dropbox либо движком в левое положение (первый рисунок для Cinnamon, второй для xfce)



либо через редактирование файла dropbox.desktop

xed ~/.config/autostart/dropbox.desktop

Для Cinnamon в тестовом редакторе в последней строке установить false

То есть, по умолчанию установлено X-GNOME-Autostart-enabled=true, а изменить нужно на X-GNOME-Autostart-enabled=false 


Для xfce добавить строку Hidden=true

Далее открывается скрытая папка autostart  xdg-open ~/.config/autostart и в свойствах файла в секции "Права" для владельца и группы устанавливается доступ "Только чтение". После этого на значке запуска должен появиться замочек, например:


В ходе последующих неоднократных проверок в Linux Mint 22.1 автозапуска Dropbox при старте системы не происходило, а установленные права на файл dropbox.desktop изменениям не подвергались.

В перечне процессов запуск демона Dropbox осуществляется командой 

python3 /usr/bin/dropbox start -i 

В сети можно найти утверждение, что его можно отредактировать на предотвращение автозапуска Dropbox при старте системы. Но попытки комментировать относящиеся к запуску Dropbox строки успехом не увенчались.  

среда, 14 октября 2020 г.

Определение действия при отсутствии Интернет

Сценарий создавался для личных нужд. Идея: если Интернет отсутствует, то нет необходимости в работе клиентов синхронизации и они должны быть выключены. В данном случае рассматривается выключение клиентов Dropbox и pCloud.

При запуске сценария проверяется наличие Интернет по ответу от google.com 
Если Интернет присутствует, то в файл наличия Интернет internet.txt записывается значение 1. Если ответ отсутствует, то в файл состояния записывается значение 0 и после этого поступают команды на выключение клиентов pCloud и Dropbox.

#!/bin/bash
net=/home/minter/Reports/internet.txt
echo -e "GET http://google.com HTTP/1.0\n\n" | nc google.com 80 > /dev/null 2>&1
if [ $? -eq 0 ]; then
  echo "1" > $net
else
  echo "0" > $net
  killall -s TERM pcloud
  dropbox stop
fi
exit

Записанное в файл internet.txt значение может быть использовано при выполнении фоновых заданий по расписанию. Для этого читается записанное в этот файл значение. Если оно совпадает со значением 0, то "ничего не делать". Если не совпадает – выполнить какую-либо команду.

#!/bin/bash
net1=`cat /home/minter/Reports/internet.txt`
net0=0
if [ $net1 -eq $net0 ]; 
  then
    :
  else
    ваша_команда
fi
exit

пятница, 20 марта 2020 г.

Dropbox "ругается" на компонент python


После обновления Linux Mint с 19.2 до 19.3 через некоторое время при запуске Dropbox на экране стало отображаться предупреждение:



Если нажать кнопку OK, то происходит загрузка с сайта Dropbox, по завершению которой работа Dropbox восстанавливается:



При этом никаких новых программ после обновления системы до Linux Mint 19.3 на компьютер не устанавливалось.

Ну что ж, Dropbox сам говорит, что необходимо сделать. Так как у меня система новее Ubuntu 16.10, то мне необходим пакет python-gpg. Для Linux Mint 18x нужен пакет  python-3-pgpme.

Мне не известно по какой причине данный пакет, похоже, из системы был удалён, но восстановление штатной работы Dropbox вылилось в установку требуемого пакета:

sudo apt install -y python-3-pgp

Или это можно сделать через графический интерфейс менеджера пакетов Synaptic, найдя требуемое через поиск:




воскресенье, 10 ноября 2019 г.

Применение rclone в Linux с использованием сценариев на bash


Интерес к применению rclone явился следствием поиска какого-либо решения, которое позволило бы взаимодействовать с Облако@Mail.Ru после прекращения Mail.Ru поддержки клиента синхронизации для Linux. А возможность использования rclone для взаимодействия с Диском Google и Microsoft OneDrive придало дополнительное ускорение изучению данного вопроса.

Приводимые сценарии на bash (скрипты bash) для автоматизации процессов копирования, перемещения и синхронизации данных с облачными хранилищами Dropbox, Microsoft OneDrive, Диск Google, Box.net, Jottacloud, MEGA, pCloud, Яндекс Диск, Облако@Mail.Ru создавались для своих нужд и использования в системах Linux Mint 18.3 и Linux Mint 19.2.

Ожидается, что повторяемость приводимых сценариев будет достаточно высока. Теоретически, всё должно работать, но, как говорится, даже самая маленькая практика стоит самой большой теории. В приводимых листингах вместо manager и minter не забудьте указывать имя своего домашнего каталога. Также следует иметь в виду, что некоторые команды для Вашей оболочки (Cimnnamon, MATE и др.) могут быть другими. Примеры приводятся для XFCE, о чём в скобках даются пояснения.

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

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


Здесь вам не равнина, здесь – климат иной ... (Высоцкий В.С.)

Говоря простым языком, rclone является инструментом, написанным на языке Go, с помощью которого, хотя и через командную строку, можно напрямую взаимодействовать с содержимым своего облачного хранилища данных без необходимости установки десктопного клиента синхронизации. Под прямым взаимодействием имею в виду интересующие меня операции копирования, перемещения, синхронизации. Со списком поддерживаемых ПО rclone облачных хранилищ можно ознакомиться на сайте https://rclone.org  Справа от каждого наименования можно увидеть такие значки как "домик" и "книга". "Домик" содержит ссылку на главную страницу ресурса, а "книга" – ссылку на пример настройки для него rclone. Например,


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


Получить rclone

Скачать ПО rclone можно со страницы https://downloads.rclone.org/  Для установки текущей версии ПО мной был скачан deb-пакет, в наименовании которого присутствует слово current:


ПО предыдущих версий смотрите в соответствующей папке с начала страницы и вниз.


Настройка rclone

Для настройки rclone выполните в терминале команду rclone config

Если у Вас уже имеются настроенные варианты соединений, то они отобразятся под записью Current remotes.

Current remotes:

Name                 Type
====                 ====
CA                   dropbox
Jotta-2              jottacloud
SA                   dropbox

Ниже следуют варианты "что делать":

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q>

e – редактировать существующее соединение;
n – новое соединение;
d – удалить существующее соединение;
r – переименовать имя соединения
c – копировать настройку;
s – установить конфигурационный пароль;
q – выйти из режима настройки.

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

После ввода имени соединения необходимо цифрой указать облачное хранилище, на которое далее будет настраиваться rclone.

Листинги с пояснениями осуществлённых мной настроек на свои облачные ресурсы хранения данных содержатся ниже.



Как указывалось выше, имя настроенного соединения можно изменить, например:

e/n/d/r/c/s/q> r
Choose a number from below, or type in an existing value
 1 > CA
 2 > MS
 3 > SA
 4 > Sv
remote> 4
Enter new name for "Sv" remote.
name> VS
Current remotes:

Name                 Type
====                 ====
CA                   dropbox
MS                  onedrive
SA                   dropbox
VS                   dropbox


Файл с настройками rclone расположен в скрытом каталоге домашнего каталога пользователя: ~/.config/rclone/rclone.conf


Команды действий в rclone

Все возможные команды rclone перечислены на странице https://rclone.org/docs

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

Синтаксис команды очень прост: rclone действие откуда куда

"Откуда" и "куда" указывают на локальный каталог (папку) компьютера или каталог (папку) выбранного облачного ресурса.

Весь облачный ресурс указывается в виде имя_соединения:

Например, для перечисленных в примере выше указание всего облака будет в виде CA: MS: SA: VS:

Для работы с конкретной папкой облака её имя указывается сразу после двоеточия, например:  CA:Входящие  или  MS:Музыка/Инструментальная .

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


Получить список содержимого

Возможные команды:  rclone treerclone lsrclone lsdrclone lsl.

rclone tree – отобразить содержание в виде дерева;

rclone ls – отобразить объекты с указанием размера и пусти;

rclone lsd – отобразить все папки/контейнеры c их именами и количеством содержащихся в них элементов;

rclone lsl – отобразить все объекты, их пути и размеры.

Результаты вывода показаны на рисунках ниже:





Можно создать сценарии на bash, которые будут осуществлять сохранение данного вывода в файл или для отображения вывода в терминале или через zenity.

Просто вывод в текстовый файл:

#bin/bash
rclone tree MS:Audio > /home/manager/Reports/MS.txt
exit

Вывод в окно терминала (пример для xfce):

#!/bin/bash
xfce4-terminal --geometry=80x35 -x sh -c 'rclone tree MS:Audio; exec bash'


--geometry=80x35 – это ширина и высота окна терминала.

Вывод в zenity:

#bin/bash
file=/home/manager/Reports/MS.txt
rclone tree MS:Audio > $file
zenity --text-info --width "600" --height "400" --title "Содержание ресурса" --filename=$file
rm $file
exit


-width "600" --height "400" – это ширина и высота окна.

--title "Содержание ресурса" – это заголовок окна.

После нажатия на кнопку ОК данное окно будет закрыто и выполнится последующая команда удаления файла MS.txt, который представляет из себя список содержимого.


Копировать, переместить

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

Команды:  rclone copy,  rclone copyto,  rclone move,  rclone moveto

rclone copy – копировать файлы из источника в назначение, существующие файлы не перезаписываются;

rclone copyto – копировать файлы из источника в назначение, пропускаемые файлы уже скопированы;

rclone move – переместить файлы из источника в назначение;

rclone moveto – переместить файл или каталог из источника в назначение.

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

Пример:

#!/bin/bash
# Log creation
day=`date '+%m-%d'`
report=/home/minter/Dropbox/Reports/SA/$day.rclone.txt
if [ -f $report ]; then
  :
else
  > $report
  time=`date '+%H-%M-%S'`
  echo "$time -- rclone log created" >> $report
fi
# Transfer messages
sm=/home/minter/Clouds/rsync/SA
dm=SA:Input/Сообщения
count=`find $sm -type f | wc -l`
if [ $count -eq 0 ];
then
 time=`date '+%H-%M-%S'`
 echo "$time -- no items to transfer" >> $report
else
 time=`date '+%H-%M-%S'`
 echo "$time -- start of transmission" >> $report
 echo "* * *" >> $report
 ls $sm >> $report
 echo "* * *" >> $report
 rclone move $sm $dm
 time=`date '+%H-%M-%S'`
 echo "$time -- all items transferred" >> $report
fi
exit

Приведенный сценарий осуществляет перемещение содержимого каталога /home/minter/Clouds/rsync/SA в папку Input/Сообщения облака под именем соединения SA. Осуществляемые действия протоколируются в файл отчёта /home/minter/Dropbox/Reports/SA/$day.rclone.txt, в имени которого присутствует дата. То есть файл отчёта имеет наименование, например 11-07.rclone.txt (ноябрь 7-го). Файл отчёта создаётся ежедневно. Если такой файл существует, то операция его создания не производится. В файл отчёта включается время начала передачи, список передаваемых файлов и время завершения передачи. Передача производится в том случае, если в каталоге (папке) источника найден хотя бы 1 файл. Если ни одного файла не найдено, то запуск rclone не осуществляется, а в файл отчёта вносится запись о том, что для передачи ничего не имеется (no items to transfer). Для повышения читаемости файла отчёта в него дополнительно включаются разделители вида * * *. Пример:

06-30-01 -- rclone log created
06-30-01 -- start of transmission
* * *
11-09.No.313.03-50.pdf
11-09.No.313.05-01.pdf
Поля сражений (1-10 серии).html
* * *
06-30-05 -- all items transferred

Если при передаче больших объемов данных необходимо контролировать ход процесса, то после команды необходимо добавить ключ --progress. Пример:


Пример сценария:

#!/bin/bash
xfce4-terminal --geometry=80x35 -x sh -c 'rclone move --progress /home/minter/00 Box-1:Books; exec bash'


По завершении операции будет отображено приглашение командной строки, например:



Сколько данные занимают места на облаке

Команда:  rclone size

Примечание: если у Вас много данных, то процесс может занять время.

Например:


Сценарий 1:

#!/bin/bash
xfce4-terminal --geometry=80x35 -x sh -c 'rclone size MS:Audio; exec bash'


Сценарий 2 (через zenity):

#bin/bash
file=/home/manager/Reports/MS.txt
rclone size MS:Audio > $file
zenity --text-info --width "300" --height "180" --title "Занимаемое место" --filename=$file
rm $file
exit



Сколько занято и сколько доступно на облаке

Команда:  rclone about

Выводятся значения Total (выделено облаком), Used (использовано), Free (свободно), Trashed (в Корзине).

Пример:


Сценарий 1 (пример для xfce):

#!/bin/bash
xfce4-terminal --hold -e "rclone about MS:"


Сценарий 2 (zenity):

#bin/bash
file=/home/manager/Reports/MS.txt
rclone about MS: > $file
zenity --text-info --width "300" --height "180" --title "Занимаемое место" --filename=$file
rm $file
exit



Синхронизация данных

Команда:  rclone sync

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

Пример сценария:

#!/bin/bash
day=`date '+%m-%d'`
sm=/home/minter/FBbooks
dm=MEGA-3:FBbooks-H-4
report=/home/minter/Dropbox/Reports/MEGA-3/$day.list.txt
# Syncronize
rclone sync $sm $dm
rclone tree MEGA-3: > $report
exit

В этом сценарии после завершения синхронизации формируется список содержания синхронизируемого ресурса, который экспортируется в файл txt  /home/minter/Dropbox/Reports/MEGA-3/$day.list.txt


Другие команды rclone

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

rclone delete – удалить контент пути (например удалить содержимое ресурса SA:Input/Сообщения);

rclone purge – удалить путь и весь его контент (насколько предполагаю, применительно к предыдущему случаю будет удалена папка Сообщения со всем её содержимым);

rclone mkdir – создать путь (каталог), если он не существует;

rclone rmdir – удалить путь (вероятно, каталог);

rclone rmdirs – удалить пустые каталоги, расположенные ниже пути (имеются в виду вложенные каталоги);

rclone check – проверить, совпадают ли файлы источника и назначения;

rclone dedupe – интерактивно найти дубликаты файлов и их удалить/переименовать;

rclone mount – монтировать облако или его папку в каталог компьютера. Например, rclone mount MS:Audio /home/manager/00. Для отмонтирования в документации rclone указано, что нужно отправить сигнал SIGTERM.

Для своих нужд создавались 2 сценария: монтирование и отмотирование.

Для монтирования, например, всего облака с именем SA:

#!/bin/sh
rclone mount SA: /home/minter/00 &
exit

Всё пространство облака SA монтируется в каталог /home/minter/00

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

Для отмонтирования, то есть отправки SIGTERM, соответствующему команде kill, необходимо знать номер процесса.


Пример сценария отмонтирования:

#!/bin/sh
client="$(pidof rclone mount SA: /home/minter/00)"
kill ${client}
exit 


Пример перемещения данных в ЛВС по ftp

Если в папке с данными будет найден хотя бы 1 файл, то rclone будет выполняться.

#!/bin/bash
cur=/home/manager/RClone/Curious
hum=/home/manager/RClone/Humour
sm=/home/manager/RClone/SA
count1=`find $cur -type f | wc -l`
if [ $count1 -eq 0 ];
then
 :
else
 rclone move $cur H-4:Clouds/rsync/Curious
fi
count2=`find $hum -type f | wc -l`
if [ $count2 -eq 0 ];
then
 :
else
 find $hum -name '*.odt' -delete
 rclone move $hum H-4:Clouds/rsync/Humour
fi
count3=`find $sm -type f | wc -l`
if [ $count3 -eq 0 ];
then
 :
else
 find $sm -name '*.odt' -delete
 rclone move $sm H-4:Clouds/rsync/SA
fi
exit


Дополнительные команды

1. Передача/получение данных с уничтожением каталогов

При передаче через move исходные каталоги не удаляются, оставаясь "пустыми", то есть без содержания. Чтобы они удалялись команду move необходимо дополнять так называемым флагом: --delete-empty-src-dirs

Пример с использованием отображения процесса в терминале в оболочке xfce:

xfce4-terminal --geometry=80x15 -x sh -c 'rclone move --progress li-2:sa /home/minter/Загрузки --delete-empty-src-dirs; exec bash'

2. Очистка Корзины

Иногда требуется принудительно очищать Корзину, так как такие хранилища как Диск.Яндекс и MEGA при подсчётах доступного для записи места на облаке учитывают объём, который занимают удалённые данные, то есть помещённые в Корзину. Например:

rclone cleanup ydsa:

В приведенной выше команде ydsa: соответствует хосту Диск.Яндекс, прописанному в конфигурации rclone.conf


Пояснение возможного использования Rclone Browser

Ранее мной использовался графический инструмент rclone browser, установка которого возможна из менеджера программ:


Однако в этой оболочке значки облачных ресурсов Dropbox, Google, OneDrive, Yandex Disk корректно отображаются только до версии rclone 1.44. Уже с версии 1.45 эти ресурсы начинают отображаться знаком вопроса.

Ранее мной автору rclone ранее задавался вопрос о возможной причине отображения интересующего меня ресурса MEGA значком вопроса. Martins Mozeiko тогда ответил мне, что при разработке rclone browser MEGA ещё не предоставляла необходимый значок, поэтому он и отсутствует. Но, по его словам, я мог бы скомпилировать rclone browser из исходных кодов, включив в проект своей сборки нужный мне значок. В то время у меня так и не получилось сделать свою версию rclone browser. А после того как удалось разобраться с командами rclone, необходимость в использовании rclone browser отпала сама собой.

Если Вам критично корректное отображение в Rclone Browser значков и Вы используете только Dropbox, OneDrive, Google, Yandex Disk, то устанавливайте Rclone Browser и rclone версии 1.44. Для монтирования облака создайте у себя пустой каталог (и без запуска Rclone Browser не записывайте туда никаких данных). Пример:


При монтировании в этот каталог облака его содержимое будет отображено в этом каталоге.


 "Подводный камень".  При попытке отмонтировать ресурс 00 через менеджер файлов (рис. выше) отмонтирование происходит не всегда. Чтобы отмонтировать подключенный удалённый ресурс нужно во вкладке Rclone Broser Jobs


напротив выбранного ресурса нажать на значок крестика и подтвердить выполнение назначенной операции:



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

В последних дистрибутивах Linux Mint (19/20) используется дальнейшая разработка Rclone Browser 1.8, которую сопровождает уже не Martins Mozeiko, а разработчик с ником kapitainki (London, UK). В новой версии Rclone Browser появилось отображение значков MEGA, но отсутствуют значки для Облака Mail.Ru и pCloud. Вместо них отображаются значки вопроса.

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

воскресенье, 10 февраля 2019 г.

Автоматизация процессов в Linux: периодический запуск Dropbox в указанный период времени

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

В частности, с 19 до 22 часов Dropbox должен запускаться на 10 минут. При этом период между данными запусками должен составить 30 минут.

При завершении этого 10-минутного сеанса работы папка общего доступа (обмена) должна быть проверена на наличие новых файлов/папок. Если такие файлы/папки имеются, то они подлежат перемещению в другую папку. Затем папка назначения открывается сопоставленным менеджером файлов (nautilus, nemo, caja, thunar).

Так как готового решения, на первый взгляд, не существует, то пришлось создать "самопальное" решение на bash. Может быть, кому-нибудь пригодится это решение или его отдельные элементы.


Задача является комплексной и состоит из нескольких отдельных задач:

– проверка наличия уже существующего процесса Dropbox;

– запуск 10-минутного сеанса работы;

– проверка наличия файлов/папок в папке общего доступа;

– назначение периодического пользовательского задания cron.


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

Основным процессом Dropbox является выполняемая задача

dropbox-dist/dropbox-lnx.x86_64-.../dropbox , где в качестве многоточния указана версия используемого в настоящее время клиента. Но момент написания данной публикации такой версией является 66.4.84, поэтому в диспетчере задач необходимо произвести поиск задачи

dropbox-dist/dropbox-lnx.x86_64-66.4.84/dropbox

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

1. Определяется текущая версия ПО Dropbox

ver=`cat ~/.dropbox-dist/VERSION`

2. Нас основании текущей версии указывается имя задачи для поиска

task=dropbox-dist/dropbox-lnx.x86_64-$ver/dropbox

3. Осуществляется поиск задачи Dropbox. Результат имеет два варианта: 0 – Dropbox не запущен, 1 – Dropbox запущен. Результат записывается в файл dropbox.txt  Расположение данного файла указано для моих нужд, у Вас оно определяется Вами. При выводе результата в файл dropbox.txt предыдущее значение заменяется новым, поэтому необходимости в последующем удалении данного файла не имеется.

ps ax | grep -v grep | grep $task | wc -l > ~/scripts/dropbox.txt

4. Для следующей операции сравнения "если ... то ..." производится считывание значения, записанного в файл dropbox.txt

value=`cat ~/scripts/dropbox.txt`

5. Если Dropbox не запущен (в dropbox.txt записан 0), то никаких действий не производится. В противном случае (Dropbox запущен) выдаётся команда остановки Dropbox.

 if [ $value -eq 0 ];
then
:
else
dropbox stop
fi

В результате получился следующий скрипт bash, которому условно назначено имя exist.sh

#!/bin/bash
ver=`cat ~/.dropbox-dist/VERSION`
task=dropbox-dist/dropbox-lnx.x86_64-$ver/dropbox
ps ax | grep -v grep | grep $task | wc -l > ~/scripts/dropbox.txt
value=`cat ~/scripts/dropbox.txt`
if [ $value -eq 0 ];
then
:
else
dropbox stop
fi
sleep 5 && exit

Команда 5 секундной паузы введена для "перестраховки", так как после команды остановки Dropbox необходимо 3-5 секунд для закрытия всех открытых подключений.


Проверка наличия в папке обмена новых файлов/папок. Автоматический перенос данных в другую папку.

Определяются переменные: H-1 – общая папка (обмена) Dropbox, H-2 – папка назначения, в которую будут переноситься данные.

D1=/home/user/Dropbox/H-1
D2=/home/user/Work/H-2

Производится подсчёт файлов (соответственно и папок, в которых будут расположены файлы):

count=`find $D1 -type f | wc -l`

Если в результате поиска выдано значение 0 (нет никаких файлов), то не производится никаких действий:

if [ $count -eq 0 ];
then
:

В противном случае всё содержимое папки общего доступа Dropbox копируется в другую папку (назначения):
 
else
cp -r $D1/* $D2

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

find $D1/* ! -name '.dropbox' -delete

В папке назначения наоборот – найти и удалить скопированный из папки источника файл .dropbox, так как команда cp -r будет копировать всё, в том числе и скрытые файлы/папки: 

find $D2 -name '.dropbox' -delete

Завершить цикл и открыть папку назначения в файловом менеджере:

fi
xdg-open $D2

Листинг скрипта (например, do.sh) на bash:

#!/bin/bash
D1=/home/user/Dropbox/H-1
D2=/home/user/Work/H-2
count=`find $D1 -type f | wc -l`
if [ $count -eq 0 ];
then
:
else
cp -r $D1/* $D2
find $D1/* ! -name '.dropbox' -delete
find $D2 -name '.dropbox' -delete
fi
xdg-open $D2
exit

Если соответствующая переменной D1 папка является вложенной папкой общей папки Dropbox, то в ней файл .dropbox будет отсутствовать. В таком случае скрипт упрощается:

#!/bin/bash
D1=/home/user/Dropbox/H-1
D2=/home/user/Work/H-2
count=`find $D1 -type f | wc -l`
if [ $count -eq 0 ];
then
:
else
cp -r $D1/* $D2
find $D1/* -delete
fi
xdg-open $D2
exit

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


Отображение в Linux Mint 18.3 xfce


Отображение в Linux Mint 19.1 xfce

В этом случае можно использовать скрипт:

#!/bin/bash
DIR=/home/user/Dropbox/H-1
count=`find $DIR -type f | wc -l`
if [ $count -eq 0 ];
then
:
else
zenity --width=200 --height=50 --info --text "\nВ каталоге H-1 имеются данные" 2>/dev/null
fi
exit

Команда zenity вызывает отображение сообщения на экране монитора, которое будет отображаться до тех пор, пока пользователь не нажмёт кнопку OK.

--width=200 --height=50 указывает на ширину и высоту отображаемого окна. В Linux Mint 18.3 в этом не было необходимости, а в Linux Mint 19.1 такие параметры уже пришлось ввести.

Символ \n соответствует команде "перейти на новую строку". Введено для более лучшего визуального восприятия сообщения.



Скрипт 10-минутного сеанса работы Dropbox состоит из двух вышеописанных и команд запуска/остановки Dropbox.

#!/bin/bash
~/scripts/exist.sh
dropbox start -i
sleep 600
~/scripts/do.sh
dropbox stop
sleep 5 && exit

Команда 5 секундной паузы введена для "перестраховки", так как после команды остановки Dropbox необходимо 3-5 секунд для закрытия всех открытых подключений.


Периодический запуск Dropbox в указанный промежуток времени осуществляется через пользовательское задание cron. Запустите в терминале crontab -e и назначьте задание. Для описанной задачи, например:

*/30 19-22 * * * export DISPLAY=:0 && /путь_к_скрипту

пятница, 25 января 2019 г.

Автоматическое переназначение значка статуса Dropbox

Назначение пользовательского значка статуса "Синхронизировано" в Dropbox рассматривалось в публикации "Изменение значка статуса Dropbox в Linux".

С течением времени после обновления ПО Dropbox замена перезаписанного в процессе обновления графического файла dropboxstatus-idle.png всё время откладывалась на потом. В конце концов, постоянная "забывчивость" заставила поискать способ осуществление такой операции автоматически. Например, значка по умолчанию


на выбранный свой


Готовые значки можно взять здесь. Во вложенной папке Default colored расположены варианты окраски значка dropboxstatus-idle.png. При создании своих значков необходимо иметь в виду, что их размер должен быть 20x20.

Процесс выполняется скриптом bash, оформленным как исполняемый файл.

Для достижения цели необходимо знать несколько исходных данных:

– версию используемого ПО Dropbox;

– расположение значка из комплекта поставки (по умолчанию);

– расположение своего значка статуса "Синхронизировано".

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

В Ubuntu и Linux Mint имеется скрытый каталог ~/.dropbox-dist, в котором расположен файл VERSION, содержанием которого и является версия установленного ПО.

Значок статуса "Синхронизировано" расположен по пути

 ~/.dropbox-dist/dropbox-lnx.x86_64-vesrion/images/hicolor/16x16/status/,

где вместо version указаны цифры, соответствующие номеру версии ПО, например

~/.dropbox-dist/dropbox-lnx.x86_64-65.4.177/images/hicolor/16x16/status/

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

ver=`cat ~/.dropbox-dist/VERSION`
icon=~/.dropbox-dist/dropbox-lnx.x86_64-$ver/images/hicolor/16x16/status/
f1=~/.dropbox-dist/dropbox-lnx.x86_64-$ver/images/hicolor/16x16/status/dropboxstatus-idle.png
f2=~/Dropbox/dropboxstatus-idle.png

Переменная ver является номером версии ПО, который затем используется при определении значения переменной пути к значкам. Так как ПО Dropbox обновляется, то невозможно заранее указать номер следующей версии. Поэтому этот номер и считывается из файла VERSION.

icon указывает расположение каталога со значками состояния Dropbox.

f1 указывает путь к текущему файлу значка dropboxstatus-idle.png.

f2 указывает путь к своему файлу значка dropboxstatus-idle.png, который и должен заменить текущий.

Далее производится операция сравнения двух файлов dropboxstatus-idle.png: текущего и своего. Если они одинаковы, то не производится никаких действий. Если они отличаются, то текущий значок удаляется, а свой файл копируется в каталог со значками состояния Dropbox.

if cmp -s $f1 $f2 ; then
   :
else 
   rm $f1
   cp $f2 $icon
fi

Итого, полный текст скрипта:

#!/bin/bash
ver=`cat ~/.dropbox-dist/VERSION`
icon=~/.dropbox-dist/dropbox-lnx.x86_64-$ver/images/hicolor/16x16/status/
f1=~/.dropbox-dist/dropbox-lnx.x86_64-$ver/images/hicolor/16x16/status/dropboxstatus-idle.png
f2=~/Dropbox/dropboxstatus-idle.png
if cmp -s $f1 $f2 ; then
:
else 
rm $f1
cp $f2 $icon
fi
exit

Ожидается, что в результате его использования состояние Dropbox "Синхронизировано" будет постоянно отображаться назначенным значком.

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

f3=~/.dropbox-dist/dropbox-lnx.x86_64-$ver/images/hicolor/16x16/status/dropboxstatus-logo.png
f4=~/Dropbox/dropboxstatus-logo.png

и аналогичную операцию сравнения после предыдущего цикла (после fi)

if cmp -s $f3 $f4 ; then
 :
else
rm $f3
cp $f4 $icon
fi

Данный скрипт можно поместить как отдельную команду в скрипт запуска Dropbox, который производится через кнопку запуска или по расписанию. Ниже приводится пример через кнопку запуска. Скрипт автокоррекции значка – dbi.sh

#!/bin/bash
~/Dropbox/scripts/dbi.sh
notify-send --icon=/home/user/.local/share/icons/Mint-X/emblems/48/emblem-sync-dropbox.png "Dropbox status" "Client is starting"
dropbox start -i
sleep 1200
notify-send --icon=/home/user/.local/share/icons/Mint-X/emblems/48/emblem-sync-dropbox-z.png "Dropbox status" "Dropbox is going to exit"
dropbox stop
exit

пятница, 11 января 2019 г.

Синхронизация любых папок компьютера с Dropbox, MEGA, pCloud, Диск Яндекс, Облако@Mail.Ru

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

Такими облачными хранилищами являются:

Dropbox, Диск Яндекс, Облако@Mail.Ru

 Примечание.  Клиент Облако@Mail.Ru под Linux больше не работает. Сбылось мрачное предположение.

О создании символических ссылок читайте ниже.


Папки для синхронизации с MEGA и pCloud назначаются в их графических клиентах. При этом можно отменить синхронизацию с создаваемой папкой по умолчанию и впоследствии удалить её.

Про выборочную синхронизацию для pCloud читать здесь

Для реализации такого действия в клиенте MEGA при его настройке необходимо выбирать "Выборочная синхронизация" (подробности).

При уже установленном клиенте MEGA достаточно удалить его текущую настройку. При запуске клиента откроется окно его новой настройки.

Для удаление текущей настройки клиента MEGA в Linux выполнить в терминале

rm -R '~/.local/share/data/Mega Limited/MEGAsync'

Для удаления текущей настройки клиента MEGA в Windows выполните в командной строке

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

В указанной команде spinner – это папка профиля пользователя. Вместо spinner укажите имя папки Вашего профиля пользователя системы.

  Обратите внимание. 

1. Чтобы не пересинхронизировать большой объём данных или не потерять имеющиеся в облаке данные зайдите сначала в облако MEGA через браузер. Посмотрите на расположение данных в папках. Не исключено, что все Ваши данные расположены в папке MEGAsync

 
2. Перенесите в браузере данные из папки MEGAsync в корень облачного хранилища. Например, вот так:


3. Перенесите на компьютере данные из папки MEGAsync в другое место.

4. Запустите клиент и согласитесь с настройкой по умолчанию. В таком варианте папка MEGAsync компьютера и  папка MEGAsync облака не будут содержать каких-либо данных.

5. Вызовите по значку MEGA в правом контекстном меню "Настройки" и перейдите во вкладку "Синхронизации". Сопоставьте подлежащие синхронизации с облаком папки компьютера папкам облака.


Клиент пересчитает новое расположение папок с данными. Это процесс может занять некоторое время.


Символические ссылки

В Linux символические ссылки создаются очень просто. Если такая команда отсутствует в контекстном меню Вашего менеджера файлов, то можно ознакомиться с этим материалом. Хотя в нём речь ведётся о файловом менеджере Thunar (графическое окружение xfce), в нём приводятся варианты команд создания символической ссылки на папку (каталог) .

Созданную ссылку поместить в папку (каталог) синхронизации с облаком. Желательно, чтобы имя ссылки было удобоваримым, а не что-то наподобие "Ссылка на ...", "Link to ...".

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

1. Перенесите папку в данными в удобное для Вас место на Вашем компьютере.

2. Создайте на папку символическую ссылку. Имена папки и символической ссылки на неё должны быть одинаковыми.

3. Поместите созданную символическую ссылку в папку клиента.

4. Запустите клиент синхронизации.

Ниже приводятся примеры для Диска Яндекс, Dropbox, Обако@Mail.Ru.


В облаке указанная выше символическая ссылка имеет вид:


Поясение к рисунку выше. Cemea является общей папкой





Про назначение символических ссылок в Windows читайте эту заметку.