Синхронизация в Яндекс Диск через rlocne

В этой статья я расскажу, как выполняется настройка синхронизация в Яндекс Диск через rlocne. У Яндекс Диска есть консольный клиент, но мне не хватает в нем возможности синхронизации сразу нескольких директорий, которые располагаются на разных дисках.

Для настройки синхронизации я буду использовать Linux Mint 21.1 Cinnamon.

Предварительная настройка

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

Сначала необходимо установить клиент rclone:

curl https://rclone.org/install.sh | sudo bash

Выполним конфигурацию нового профиля:

rclone config

Сначала нужно создать новую конфигурацию:

n/s/q> n

Укажите имя конфигурации:

name> YDisk

Теперь необходимо выбрать шаблон конфигурации. На момент подготовки публикации шаблон для Яндекс диска числился под номером 47. Но при настройке в вашем окружении проверьте актуальность номера.

Storage> 47

Yandex Client Id и Yandex Client Secret оставляем пустыми:

Option client_id.
OAuth Client Id.
Leave blank normally.
Enter a value. Press Enter to leave empty.
client_id> 

Option client_secret.
OAuth Client Secret.
Leave blank normally.
Enter a value. Press Enter to leave empty.
client_secret> 

Выполнять расширенную конфигурацию я не буду:

y/n> n

Теперь нужно настроить автоматическую аутентификацию:

y/n> y

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

Необходимо предоставить rclone соответствующие разрешения:

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

Подтверждаем сохранение конфигурации:

y/e/d> y

Пример консольного вывода в случае успешного завершения конфигурации подключения к Яндекс Диску:

Current remotes:

Name                 Type
====                 ====
YDisk                yandex

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> q

Следующим шагом я покажу, как можно настроить список директорий для синхронизации.

Есть еще утилита графического управления конфигурациями. Если удобно, то можете использовать её:

rclone rcd --rc-web-gui

Синхронизация в Яндекс Диск

После завершения процедуры настройки подключения к Яндекс Диску вы можете посмотреть доступные дисковые квоты:

rclone about YDisk:
roman@mintwks:~$ rclone about YDisk:
Total:   2.010 TiB
Used:    532.964 GiB
Free:    1.489 TiB
roman@mintwks:~$ 

Или посмотреть список дриректорий:

rclone lsd --max-depth 1 YDisk:
roman@mintwks:~$ rclone lsd --max-depth 1 YDisk:
           0 2023-05-19 22:03:19        -1 Inst
           0 2022-11-24 22:01:28        -1 Скрины
           0 2022-11-25 08:51:06        -1 Фото
           0 2022-11-22 13:46:59        -1 Фотокамера

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

Мне будет достаточно простой синхронизации нескольких директорий на Яндекс Диск. Вот такой командой для каждой директории будет достаточно:

rclone sync /media/MULTIMEDIA/регистратор YDisk:/регистратор

, где “/media/MULTIMEDIA/регистратор” – путь до локальной директории. “YDisk:/регистратор” – путь до директории на Яндекс Диске.

Метод sync не только копирует в целевую директорию на Яндекс диске недостающие файлы, но и удаляет те файлы на Яндекс диске, которых нет в локальной директории. Очень обратите на этот нюанс внимание.

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

rclone sync /media/MULTIMEDIA/регистратор YDisk:/регистратор --progress

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

roman@mintwks:~$ rclone sync /media/MULTIMEDIA/регистратор YDisk:/регистратор --progress
Transferred:              0 B / 0 B, -, 0 B/s, ETA -
Checks:               280 / 280, 100%
Elapsed time:         2.4s
roman@mintwks:~$

У меня получился вот такой довольно тривиальный скрипт для синхронизации нужных мне директорий через задание cron:

nano scripts/synctoydisk.sh
#!/bin/bash
rclone sync /media/MULTIMEDIA/регистратор YDisk:/регистратор
rclone sync /media/MULTIMEDIA/Скрины YDisk:/Скрины
rclone sync /media/MULTIMEDIA/Фото YDisk:/Фото

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

nano scripts/synctoydisk_interactive.sh
#!/bin/bash
rclone sync /media/MULTIMEDIA/регистратор YDisk:/регистратор --progress
rclone sync /media/MULTIMEDIA/Скрины YDisk:/Скрины --progress
rclone sync /media/MULTIMEDIA/Фото YDisk:/Фото --progress

Не забудьте выдать разрешения на запуск для скриптов:

chmod +x scripts/synctoydisk*
ls -l scripts/synctoydisk*
roman@mintwks:~$ chmod +x scripts/synctoydisk*
roman@mintwks:~$ ls -l scripts/synctoydisk*
-rwxrwxr-x 1 roman roman 556 Jun  3 22:08 scripts/synctoydisk_interactive.sh
-rwxrwxr-x 1 roman roman 322 Jun  3 22:03 scripts/synctoydisk.sh
roman@mintwks:~$

Самый заключительный этап – это настройка запуска синхронизации по расписанию. Поскольку мой компьютер не включен 24/7, то я буду использовать anacron. В Linux Mint 21 anacron уже установлен. Ядобавлю задание, которое будет запускаться раз в день:

cat /etc/anacrontab
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
HOME=/root
LOGNAME=root

# These replace cron's entries
1       5       cron.daily      run-parts --report /etc/cron.daily
7       10      cron.weekly     run-parts --report /etc/cron.weekly
@monthly        15      cron.monthly    run-parts --report /etc/cron.monthly
@daily  10      synctoydisk     /bin/bash /home/roman/scripts/synctoydisk.sh

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

cp /home/roman/.config/rclone/rclone.conf /root/.config/rclone

После выполнения всех этих шагов синхронизация в Яндекс Диск через rlocne должна выполнять каждый день автоматически.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *