Синхронизация файлов с облачным хранилищем при помощи rclone
Решим задачу организации автоматической синхронизации файлов и директорий между двумя компьютерами через облачное хранилище при помощи инструмента rclone
. Будет приведён минимальный пример, который можно масштабировать на любое количество компьютеров.
Конфигурация
Я обычно использую rclone
для двухсторонней и односторонней синхронизации базы знаний Obsidian.
- Двухстороннюю синхронизацию
компьютер <-> облако
использую для синхронизацию заметок и файлов между компьютерами через облако. - Одностороннюю синхронизацию
облако -> компьютер
использую для доставки заметок и файлов на сервер этого сайта, обратная синхронизация меня не интересует, более того, она может быть опасна порчей файлов в облачном хранилище.
Итак, необходимо синхронизировать содержимое следующих директорий:
folder-cloud
- директория в облачном хранилище Mail.ru;folder-rw
- директория на 1-м компьютере в режиме двусторонней синхронизации (чтение-запись);folder-readonly
- директория на 2-м компьютере в режиме односторонней синхронизации (чтение).
На двух компьютерах скачиваем и устанавливаем
rclone
1.На двух компьютерах создаём подключение к облачному хранилищу Mail.ru.
rclone config ... name> username ... Storage> 29 # mailru ... user> username@mail.ru ... Password. ... Choose an alternative below. y) Yes, type in my own password g) Generate random password y/g> y Enter the password: password: ... speedup_enable> 1 ...
На двух компьютерах настраиваем синхронизацию раз в 2 минуты при помощи
crontab -e
.На 1-м настраиваем двухстороннюю синхронизацию директории
folder-rw
.*/2 * * * * /usr/bin/rclone bisync --force --recover --create-empty-src-dirs --conflict-resolve=newer --conflict-loser=delete "$HOME/folder1-rw" "username:folder-cloud" --log-file="$HOME/.folder1-rw-bisync.log"
, где
bisync
- двухсторонняя синхронизация,--force
- синхронизировать, даже если удаляется или перемещается большое количество файлов,--recover
- автоматически восстанавливаться после сбоя,--create-empty-src-dirs
- синхронизировать даже пустые вложенные директории,--conflict-resolve=newer --conflict-loser=delete
- в случае конфликта двух файлов, оставлять самый свежий, старый удалять,"$HOME/folder1-rw"
- путь к директории на компьютере с которой идёт синхронизация,"username:folder-cloud"
- директория в облачном хранилище с которой синхронизируется директорияfolder1-rw
,--log-file="$HOME/.folder1-rw-bisync.log"
- писать отладочный журнал в указанный файл.
Для того, чтобы синхронизация заработала первый раз, необходимо запустить все три команды с параметром
--resync
.На 2-м настраиваем одностороннюю синхронизацию директории
folder-readonly
.*/2 * * * * /usr/bin/rclone sync --create-empty-src-dirs "username:folder-cloud" "$HOME/folder-readonly"
, где
sync
- односторонняя синхронизация"username:folder-cloud" -> "$HOME/folder-readonly"
,--create-empty-src-dirs
- синхронизировать даже пустые вложенные директории,"username:folder-cloud"
- директория в облачном хранилище откуда скачиваются файлы,"$HOME/folder-readonly"
- директория на компьютере куда записываются файлы из облачного хранилищаfolder-cloud
.
Примечания
- Настройки
cron
для выполнения периодической синхронизации (в нашем случае, раз в 2 минуты) удобно подбирать при помощи онлайн инструмента "crontab guru"2. - В данной заметке описаны базовые возможности
rclone
, так сказать вершина айсберга. Более полную информацию можно получить на официальном сайте3. rclone
поддерживает различные операционные системы, среди них Linux, macOS, Windows и Android. Версию для Android не проверял, так как на Android использую синхронизацию по WebDAV при помощи FolderSync4;- В Microsoft Windows для автоматизации синхронизации можно использовать планировщик заданий (Task Scheduler), в который добавить команды синхронизации выполняемые системой раз в две минуты.