rclone: облако из терминала — без браузера, без трея, без лишних телодвижений

Представьте вечер пятницы. Сайт вчера обновили, всё работает, и вы наконец решаете сделать нормальный бэкап. Открываете браузер, заходите в Google Drive, перетаскиваете архив… И понимаете, что терабайт так не зальёшь, а если и зальёшь — то к понедельнику. Знакомо?

Потом вы узнаёте про официальные клиенты облаков. Они решают проблему загрузки, но создают новую: висят в трее, жрут память, синхронизируют всё подряд и не умеют работать по расписанию. А ещё у вас их может быть несколько — Google, Яндекс, S3-бакет — и для каждого свой клиент.

Здесь на помощь приходит rclone (произносится «ар-клон»). Это одна консольная утилита, которая умеет разговаривать с полусотней облачных хранилищ и превращать любое из них в обычную папку на вашем сервере. Никаких окон, никаких треев — просто команды в терминале, которые можно ставить в расписание. Сегодня пройдём путь от установки до автоматического бэкапа, который работает сам.

Одна утилита — весь ваш облачный парк

rclone работает со всеми, с кем вы вообще могли столкнуться: Google Drive, Яндекс Диск, Dropbox, OneDrive, Mega, S3-совместимые хранилища (AWS, Selectel, VK Cloud, DigitalOcean Spaces), а ещё SFTP, FTP и WebDAV. Для rclone не важно, что внутри — облако или чужой сервер, он относится ко всему одинаково: как к набору файлов, к которым можно обращаться по имени.

Выглядит это так. Один раз настраиваете хранилище, даёте ему короткое имя — например, gdrive — и дальше любая команда выглядит как работа с обычной папкой, только с двоеточием после имени:

rclone lsd gdrive:

Строка выше просто показывает список папок в корне вашего Google Drive. Всё, больше ничего устанавливать не нужно. Двоеточие — это маркер, который отделяет «облачную» папку от локальной: если его забыть, rclone подумает, что gdrive — это обычная директория на диске, и полезет искать её на сервере.

Пять задач, которые rclone закрывает

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

Задача 1. Бэкап сайта в облако. Кладём папку сайта в Google Drive, исключая кэш, с логом работы:

rclone sync /var/www/html/ gdrive:site-backup --exclude "wp-content/cache/**" --log-file /var/log/rclone-backup.log

sync приводит облако в точное соответствие с источником: добавляет новое, обновляет изменённое, а лишнее в облаке — удаляет. Именно поэтому перед первым боевым запуском команду прогоняют с флагом —dry-run: он покажет список действий, ничего не трогая. Опечатка в пути при sync без проверки — и в облаке окажется не то, что вы хотели.

Задача 2. Держать папку в зеркале. Нужно, чтобы локальная папка и папка в облаке всегда совпадали, в обе стороны:

rclone bisync /home/user/documents yandex:documents --resync

bisync — это двусторонняя синхронизация: изменения с любой стороны подхватываются и переносятся на другую. Первый запуск делается с —resync, чтобы rclone договорился с облаком об исходной точке.

Задача 3. Переезд между облаками без скачивания. Решили уйти с одного облака на другое — rclone умеет копировать напрямую, файлы даже не лягут на ваш сервер:

rclone copy gdrive:photos mega:photos --transfers 4

—transfers 4 здесь — сколько файлов качать одновременно. Если облако начнёт ругаться ошибкой 429 (слишком много запросов), число снижают до двух-трёх или добавляют —tpslimit 5 — ограничение запросов в секунду.

Задача 4. Облако как диск. Можно подключить хранилище прямо в файловую систему и открывать файлы из проводника или в приложениях, как будто они лежат локально:

rclone mount gdrive: /mnt/gdrive --daemon

Для этого на сервере должен стоять fuse3, а пользователю нужны права на точку монтирования. Если mount падает — в девяти случаях из десяти дело именно в fuse3.

Задача 5. Тайник в облаке. Облако — это чужой сервер, и лежать там данные должны в зашифрованном виде. rclone умеет шифровать на лету: в облако уходит каша, ключ остаётся только у вас:

