Пример настроек и использования rclone


Используемые термины: Rclone.
В данной инструкции рассмотрим разные примеры настройки утилиты rclone для хранения архивов в облаке. По мере возможности, данные примеры будут пополняться.
Установка rclone
В нашем примере мы будем работать с Linux. Для установки достаточно ввести команду:
curl https://rclone.org/install.sh | bash
Если в нашей системе нет curl, мы получим ошибку. Установка курл выполняется из репозитория.
а) для deb:
apt install curl
б) для rpm:
yum install curl
Мы должны увидеть что-то на подобие:
...
rclone v1.59.2 has successfully installed.
Now run "rclone config" for setup. Check https://rclone.org/docs/ for more details.
* в нашем примере установлен rclone версии 1.59.2.
Мы готовы к работе с rclone.
SSH
SSH является наиболее востребованным для передачи данных.
Для настройки вводим команду:
rclone config
Создаем новую конфигурацию:
n/s/q> n
Даем понятное название для нашего соединения:
name> SSH
Среди списка возможных шаблонов выбираем SSH/SFTP:
39 / SSH/SFTP
\ (sftp)
Storage> 39
Указываем адрес сервера SSH:
host> backup2.ssh.com
Имя учетной записи для подключения по SSH:
user> user22
Порт (как правило, это 22):
port> 22
На запрос использования пароля, отвечаем y (ввести свой пароль):
Option pass.
SSH password, leave blank to use ssh-agent.
Choose an alternative below. Press Enter for the default (n).
y) Yes, type in my own password
g) Generate random password
n) No, leave this optional password blank (default)
y/g/n> y
И дважды вводим пароль для подключения к SSH-серверу:
Enter the password:
password:
Confirm the password:
password:
На следующие вопросы можно не отвечать, просто нажимая Enter:
key_pem>
key_file>
y/g/n>
pubkey_file>
key_use_agent>
use_insecure_cipher>
disable_hashcheck>
Edit advanced config?
y) Yes
n) No (default)
y/n>
В конце мы увидим сводную информацию о добавляемой конфигурации. Если все верно, нажимаем Enter или вводим y:
Configuration complete.
Options:
- type: sftp
- host: backup2.ssh.com
- user: user22
- pass: *** ENCRYPTED ***
Keep this "SSH" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y
Выходим из консоли настройки rclone:
e/n/d/r/c/s/q> q
Проверить подключение и посмотреть содержимое SSH-каталога можно командой:
rclone ls SSH:
* где SSH — имя нашего соединения.
Готово. Действия, которые можно выполнить описаны ниже.
FTP
Выполним синхронизацию данных с удаленным каталогом на сервере FTP.
Переходим в режим конфигурирования rclone:
rclone config
Создаем новую конфигурацию:
n/s/q> n
Даем понятное название для нашего соединения:
name> BackupFTP
Среди списка возможных шаблонов выбираем FTP Connection:
16 / FTP
\ (ftp)
Storage> 16
* на момент обновления инструкции данный шаблон находится под номером 16.
Указываем адрес сервера FTP:
host> backup2.ftp.com
Имя учетной записи для подключения к серверу FTP:
user> user21
Порт (как правило, это 21):
port> 21
На запрос использования пароля, отвечаем y (ввести свой пароль):
FTP password
y) Yes type in my own password
g) Generate random password
y/g> y
И дважды вводим пароль для подключения к FTP-серверу:
Enter the password:
password:
Confirm the password:
password:
Если удаленный сервер для подключения требует TLS, в соответствующей опции задаем значение true:
tls> true
explicit_tls> true
* в противном случае оставляем поле незаполненным или ставим false.
На остальные опции отвечаем по умолчанию, нажимая Enter.
Подтверждаем, что ранее введенные данные верны:
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y
Готово. Мы можем посмотреть содержимое каталога на сервере FTP:
rclone ls "BackupFTP":
* обратите внимание, что так как название в данном примере задано с пробелами, мы пишем его в кавычках.
Готово. Действия, которые можно выполнить описаны ниже.
Пример дополнительный параметров:
При конфигурировании FTP система запрашивает, хотим ли мы сконфигурировать дополнительные параметры. Если нажать да:
Edit advanced config? (y/n)
y) Yes
n) No (default)
y/n> y
... та нам будут заданы дополнительные вопросы. Среди который, наиболее интересен про проверку валидации сертификата:
no_check_certificate> true
Очень часто, при настройке TLS на FTP-сервере используют самоподписанный сертификат. Данная опция позволит rclone не завершать работу с ошибкой при проверке валидности сертификата.
Яндекс диск
Для работы с яндекс диском необходима авторизация через браузер (OAuth). Для того, чтобы запустить утилиту на сервере без графики, мы должны сначала установить rclone на компьютер с GUI (это может быть Windows или Linux Desktop).
Скачать программу можно на официальном сайте.
И так, на компьютере с браузером запускаем конфигурацию утилиты:
rclone config
* если запускаем в Windows, то сначала переходим в каталог, куда скопировали утилиту.
Создаем новую конфигурацию:
n/s/q> n
Даем понятное название для нашего соединения:
name> YandexDisk
Среди списка возможных шаблонов выбираем Yandex Disk:
39 / Yandex Disk
\ "yandex"
Storage> 39
* на момент обновления инструкции данный шаблон находится под номером 39.
Идентификатор клиента и пароль оставляем пустыми:
client_id>
client_secret>
На запрос внесениея расширенных настроек отвечаем отрицательно:
Edit advanced config?
y) Yes
n) No (default)
y/n> n
На вопрос использования автоконфигурации отвечаем y>:
Use auto config?
* Say Y if not sure
* Say N if you are working on a remote or headless machine
y) Yes (default)
n) No
y/n> y
Откроется окно браузера — вводим наши логин и пароль для доступа к Яндекс диску. В следующем окне кликаем по Log in as ...:
Мы должны увидеть сообщение об успешном прохождении аутентификации OAuth:
Success!
Закрываем браузер. Выходим из конфигурирования rclone:
e/n/d/r/c/s/q> q
Смотрим содержимое конфигурационного файла. Наши действия немного будут различаться в зависимости от системы, в которой мы работаем.
а) в системах на базе Linux:
cat ~/.config/rclone/rclone.conf
б) для систем Windows:
type %USERPROFILE%\.rclone.conf
Мы увидим что-то на подобие:
[YandexDisk]
type = yandex
token = {"access_token":"AQAE5oIyAALSwlFhI9k0ssqBbqEyY","token_type":"bearer","refresh_token":"1:Jmlj4bnDSJIPvL:bsnTE1lkzA_5ZjikoExn2zWQIab0qReJJdAQtZnPd3:51Fx5SUiuKS8ZAtw","expiry":"2022-10-29T15:29:05.484212934+03:00"}
* конфигураций может быть несколько — нас интересует yandex с тем именем, которое мы задавали в настройке.
Копируем содержимое и переходим на целевой сервер.
Открываем конфигурационный файл для rclone:
vi ~/.config/rclone/rclone.conf
* если в нашей системе уже есть конфигурационный файл и его путь отличается от нашего, то можено ввести команду:
rclone --help | grep -e '--config'
... которая покажет путь до него.
Ввносим содержимое, которое скопировали, например:
[YandexDisk]
type = yandex
token = {"access_token":"AQAE5oIyAALSwlFhI9k0ssqBbqEyY","token_type":"bearer","refresh_token":"1:Jmlj4bnDSJIPvL:bsnTE1lkzA_5ZjikoExn2zWQIab0qReJJdAQtZnPd3:51Fx5SUiuKS8ZAtw","expiry":"2022-10-29T15:29:05.484212934+03:00"}
Готово, можно проверить командой:
rclone lsd YandexDisk:
Полезные команды для работы с Rclone
Просмотр списка контейнеров в хранилище:
rclone lsd [remote]:
Создание нового контейнера:
rclone mkdir [remote]:[имя контейнера]
* где [имя контейнера] — путь до конечной папки.
Просмотр списка файлов в контейнере:
rclone ls [remote]:[имя контейнера]
Копирование файлов с локальной машины в хранилище:
rclone copy /home/local/directory [remote]:[имя контейнера]
Синхронизация файлов на локальной машине и в хранилище:
rclone sync /home/local/directory [remote]:[имя контейнера]
Синхронизация файлов в хранилище с файлами на локальной машине:
rclone sync [remote]:[имя контейнера] /home/local/directory
При выполнении операций копирования и синхронизации rclone проверяет все файлы по дате и времени изменения или md5-сумме. Из директории-источника в директорию назначения передаются те файлы, которые были изменены.
Возможные проблемы
Пока, я столкнулся с единственной проблемой.
Rclone копирует по-кругу один файл
В моем случае, программа копировала все данные на удаленное хранилище и после этого, вместо того, чтобы завершить работу, начинала копировать файл(ы) по новой.
Причина: как выяснилось, проблема в версии приложения.
Решение: в моем случае, помогла установка более ранней версии приложения. Список можно увидеть на официальном сайте.