rclone — универсальный клиент для облачных хранилищ и удалённых файловых систем. Он работает с S3, WebDAV, SFTP, Nextcloud, Google Drive, OneDrive и другими бэкендами, умеет шифровать данные на клиенте и запускаться из скриптов. Ниже — практическая схема: настройка хранилища, разница между copy и sync, шифрование, systemd, проверка и восстановление.

Что умеет rclone и чего он не делает

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

  • одностороннее копирование и зеркалирование каталогов;
  • шифрование имён и содержимого через overlay-бэкенд crypt;
  • монтирование облака как файловой системы через FUSE;
  • работа по расписанию без интерактивного входа.

Сначала потренируйтесь на тестовом каталоге. Команда sync удаляет файлы в приёмнике, которых нет в источнике, и ошибка в пути способна стереть данные. Для резервных копий безопаснее copy с архивом версий.

Установка и первичная настройка

В Debian, Ubuntu и Linux Mint пакет ставится из репозитория. Версия в репозитории может отставать — проверьте номер. Конфигурация хранится в ~/.config/rclone/rclone.conf и содержит секреты, поэтому права должны быть 600.

sudo apt update
sudo apt install rclone
rclone version
rclone config
chmod 600 ~/.config/rclone/rclone.conf

Мастер rclone config создаёт именованный remote. Для S3-совместимого хранилища понадобятся endpoint, ключи и регион; для WebDAV — URL, логин и пароль приложения. Ключи в командной строке остаются в истории. После создания проверьте доступ командой rclone lsd remote:.

copy, sync и архив версий

copy добавляет и обновляет файлы в приёмнике, но не удаляет лишнее. sync делает приёмник точной копией источника, включая удаления. Для бэкапа обычно нужен copy: случайно удалённый на сервере файл останется в облаке. Чтобы хранить и предыдущие версии, используйте --backup-dir.

rclone copy /srv/data remote:backup/server/current --dry-run --progress
rclone copy /srv/data remote:backup/server/current --progress
rclone sync /srv/data remote:mirror/server --dry-run
rclone check /srv/data remote:backup/server/current --one-way

Флаг --dry-run показывает план без изменений; запускайте его перед новой командой. --one-way в check означает, что проверяются только файлы источника; лишние файлы в приёмнике не считаются ошибкой. Для ускорения есть --size-only, но одинаковый размер не гарантирует одинаковое содержимое.

Шифрование через crypt

Если облачный провайдер не должен видеть ни имена, ни содержимое файлов, поверх основного remote создаётся crypt. Это не отдельное хранилище, а слой: rclone шифрует объект и кладёт его в обычный бакет. Пароль можно зашифровать для конфига через rclone obscure; мастер настройки делает это автоматически.

[secret]
type = crypt
remote = remote:backup/encrypted
filename_encryption = standard
directory_name_encryption = true
password = OBSCURED_PASSWORD
password2 = OBSCURED_SALT

Храните пароль и соль отдельно от конфига и от облака. Потеря пароля означает потерю данных: восстановить их без ключа невозможно. Второй пароль усложняет подбор по готовым таблицам, но не заменяет надёжную парольную фразу. После настройки проверьте, что rclone lsf secret: показывает нормальные имена, а в бакете лежат нечитаемые объекты.

Скрипт резервного копирования

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

#!/usr/bin/env bash
set -euo pipefail
SRC="/srv/data"
DST="secret:backups/$(hostname)"
STAMP="$(date +%F_%H%M)"
rclone copy "$SRC" "$DST/current" \
  --backup-dir "$DST/archive/$STAMP" \
  --exclude-from /etc/rclone/exclude.txt \
  --transfers 8 --checkers 16 --bwlimit 20M \
  --log-file /var/log/rclone/backup.log --log-level INFO
rclone check "$SRC" "$DST/current" --one-way

--bwlimit 20M ограничивает скорость 20 МиБ/с, чтобы бэкап не забивал канал. --transfers и --checkers подбираются под провайдера: слишком большие значения вызывают ошибки 429 и таймауты. Файл исключений избавляет от кэшей, временных файлов и каталогов, которые не нужно хранить.

Автоматизация через systemd

Таймер systemd умеет запускать пропущенную задачу после включения сервера и хранит journal. Файлы разместите в /etc/systemd/system/, затем включите таймер командой systemctl enable --now rclone-backup.timer. Пользователь backup должен иметь доступ к источнику, конфигу rclone и каталогу логов.

[Unit]
Description=rclone backup
After=network-online.target
Wants=network-online.target

[Service]
Type=oneshot
User=backup
Group=backup
ExecStart=/usr/local/bin/rclone-backup.sh

[Install]
WantedBy=multi-user.target
[Unit]
Description=Daily rclone backup

[Timer]
OnCalendar=*-*-* 03:30:00
Persistent=true
RandomizedDelaySec=15m

[Install]
WantedBy=timers.target

Проверьте запуск вручную через systemctl start rclone-backup.service и посмотрите journalctl -u rclone-backup.service. RandomizedDelaySec разводит одновременные запуски на нескольких серверах.

Проверка, восстановление и монтирование

Резервная копия существует только тогда, когда из неё успешно восстанавливали данные. Раз в квартал копируйте несколько файлов в отдельный каталог и сверяйте контрольные суммы. Старые архивы удаляйте командой rclone delete secret:backups/server/archive --min-age 30d. Для просмотра размера и квоты используйте rclone size и rclone about; последняя команда поддерживается не всеми бэкендами.

rclone size secret:backups/server/current
rclone about remote:
rclone copy secret:backups/server/current /srv/restore --progress
rclone mount secret:backups /mnt/cloud --vfs-cache-mode writes --dir-cache-time 12h

Монтирование удобно для ручного доступа, но не для баз данных: при обрыве сети операции могут зависнуть. Для постоянной работы используйте systemd-юнит с Restart=on-failure и размонтированием через fusermount3 -u. Кэш --vfs-cache-mode writes снижает число мелких операций, но требует места на диске.

Диагностика и чек-лист

При ошибках сначала смотрите лог rclone и код возврата. Сетевые сбои лечатся --retries и --low-level-retries, а не бесконечным перезапуском. Не публикуйте вывод rclone config show и --dump headers: там могут быть ключи и токены.

  • Перед новой командой выполняется --dry-run.
  • Для бэкапа используется copy, а не sync.
  • Включён --backup-dir для версий и очистка архива по возрасту.
  • Конфиг с секретами имеет права 600.
  • Пароль crypt хранится вне сервера и вне облака.
  • Логи и journal проверяются после каждого запуска.
  • rclone check проходит без расхождений.
  • Восстановление проверено на отдельном каталоге.

Итог

rclone закрывает задачу переносимого резервного копирования: один инструмент для облака, WebDAV и локальных дисков, понятные команды и шифрование на клиенте. Главное — не путать синхронизацию с бэкапом, использовать copy с архивом версий, ограничивать скорость и регулярно проверять восстановление. Тогда копия останется полезной даже при ошибке оператора или сбое провайдера.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте