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

среда, 22 мая 2024 г.

Исключить из синхронизации через rclone 1 папку и 1 файл

Для своих нужд организовано трёхкратное резервирование данных:
– получить данные с одного облака;
– синхронизировать полученные данные на другое облако;
– синхронизировать полученные данные на облако MEGA через десктопный клиент синхронизации megasync.

Если по первым двум задачам никаких вопросов не возникает, в процессе выполнения третьей задачи десктопный клиент синхронизации megasync автоматически создаёт в синхронизируемой папке с данными скрытую папку .debris и скрытый файл .megaignore

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


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

-:Thumbs.db
-:desktop.ini
-:~*
-:.*
-:*~.*
-:*.crdownload
-:*.sb-????????-??????
-:*.tmp

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

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

1. Исключить из синхронизируемой с облаком папки объекты .debris и .megaignore в направлении компьютер – облако.

rclone sync --progress /home/minter/Документы/Ex-H-4 --exclude /.debris/** --exclude /.megaignore mr81:Books-01

Обратите внимание, что в инструкции --exclude каждый из объектов указывается отдельно, то есть --exclude применено два раза, а сами инструкции следуют после указания источника, то есть папки компьютера. 

Смотрим результат выполнения операции на получателе (на примере Облака Mail.Ru):


Как видно из приведенного снимка экрана, ни папки .debris, ни файла .megaignore на получателе не наблюдается.

2. Исключить из синхронизируемой с облаком папки объекты .debris и .megaignore в направлении облако – компьютер.

rclone sync --progress mr81:Books-01 /home/minter/Документы/Ex-H-4 --exclude /.debris/** --exclude /.megaignore

Обратите внимание, что в данном примере инструкции --exclude следуют после указания папки получателя (компьютера).  

Проверяем, что существующие на получателе объекты .debris и .megaignore не были удалены.

среда, 15 мая 2024 г.

Ошибка rclone – invalid character '<' looking for beginning of value

Cегодня при попытке синхронизации локального каталога с облаком Mail.Ru, а также запросе состояния rclone about вывод окна терминала выдаёт ошибку, например, Failed to about: about call failed: invalid character '<' looking for beginning of value.

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

Для устранения неполадки при синхронизации примените опцию --tpslimit N, где N попробуйте указывать от 10 в сторону понижения, например, 

rclone sync --progress --tpslimit 10 источник получатель

Если при значении 10 всё заработает, то можно пробовать постепенно повышать значение N до 20. Конкретное значение вашей величины N, при которой достигается стабильная работа rclone, определите экспериментально.
 

вторник, 12 марта 2024 г.

Монтирование облака с помощью rclone через форму выбора

Цель: смонтировать выбранное облако через rclone c помощью вызова кнопки запуска приложения.

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

Несмотря на то что в источниках программного обеспечения Ubuntu или Linux Mint имеется программа графического управления работой rclone (rclone-browser) вопрос о монтировании выбранного облака можно решать через свой скрипт.

Пример:

В указанной форме в столбце выбора щелчком мыши выделяется желаемое облако и после нажатия кнопки OK оно будет смонтировано в папку для монтирования внешних ресурсов. К примеру, в рассматриваемом скрипте это папка /home/minter/Mount

Создаётся файл sh с содержанием (пример):

#!/bin/bash
zenity --width=50 --height=330 --list --title="Монтировать облако" --checklist --editable --column=" Выбор " --column " Имя по rclone " --text= "" "dropbox" "" "koofr" "" "pcloud" "" "mailru" "" "yandex" "" "mega"  "" "onedrive" "" "box.net" "" "jottacloud" > /tmp/mount.txt
rclone mount --vfs-cache-mode writes $(cat /tmp/mount.txt): /home/minter/Mount &
exit

Первые три строки определяют форму запроса (см. рисунок выше) и осуществляют запись выбранного облака в файл /tmp/mount.txt

Если ничего не будет выбрано или окно формы будет закрыто по кнопке закрытия окна, то ничего смонтировано не будет, так как создаваемый файл /tmp/mount.txt будет пустым, то есть будет иметь нулевой размер. 

Записи dropbox, koofr, pcloud ... в качестве примера. Вам необходимо будет указать имя подключения, которое было назначено при настройке ПО rclone. Эти имена можно подсмотреть в файле настроек rclone. Для этого откройте файл rclone.conf, который расположен по пути ~/.config/rclone в вашей домашней папке. Имя подключения будет указано в квадратных скобках, например, [kgm2]. 

Далее запускается собственно монтирование облака в выбранную папку. В данном примере это папка /home/minter/Mount  Имя подключения считывается из файла /tmp/mount.txt и подставляется в команду монтирования через $(cat /tmp/mount.txt):  Обратите внимание, что в команде подключения всего облака имя подключения должно завершаться двоеточием (синтаксис rclone). Следующий за командой монтирования символ & означает, что завершение выполнения монтирования облака ожидаться не будет и собственно скрипт sh прекратит свою работу. Активной останется только выполняемая команда 

rclone mount --vfs-cache-mode writes $(cat /tmp/mount.txt): /home/minter/Mount

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

☑  Дополнение. Как вариант, можно организовать автоматическое открытие папки Mount в новом окне файлового менеджера. При этом производится дополнительная проверка файла mount.txt на введённое значение. То есть, если нажимается кнопка "Отменить", то в файл mount.txt ничего записано не будет и не будет производиться ни попытки монтирования, ни автоматического открытия папки Mount. Пример:

#!/bin/bash
zenity --width=50 --height=330 --list --title="Монтировать облако" --checklist --editable --column=" Выбор " --column " Имя по rclone " --text= "" "dropbox" "" "koofr" "" "pcloud" "" "mailru" "" "yandex" "" "mega"  "" "onedrive" "" "box.net" "" "jottacloud" > /tmp/mount.txt
if [ -s /tmp/mount.txt ]; then
    rclone mount --vfs-cache-mode writes $(cat /tmp/mount.txt): /home/minter/Mount &
    #  ✔  Дать системе время, чтобы она успела смонтировать облако.
   
#  Цифру (число задержки в секундах) подберите экспериментально,
   
#   исходя из быстродействия вашей системы и скорости Интернет.
    sleep 2
❗ Выберите одну из двух следующих строк, исходя из применяемого Вами менеджера файлов (графического окружения)
    
nemo --tabs /home/minter/Mount & # для Cinnamon
    thunar /home/minter/Mount & # для xfce
  else
    :
fi
exit

Создайте в своей папке ~/.local/share/applications файл (например, mount.desktop), который будет являться кнопкой запуска скрипта sh  Пример:

[Desktop Entry]
Name=Mount cloud
Exec=полный_путь_до_скрипта_sh
Comment=Смонтировать Cloud
Terminal=false
PrefersNonDefaultGPU=false
Icon=имя_значка_под_которым_ кнопка_будет_отображаться
Type=Application
Categories=GTK;Development;
Name[ru]=Смонтировать облако

В приводимом примере кнопка отображается в меню "Разработка". Если нужно чтобы кнопка отображалась в "Прочие", то удалите эту строку.

Строка Name[ru]= указывает, что кнопка запуска должна отображаться не как "Mount cloud", а как "Смонтировать облако". Строка не обязательная и её также можно убрать.

Сделайте созданный файл исполняемым.

пятница, 8 декабря 2023 г.

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

Цель: передавать данные (файлы и/или папки с файлами) на облачные ресурсы через rclone c помощью вызова кнопки запуска приложения.

Ожидаемый результат: все что расположено в специальной папке будет передано в выбранное облако, а исходные данные в папке передачи будут удалены.

Необходимые условия:
1) папка, откуда будут передаваться данные;
2) установленное и соответствующим образом настроенное ПО rclone;
3) сценарий для указания адреса передачи в синтаксисе rclone (скрипт bash);
4) сценарий запуска передачи (скрипт bash);
5) собственно сама кнопка запуска.

Сценарий для указания адреса передачи в синтаксисе rclone

#!/bin/bash
out=/tmp/to.txt # файл, в который будет записан адрес передачи
zenity --width=200 --title "Cloud" --text="Адрес в формате rclone:" --entry > $out
exit


Пример ввода адреса в формате rclone: ydn1:Audio
Если в адресе имеются вложенные папки, то, к примеру, ydn1:Audio/папка1/папка2 
Если адрес имеет пробелы, то вводимые данные берутся в кавычки: "адрес"

Сценарий запуска передачи (пример)

#!/bin/bash
/home/minter/Tools/scripts/modules/what-cloud.sh
rclone move --delete-empty-src-dirs --progress /home/minter/Документы/Send $(cat /tmp/to.txt)
exit

$(cat /tmp/to.txt) подставляет в строку команды считанное из файла /tmp/to.txt значение адреса передачи.

Строка move --delete-empty-src-dirs --progress указывает rclone, что должно быть осуществлено перемещение данных в облако (со всей иерархией папок), а оставшиеся после перемещения данных пустые папки должны быть удалены. При этом передача будет сопровождаться отображением хода процесса, например:


Кнопка запуска приложения

На рабочем столе создаётся значок запуска (xfce), либо кнопка запуска (Cinnamon), в которой указывается вызов сценария запуска (передачи), в параметрах которой указано выполнение в терминале. Созданный значок запуска (кнопку запуска) переместите в свою папку ~/.local/share/applications  Значок/кнопка запуска представляет из себя исполняемый файл .desktop, который можно редактировать в текстовом редакторе. Пример:

[Desktop Entry]
Version=1.0
Type=Application
Name=Upload
Comment=
Exec=/home/minter/Tools/scripts/modules/upload.sh
Icon=mintupload
Path=
Terminal=true
StartupNotify=false

По умолчанию, значок/кнопка запуска будет отображаться в категории "Прочее" (xfce) или "Прочие" (Cinnamon). Для указания другой категории добавьте в файл строку Categories= , в которой после знака равенства укажите необходимые значения. Например, для "Разработка" (xfce) или "Программирование" (Cinnamon) это будет иметь вид Categories=GTK;Development; , а для категории "Интернет" – Categories=Network;

Если надо, чтобы кнопка отображалась по-русски, то добавьте строку Name[ru]= и после знака равенства напишите русский текст, например, Передача файлов (без кавычек).

После успешного завершения процесса передачи окно терминала будет закрыто автоматически.

суббота, 11 марта 2023 г.

Удаление остатков от работы с rclone в каталоге .cache

При инспекции занимаемого места с домашнем каталоге в ~/.cache были обнаружены остатки от передаваемых когда-то данных через rclone и rclone-browser. остатки представляли собой папки с вложенными папками и файлами в них типов pdf, epub, png, fb2, rtf  И хотя они занимали не так уж и много места ~ 73 МБ, стремление к перфекционизму требовало их удаления, причём по принципу "настроил и забыл".



В стартовый сценарий при входе пользователя в систему были внесены команды поиска и удаления таких каталогов (папок), сроком "старше 48 часов" (mtime +2). 

Про удаление через N дней читайте здесь.

find /home/user/.cache/rclone/vfsMeta -mtime +2 -exec rm -rdf {} \;
find /home/user/.cache/rclone/vfsMeta -mtime +2 -exec rm -rdf {} \;

user ‒ это имя домашнего каталога пользователя user. У вас оно будет своё.

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

четверг, 20 января 2022 г.

Выполнение действий по условию – если число файлов больше 10


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

Реализацию данной задачи было решено возложить на скрипт bash, запускаемый через пользовательское задание cron.

Указанный ниже скрипт на bash действует по алгоритму:

1. Вычисляется число файлов в папке для отправки.

2. Полученное значение сравнивается с установленным значением 10.

3. Если в результате сравнения будет выяснено, что число файлов в папке для отправки больше 10, то запускается задание на отправку. Если выяснено, что число файлов 10 и менее, то задание на отправку не запускается. Отправка производится программой rclone.

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

if [ $value2 -qt $value1 ]; then

здесь не работает, а работает

if (( $value2 > $value1 )); then

Поэтому текст скрипта будет следующим:

#!/bin/bash
log=место_файла_протокола/$(date '+%d').имя_файла.txt
sm=... # указывается путь к папке отправки
dm=... # указывается путь к папке получателя
# если файл протокола отсутствует, то он создаётся
if [ -f $log ]; then
  :
else
  > $log
fi
echo "     " >> $log
find $sm -type f | wc -l > /tmp/files.txt
value1=10
value2=`cat /tmp/files.txt`
if (( $value2 > $value1 )); then
     echo "$(date '+%H.%M.%S') -- файлов в папке – $value2" >> $log
     # запуск задания на отправку файлов и папок с файлами через команду перемещения
     echo "            запуск задания отправки" >> $log 
     rclone move --delete-empty-src-dirs $sm $dm
     echo "$(date '+%H.%M.%S') -- завершение задания отправки" >> $log
  else
     echo "$(date '+%H.%M.%S') -- отправка не произведена" >> $log
     echo "            файлов в папке – $value2" >> $log
fi
echo "     " >> $log
exit

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

🔰  Дополнительные пояснения. Число пробелов с строках записи в протокол событий составляет 12, что объясняется желанием удобства чтения протокола, то есть помещать следующую запись текста прямо под предыдущей, например:

17.30.01 -- файлов в папке – 11
                   запуск задания отправки
17.31.19 -- завершение задания отправки

Для автоматического удаления удаления устаревших файлов протоколов можно использовать команду:

find место_файлов_протоколов -name "*.txt" -mtime +N -delete

N является числом полных суток, например 3. То есть, если с момента создания файла протокола прошло 72 часа и менее, то файл не удаляется, а вот если прошло 72 часа 1 минута и более, то файл уже подлежит удалению. Подробности можно прочитать здесь в комментариях 5 и 6.

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

Koofr – пароль для rclone


C 1 января 2021 года для доступа к облаку Koofr невозможно будет использовать ПО rclone с паролем вашей учётной записи Koofr. Для использования rclone необходимо создать отдельный пароль, не совпадающий с паролем вашей учётной записи.

Для создания пароля зайдите в аккаунт по интерфейсу веб и последовательно вызовите "Настройки" (выпадающее меню при щелчке по аватару учётной записи) и "Пароль":



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


Впишите в поле rclone и нажмите на кнопку (справа) "Generate". Появится всплывающее окно с вашим паролем для rclone.


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

Этот пароль в любое время можно изменить, удалив старый и создав новый. Для этого в строке сгенерированного пароля для rclone нажмите значок "минус" и подтвердите удаление пароля.



вторник, 14 января 2020 г.

Выключить компьютер после выполнения задания через cron


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

Создание резервных копий производится через сценарий sh с использованием ПО rclone, запуск которого задаётся через пользовательское задание cron.

Но простым включением в сценарий команды shutdown или shutdown -h now желаемый результат не достигается (подробности здесь). Команда выключения /sbin/poweoff должна быть выполнена под правами суперпользователя, что влечёт за собой команду sudo и сопутствующий ей ввод пароля для повышения полномочий пользователя в системе.

Поэтому для реализации этой задумки необходимо сделать следующее:

1) Разрешить пользователю системы, от имени которого будет запущено задание cron, выполнять команду sudo /sbin/poweroff без ввода пароля;

2) добавить в конец сценария на bash команду sudo /sbin/poweroff

Чтобы выполнить команду sudo /sbin/poweroff без ввода пароля необходимо внести изменения в файл /etc/sudoers

sudo xed /etc/sudoers (или sudo gedit /etc/sudoers)

Вписать строку  имя_пользователя ALL=NOPASSWD: /sbin/poweroff  Чтобы изменения вступили в силу перезагрузите систему.

Имя_пользователя, под которым Вы работаете в системе (если до сих пор его не знаете) можно посмотреть, запустив терминал. Например, в моём случае имя пользователя minter, поэтому строка принимает значение:

minter ALL=NOPASSWD: /sbin/poweroff

Если обнаружите, что после внесённых изменений файл sudoers оказался "испорчен", то выполните действия, описанные в этой публикации.

Ниже приводится пример сценария (скрипта на bash), запускаемого через cron, в ходе которого после 5 последовательно выполняемых заданий по резервированию данных через rclone через 5 секунд следует выключение компьютера.

#!/bin/bash
do=/home/minter/Tools/scripts/rclone
$do/books.sh
$do/sa.sh
$do/ca.sh
$do/cur.sh
$do/sys.sh
sleep 5
sudo /sbin/poweroff


пятница, 22 ноября 2019 г.

Проверка изменения содержания каталога через сравнение файлов в bash и выполнение различных действий в зависимости от полученного результата

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

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

Синхронизация с облаком реализована через сценарий (скрипт sh, скрипт bash) запуска rclone (подробности). 

Способ решения задачи выбран через сравнение содержания каталога, экспортируемого в файл, который будет сравниваться с аналогичным файлом "за вчера". Задача запускается ежедневно по расписанию (пользовательское задание cron).

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

sudo apt install -y tree

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

tree путь_к_каталогу > файл.txt

Сравнение файлов будет производиться через команду cmp, в результате которой сравнение файлов будет произведено побайтово с выводом статуса 0, если файлы идентичны; 1 если различаются (источник цитирования), например:

if cmp -s  file1  file2 ; then
  echo "Одинаковые"
else
  echo "Они такие разные!"
fi

В приводимом ниже примере сценария (скрипт sh, скрипт bash) назначение команд в котором поясняется после символа комментария # :

#!/bin/bash
# экспорт содержания "за вчера" (list old)
listo=/home/minter/Tools/scripts/temp/listo.txt
# экспорт содержания "за сегодня" (list new)
listn=/home/minter/Tools/scripts/temp/listn.txt
# каталог компьютера, подлежащий синхронизации
sm=/home/minter/FBbooks
# ресурс облака, в который производится синхронизация
# пояснения команд см. в описании команд rclone
dm=MEGA-3:fb2
tree $sm > $listn
if cmp -s $listo $listn; then
   # каталог не изменялся, синхронизация не нужна
   # никаких действий не производится
   :
else
   # синхронизировать каталог компьютера с облаком по правилу
   # "источник - получатель" (источником является компьютер)
   rclone sync $sm $dm
   # перезаписать файл содержания каталога "за вчера"
   # содержанием "за сегодня"
   cp $listn $listo
exit

В реальной эксплуатации вместо команды rclone sync $sm $dm мной используется сценарий синхронизации каталога на 2 различных облачных хранилища: Диск Яндекс и MEGA. Выполнение операций протоколируется с указанием времени. Кроме того, в отдельные файлы экспортируются данные о занятом и доступном дисковом пространстве каждого из облачных хранилищ (подробности).

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

#!/bin/bash
date=`date '+%d'`
acy=/home/minter/Clouds/rclone/Reports/$date.account-yd-libres.txt
acm=/home/minter/Clouds/rclone/Reports/$date.account-mega-3.txt
log=/home/minter/Clouds/rclone/Reports/$date.rclone-libres.txt
sm=/home/minter/FBbooks
dm1=Libres:FBbooks
dm2=MEGA-3:fb2
if [ -f $log ]; then
  :
else
  > $log
  time=`date '+%H-%M-%S'`
  echo "$time -- ebooks log created" >> $log
fi
echo "$time -- start yandex ebooks synchronization" >> $log
rclone sync $sm $dest1
echo "$time -- yandex ebooks synchronized" >> $log
echo "     " >> $acy
rclone about Libres: >> $acy
sleep 5
echo "$time -- start mega ebooks synchronization" >> $log
rclone sync $sm $dm2
echo "$time -- mega ebooks synchronized" >> $log
echo "     " >> $acm
rclone about MEGA-3: >> $acm
exit

воскресенье, 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 за столь замечательный программный продукт, который в значительной степени облегчил реализацию моих потребностей в решениях задач по резервированию нужной для меня информации на различные ресурсы облачного хранения данных.