Что такое rclone и зачем он нужен DevOps-инженеру в 2026 году
rclone это консольный файловый менеджер для облачных хранилищ: один бинарник на Go, одинаковый синтаксис команд и поддержка десятков сервисов, включая S3 и S3-совместимые бакеты, Google Drive, Яндекс Диск, WebDAV, Backblaze B2, Hetzner Storage Box, Dropbox, OneDrive, Mega, SFTP и FTP.
Ставят его под четыре повторяющиеся задачи: ночное резервное копирование, зеркалирование бакета между провайдерами, монтирование облака в файловую систему и разовая миграция больших объёмов данных. Ответ на главный вопрос короткий: если вы работаете в терминале, запускаете операции по расписанию или держите данные в нескольких хранилищах, rclone закрывает эти сценарии одной командой без графической оболочки и без лишних зависимостей.
- Резервное копирование. Ночной синк каталога с логами или дампами в S3, на Яндекс Диск или в Backblaze B2, с журналом и проверкой хешей.
- Миграция данных. Перенос архивов между провайдерами с ограничением полосы и контролем целостности. Такой сценарий подробно разобран в руководстве по миграции данных в облако.
- Монтирование. Облачный архив появляется в /mnt/archive, и приложение читает файлы как локальные.
- Служебные операции. Выгрузить 200 ГБ логов, сверить содержимое двух бакетов, удалить файлы старше 30 дней по фильтру.
Что даёт инструмент помимо списка провайдеров: шифрование данных на стороне клиента (remote типа crypt), ограничение скорости через --bwlimit, безопасную примерку любого действия через --dry-run, работу по SSH на сервере без графики и один исполняемый файл вместо Java или Electron. Конфигурация лежит в текстовом файле, поэтому её легко переносить между машинами и подставлять в скрипты.
Кому и когда rclone заменяет графические клиенты
Графический клиент удобен для ручной работы на десктопе. В четырёх ситуациях он проигрывает.
- Сервер без графики. На боевом хосте нет ни браузера, ни десктопного окружения, а rclone ставится одним пакетом.
- Расписание. Ночную выгрузку 500 ГБ из локального каталога в бакет запускает cron или systemd timer. В GUI это ручная операция у монитора.
- Несколько провайдеров сразу. Копирование между S3 и Яндекс Диском идёт напрямую между хранилищами, без промежуточной выгрузки файлов на локальный диск.
- Повторяемость. Одна и та же команда в скрипте, в CI и на ноутбуке даёт одинаковый результат, а параметры зафиксированы в конфиге.
Ограничение тоже стоит знать: десктопные клиенты дают предпросмотр файлов и корзину мышкой, а rclone требует помнить команды. Для разовых правок в облаке приложение быстрее, для регулярных задач rclone экономит время.
Ключевые возможности: sync, copy, mount, шифрование
Таблица соответствия «задача - команда» закрывает вопрос за полминуты.
| Задача | Команда или флаг |
|---|---|
| Посмотреть каталоги и файлы в хранилище | rclone lsd, rclone ls, rclone lsl |
| Узнать занятое место и квоту | rclone about remote: |
| Скопировать новое и изменённое, ничего не удаляя | rclone copy |
| Сделать приёмник зеркалом источника | rclone sync |
| Перенести данные и удалить их в источнике | rclone move |
| Смонтировать облако как локальный диск | rclone mount |
| Зашифровать данные на стороне клиента | remote типа crypt |
| Сверить содержимое по хешам | rclone check |
| Ограничить полосу | --bwlimit |
| Показать план операции без выполнения | --dry-run |
Дальше разбираем установку, создание remote и каждую из этих команд с примерами.
Установка rclone на Linux, Windows и macOS
После любого способа установки проверка одна: rclone version. Ориентируйтесь на актуальную ветку 1.6x и выше и сверяйтесь со страницей загрузок проекта: провайдеры добавляют новые схемы авторизации, и версия из репозитория дистрибутива может их не знать.
Linux: apt, dnf, snap или официальный скрипт
Пакетные менеджеры дают стабильную версию и обновление вместе с системой.
sudo apt update && sudo apt install rclone # Debian, Ubuntu sudo dnf install rclone # RHEL, Fedora sudo pacman -S rclone # Arch
Snap обновляется сам, но работает в изоляции: доступ к каталогам выдаётся отдельно, и путь к конфигу может оказаться недоступен из изолированного окружения.
sudo snap install rclone
Официальный install-скрипт даёт последнюю версию: скачайте install.sh со страницы загрузок проекта и запустите через sudo bash install.sh. Минус в том, что обновление тоже придётся запускать вручную. Проверка одна и та же:
rclone version
В выводе смотрите первую строку, например rclone v1.6x.x. Если нужен редкий провайдер или свежая схема OAuth, ставьте сборку с сайта проекта, а не из репозитория.
Windows: winget, choco, scoop и ручная установка
Три менеджера пакетов покрывают почти все рабочие станции и серверы Windows:
winget install Rclone.Rclone choco install rclone scoop install rclone
Ручной вариант: скачать zip-архив, распаковать в C:\Tools\rclone и добавить каталог в PATH. Проверка в PowerShell:
rclone version
Для rclone mount на Windows нужен WinFsp: без него монтирование завершится ошибкой о недоступном FUSE. Установщик берётся с официального сайта проекта. Само монтирование требует прав администратора, а для постоянной работы его удобнее оформить службой.
macOS: Homebrew и проверка версии
brew install rclone rclone version
Ручная установка с сайта проекта тоже работает, но Homebrew проще обновлять. Для mount понадобится macFUSE, а в свежих версиях macOS системное расширение нужно разрешить в разделе «Конфиденциальность и безопасность» настроек системы, иначе команда упадёт с сообщением о недоступном FUSE. Права root для монтирования в пользовательский каталог не нужны.
Настройка удалённого хранилища через rclone config
Конфигурация создаётся интерактивно командой rclone config. Меню предлагает три действия: n для нового remote, e для правки существующего, d для удаления. Дальше вводите имя remote и выбираете тип хранилища по номеру. Remote это алиас, который потом используется во всех командах: gdrive:, s3prod:, yandex:.
Имя remote подставляется в начало пути: s3prod:backups/2026 означает каталог backups/2026 в бакете, привязанном к remote s3prod. Путь после двоеточия необязателен, тогда работа идёт с корнем хранилища.
Создание remote для S3-совместимого хранилища
Последовательность шагов для AWS S3, MinIO, Яндекс Object Storage и других S3-совместимых сервисов:
- Запустите rclone config и выберите n.
- Введите имя remote, например s3prod.
- Выберите тип s3 из списка.
- Укажите провайдера: AWS, MinIO, Other и так далее.
- Введите access_key_id и secret_access_key.
- Для S3-совместимых сервисов заполните endpoint со схемой http или https, для AWS поле оставляют пустым: адрес подставляется автоматически.
- Укажите регион, если провайдер его требует.
- Сохраните конфигурацию и выйдите из меню.
Итоговый фрагмент конфига выглядит так:
[s3prod] type = s3 provider = MinIO access_key_id = ключ_доступа secret_access_key = секретный_ключ endpoint = (http или https)://хост:порт region = us-east-1
Проверка подключения:
rclone lsd s3prod:
Команда печатает список каталогов верхнего уровня. Пустой вывод означает, что бакет пуст либо ключ видит только часть пространства. Если ключи не хочется хранить в файле, задайте переменные окружения: RCLONE_CONFIG_S3PROD_TYPE, RCLONE_CONFIG_S3PROD_ACCESS_KEY_ID, RCLONE_CONFIG_S3PROD_SECRET_ACCESS_KEY и RCLONE_CONFIG_S3PROD_ENDPOINT. Конфиг останется чистым, а секреты будут жить в окружении или в секретах CI.
Подключение Google Drive и OAuth-авторизация
Google Drive подключается через OAuth, и это самый частый источник сомнений. Порядок такой:
- rclone config, затем n и имя remote, например gdrive.
- Тип хранилища drive.
- client_id и client_secret можно оставить пустыми, тогда используется общий идентификатор rclone. Свои значения задают, если нужен собственный лимит запросов.
- Scope: drive для полного доступа или drive.readonly, если запись не нужна.
- Авторизация в браузере по ссылке, которую выведет утилита.
На сервере без браузера выбирайте вариант без автоматического запуска браузера, а на локальной машине выполните rclone authorize "drive", пройдите авторизацию и перенесите полученную строку с токеном в консоль сервера. Проверка подключения и квоты:
rclone about gdrive:
Токен даёт доступ к вашему диску, поэтому права на файл конфига имеют значение. Как ограничивать доступ к учётным данным и выстраивать защищённую схему выгрузки, разобрано в руководстве по автоматизации бэкапов на Яндекс Диск и Google Drive.
Где хранится конфиг и как его защитить
| Система | Путь к конфигу |
|---|---|
| Linux | ~/.config/rclone/rclone.conf |
| macOS | ~/.config/rclone/rclone.conf |
| Windows | %APPDATA%\rclone\rclone.conf |
Другой путь задаётся флагом --config или переменной RCLONE_CONFIG, что удобно для сервисных учётных записей. Защита конфига сводится к четырём шагам:
- Выдайте права только владельцу: chmod 600 ~/.config/rclone/rclone.conf, для каталога достаточно 700.
- Зашифруйте конфиг командой rclone config password, если файл покидает пределы сервера. После шифрования rclone спросит пароль при запуске.
- Не коммитьте rclone.conf в git и не храните его в публичных бакетах или в образах контейнеров.
- Заведите отдельный remote для продакшена с минимально нужными правами и не используйте его для личных файлов.
Ключевые команды: навигация, copy, sync, move
Навигация и осмотр бакета: lsd, ls, lsl, about
Четыре команды покрывают осмотр хранилища без графического клиента:
rclone lsd remote: # каталоги с датами rclone ls remote:path # файлы с размерами rclone lsl remote:path # файлы с размерами и временем rclone about remote: # занятое место, свободное место, корзина
Флаг --max-depth 1 ограничивает глубину обхода и ускоряет вывод на больших бакетах. Команда rclone about поддерживается не всеми провайдерами: у S3-совместимых сервисов сведения о свободном месте обычно недоступны, а Google Drive и Яндекс Диск их отдают. Для изменения структуры есть rclone mkdir remote:path, для очистки - rclone delete с фильтрами и rclone purge, который удаляет каталог целиком вместе с содержимым.
rclone mkdir s3prod:backups/2026 rclone delete s3prod:backups --min-age 30d --dry-run rclone purge s3prod:old-test
Перед delete и purge прогоняйте ту же команду с --dry-run: утилита напечатает, что именно будет удалено.
copy vs sync vs move: что выбрать и когда
| Команда | Что делает | Удаляет в источнике? | Удаляет в приёмнике? | Типовой сценарий |
|---|---|---|---|---|
| copy | Копирует новые и изменённые файлы | Нет | Нет | Бэкап, выгрузка логов, публикация сборки |
| sync | Делает приёмник точной копией источника | Нет | Да | Зеркало бакета, реплика для стенда |
| move | Переносит файлы и удаляет их в источнике | Да | Нет | Разгрузка локального диска, миграция |
Примеры для трёх задач:
rclone copy /var/backups s3prod:server-backups --progress rclone sync /data s3prod:data-mirror --dry-run --progress rclone move /var/log/archive yandex:logs-archive --min-age 7d --delete-empty-src-dirs
Правило номер один: sync запускается только после sync с --dry-run, особенно на проде. Флаг печатает список операций, включая удаления, и ничего не меняет. Если в источнике случайно окажется пустой каталог вместо данных, реальный sync без проверки уничтожит копию в приёмнике.
Полезные флаги для всех трёх команд: --progress для индикатора в терминале, --transfers 4 и --checkers 8 для снижения нагрузки на диск и сеть, --checksum для сравнения по хешам, --exclude и --include для фильтров, --log-file и --log-level INFO для журнала. Сценарии бэкапа с готовыми скриптами и расписанием собраны в статье про резервное копирование сервера в 2026 году.
Проверка результата: rclone check и exit code
rclone check /data s3prod:data-mirror --one-way
Команда сравнивает файлы по хешам и печатает расхождения. На больших объёмах проверка занимает время, а для хранилищ без поддержки хешей применяется --size-only. Флаг --one-way проверяет только источник, не требуя совпадения списка файлов в обе стороны.
Код возврата важен в скриптах: 0 означает успех, любое другое значение - ошибку или расхождения. В bash проверка выглядит так:
rclone check /data s3prod:data-mirror --one-way || echo "check failed: $?"
Для критичных данных добавляйте --checksum к copy и sync: сравнение идёт по хешу, а не по размеру и времени изменения. Такой режим медленнее, зато ловит повреждения, которые не меняют размер файла.
Монтирование облака как локального диска через rclone mount
Базовая команда выглядит так:
rclone mount s3prod:archive /mnt/archive --vfs-cache-mode writes
Облачный каталог появляется в /mnt/archive, и приложения читают файлы как локальные. Размонтирование: fusermount -u /mnt/archive в Linux, umount /mnt/archive в macOS, в Windows монтирование снимается остановкой процесса или службы. Без рабочего FUSE-слоя команда завершится ошибкой, поэтому сначала проверяем зависимости.
FUSE, WinFsp и macFUSE: что установить
- Linux. Пакет fuse3 (sudo apt install fuse3 или sudo dnf install fuse3). Проверка: наличие файла устройства /dev/fuse. Для доступа других пользователей к точке монтирования добавьте ключ --allow-other и строку user_allow_other в /etc/fuse.conf.
- Windows. WinFsp с официального сайта проекта. Монтирование требует прав администратора, а для постоянной работы его оформляют службой.
- macOS. macFUSE и разрешение системного расширения в настройках безопасности. После обновления системы разрешение иногда сбрасывается, и mount перестаёт работать.
В контейнере точка монтирования требует проброса устройства и дополнительных прав: --device /dev/fuse и --cap-add SYS_ADMIN при запуске docker run.
Режимы VFS-кэша и выбор для продакшена
| Режим | Поведение | Когда применять |
|---|---|---|
| off | Кэша нет, всё читается из облака | Последовательное чтение больших файлов, стриминг |
| minimal | Кэшируются только открытые файлы | Лёгкий доступ на чтение и запись без больших объёмов |
| writes | Кэшируется всё, что пишется приложением | Сервисы, которые создают и правят файлы |
| full | Полный кэш чтения и записи | Приложения с произвольной записью и переименованием файлов |
Для продакшена чаще берут writes или full: многие приложения не умеют работать с частичной записью и переименованием напрямую в облаке. Размер кэша ограничивают флагами --vfs-cache-max-size 10G и --vfs-cache-max-age 24h, иначе полный кэш со временем займёт весь диск. Флаг --dir-cache-time 12h уменьшает число обращений к API за списком каталогов.
Автоматический бэкап с компактного NAS в облако, с шифрованием и дедупликацией, разобран в отдельной статье: rclone и Duplicacy для TrueNAS, Synology и QNAP.
Автоматизация: systemd, cron и ограничение скорости
Systemd unit для монтирования и синхронизации
Юнит для монтирования запускается при загрузке и перезапускается при сбое. Тип notify сообщает systemd, что том готов к работе, и зависимые сервисы стартуют после него.
[Unit] Description=rclone mount cloud archive After=network-online.target Wants=network-online.target [Service] Type=notify ExecStart=/usr/bin/rclone mount s3prod:archive /mnt/archive --config /root/.config/rclone/rclone.conf --vfs-cache-mode writes --allow-other ExecStop=/bin/fusermount -u /mnt/archive Restart=on-failure RestartSec=10 User=root [Install] WantedBy=multi-user.target
Для регулярной синхронизации нужны два файла: сервис с самой командой и таймер с расписанием.
# rclone-sync.service [Unit] Description=Nightly rclone sync [Service] Type=oneshot ExecStart=/usr/bin/rclone sync /data s3prod:backup --config /root/.config/rclone/rclone.conf --log-file /var/log/rclone/sync.log --log-level INFO
# rclone-sync.timer [Unit] Description=Run rclone sync daily [Timer] OnCalendar=daily Persistent=true [Install] WantedBy=timers.target
Включение и проверка:
sudo systemctl daemon-reload sudo systemctl enable --now rclone-mount.service sudo systemctl enable --now rclone-sync.timer systemctl status rclone-mount journalctl -u rclone-sync.service -n 50
Флаг Persistent=true догоняет пропущенный запуск, если сервер был выключен в момент срабатывания таймера.
Cron для регулярной синхронизации
Если systemd нет, хватает строки в crontab:
0 3 * * * /usr/bin/rclone sync /data s3prod:backup --config /root/.config/rclone/rclone.conf --log-file /var/log/rclone/backup.log --log-level INFO
Cron запускается с урезанным PATH, поэтому путь к бинарнику указывают полностью. Вывод команды cron пытается отправить почтой, но на серверах без почтового агента сообщения теряются, так что журнал в файл обязателен. Логи ротируют через logrotate, иначе каталог вырастет. Схема выгрузки логов и артефактов из пайплайна описана в материале про автоматизацию загрузки и выгрузки файлов в CI/CD.
Ограничение скорости: --bwlimit и расписание
Статическое ограничение задаётся значением с суффиксом:
rclone sync /data s3prod:backup --bwlimit 10M --transfers 4 --checkers 8
Для рабочего дня и ночи удобно расписание: днём полоса урезается, вечером ограничение снимается.
rclone sync /data s3prod:backup --bwlimit "08:00,10M 19:00,off"
Время в расписании берётся из локальной зоны сервера. Ограничение действует на уровне передачи данных, поэтому мелкие файлы ускоряются дополнительно снижением --transfers и --checkers: меньше параллельных потоков значит меньше случайных обращений к API и меньше нагрузка на диск. Флаг --tpslimit ограничивает число запросов в секунду и помогает обойти ответ 429 от провайдера.
Типовые ошибки и как их исправить
Ошибки авторизации и токенов
- OAuth token expired. Токен Google Drive или другого сервиса истёк. Переподключение: rclone config reconnect gdrive:.
- 401 или 403 на S3. Проверьте ключи, политику доступа, регион и endpoint. Текущие параметры remote выводит rclone config show s3prod, но не публикуйте полный вывод: в нём есть ключи.
- 429 Too Many Requests. Снизьте --transfers и --checkers, добавьте --tpslimit 10.
- Config not found. Укажите путь явно: rclone lsd s3prod: --config /etc/rclone/rclone.conf, либо задайте переменную RCLONE_CONFIG.
Диагностика начинается с двух команд: rclone version для проверки версии и rclone lsd remote: для проверки доступа.
Ошибки монтирования и FUSE
- fuse: device not found. Нет /dev/fuse или пакета fuse3. Установите fuse3, в контейнере пробросьте устройство и права.
- mount not permitted для других пользователей. Добавьте user_allow_other в /etc/fuse.conf и ключ --allow-other.
- Windows: mount failed. Не установлен WinFsp либо процесс запущен без прав администратора.
- macOS: macFUSE not installed или расширение заблокировано. Разрешите расширение в настройках безопасности и перезагрузите систему.
Подробный вывод даёт флаг --debug:
rclone mount s3prod:archive /mnt/archive --vfs-cache-mode writes --debug
Смонтированный том, который внезапно отваливается, обычно указывает на перезапуск сервиса без Restart=on-failure или на исчерпанный лимит запросов у провайдера.
Чек-лист: rclone в продакшене
Быстрая шпаргалка: задача - команда
| Задача | Команда |
|---|---|
| Проверить версию | rclone version |
| Список каталогов | rclone lsd remote: |
| Занятое место | rclone about remote: |
| Скопировать без удаления | rclone copy src dst |
| Зеркало после dry-run | rclone sync src dst |
| Переместить | rclone move src dst |
| Смонтировать | rclone mount remote:path /mnt/point --vfs-cache-mode writes |
| Сверить содержимое | rclone check src dst |
| Ограничить скорость | --bwlimit "08:00,10M 23:00,off" |
| Показать план синхронизации | --dry-run |
Финальная проверка перед продакшеном
- rclone version показывает актуальную ветку 1.6x или новее.
- Права на конфиг: 600 для файла, 700 для каталога, файл не лежит в git и не хранится в публичном бакете.
- Секреты в конфиге зашифрованы через rclone config password либо вынесены в переменные окружения.
- Для продакшена заведён отдельный remote с минимально нужными правами.
- Перед каждым sync выполняется запуск с --dry-run, список удалений прочитан.
- После sync выполняется rclone check, код возврата проверяется в скрипте.
- Монтирование оформлено юнитом systemd с Restart=on-failure и RestartSec.
- --bwlimit ограничивает полосу в рабочие часы.
- Логи пишутся в файл, ротируются и просматриваются.
Проверяйте новые сценарии на копии данных, а не на проде: первая команда sync без --dry-run на зеркале бакета может удалить лишнее быстрее, чем вы заметите это в логе.