rclone cryptsetup gdrive:encrypted secret:

Дальше вы работаете с хранилищем secret:, а в облаке под именем encrypted лежат зашифрованные файлы. Даже если кто-то получит доступ к вашему облачному аккаунту — без ключа это просто мусор.

Первые десять минут: установка и подключение

Ставится rclone одной командой — официальный скрипт сам скачает свежую версию и положит бинарник в /usr/bin:

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

Тем, кто не любит выполнять скрипты из интернета, подойдёт пакет из репозитория (версия постарше, зато из проверенного источника):

sudo apt install rclone

Проверяем, что всё встало, и запускаем мастер настройки:

rclone version
rclone config

Мастер будет задавать вопросы: имя хранилища, тип (для Google Drive — n, для Яндекса — yandex, дальше по списку), и поведёт через авторизацию. Для облаков с OAuth rclone выдаст ссылку — открываете её в браузере, разрешаете доступ, вставляете полученный код обратно в терминал. Для S3-хранилищ просто вводите ключ доступа и секрет.

В итоге настройки лягут в файл /root/.config/rclone/rclone.conf, и в нём будет запись примерно такого вида:

[gdrive]
type = drive
token = {"access_token":"...","expiry":"..."}

Этот файл — такой же секрет, как SSH-ключ. Внутри токены доступа к вашему облаку, и кто прочитал конфиг — тот получил ваше облако целиком. Поэтому rclone.conf не коммитят в git, не пересылают в чатах и не кладут в публичные бэкапы.

Первая проверка — список папок в облаке, а затем пробный перенос одного файла:

rclone lsd gdrive:
rclone copy /root/test.txt gdrive:/test/

copy, в отличие от sync, ничего не удаляет — он просто копирует. Поэтому copy безопасен для первых экспериментов: даже если что-то пойдёт не так, в облаке просто появится лишний файл, а не пропадёт нужный.

Настройка под себя: скорость, мусор, тишина

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

rclone sync /var/www/html/ gdrive:site-backup --bwlimit 5000

Чтобы не тащить в облако мусор вроде логов и кэша, используется —exclude. Он работает как фильтр по маске и может встречаться в команде несколько раз:

rclone sync /var/www/html/ gdrive:site-backup --exclude "*.log" --exclude "wp-content/cache/**"

В командах, которые уходят в cron, удобно добавлять —log-file: вывод в консоль там всё равно никто не увидит, а в файле останется полная история работы. Раз в неделю заглядываете в лог и видите, что бэкапы ходят исправно.

Чтобы работало без вас

Ручной бэкап — это не бэкап: забыли запустить — считайте, что его не было. Кладём задачу в cron, например, каждый день в 3 часа ночи:

0 3 * * * rclone sync /var/www/html/ gdrive:site-backup --exclude "wp-content/cache/**" --log-file /var/log/rclone-backup.log

Дальше проверяем не сам процесс, а лог: размер файла растёт, ошибок нет — значит, всё в порядке. Сломалось — лог покажет, где именно.

Пара деталей, о которых стоит помнить. У облаков есть лимиты на количество файлов в папке и на запросы к API: для миллиона мелких файлов облако — не лучший выбор, лучше упаковать их в архив. И ещё: у Google Drive и Яндекса бывают лимиты на скачивание больших объёмов — если упёрлись в 429, снижайте —transfers и добавляйте —tpslimit.

Коротко о главном

rclone закрывает весь спектр облачных задач одной утилитой: бэкап по расписанию, зеркалирование папок, переезд между хранилищами, монтирование облака как диска и шифрование данных перед загрузкой. Он бесплатный, с открытым исходным кодом, работает на Linux, Windows и macOS, а настройки занимают один файл.

Главное, что стоит вынести: перед sync — всегда —dry-run, двоеточие в имени хранилища — обязательно, а rclone.conf должен лежать там, где его никто, кроме вас, не увидит. Остальное — дело привычки, и через неделю вы уже не вспомните, как жили без него.

👁️ 10

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

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

13 + одиннадцать =

root@phoenix901:~# connect
[×]

Получай дайджест раз в неделю.
Без спама.