docs(rclone): добавлена настройка Яндекс Диска для Ubuntu

- Зачем:
  - нужна удобная работа с документами на большом Яндекс Диске из Linux.
- Что:
  - собраны выводы о поведении rclone mount на больших хранилищах.
  - добавлены команды установки, настройки, проверки и автозапуска в Ubuntu 26.04.
  - описаны ограничения кэша, внешних изменений и рекурсивного обхода.
- Проверка:
  - выполнена проверка `git diff --cached --check`.
This commit is contained in:
ddadmin committed 2026-07-27 22:16:33 +03:00
1 parent 2d4af081b8
commit 97193eaa4b
1 file changed
+325
@@ -0,0 +1,325 @@
# rclone mount и большой Яндекс Диск
Дата проверки: 2026-07-27.
## Вывод
Обычный `rclone mount` не обходит весь Диск при запуске. Он создаёт корневой
узел и перечисляет каталог только при первом обращении к нему. Поэтому время
подключения почти не зависит от общего объёма и числа файлов. Первый просмотр
конкретного каталога зависит от числа элементов именно в этом каталоге.
Для редкого чтения и редактирования документов на многотерабайтном Диске такой
режим подходит. Главные ограничения — медленные каталоги с очень большим числом
непосредственных детей, задержка появления изменений, сделанных через браузер,
и возможное ограничение скорости со стороны Яндекс API при массовой работе с
мелкими файлами.
## Что происходит при запуске
В исходниках rclone 1.74.4 конструктор VFS создаёт пустой корневой каталог.
Рекурсивное чтение запускается только при включённом `--vfs-refresh`.
Обычное чтение каталога вызывает `list.DirSorted` только для запрошенного пути.
Кэш списка каталогов хранится в памяти. `--dir-cache-time` определяет срок его
жизни в рамках работающего процесса; после перезапуска посещённые каталоги
нужно перечислить заново. Дисковый VFS-кэш содержимого файлов сохраняется
отдельно и может переживать перезапуск.
Источники:
- [исходник VFS rclone 1.74.4](https://github.com/rclone/rclone/blob/v1.74.4/vfs/vfs.go);
- [исходник каталога VFS rclone 1.74.4](https://github.com/rclone/rclone/blob/v1.74.4/vfs/dir.go);
- [документация rclone mount](https://rclone.org/commands/rclone_mount/).
## Что может вызвать полный обход
Не следует включать:
- `--vfs-refresh` — рекурсивно наполняет кэш каталогов после запуска;
- `--vfs-used-is-size` — вычисляет занятое место алгоритмом `rclone size` и
сканирует весь удалённый ресурс;
- автоматический `du`, `find`, полнотекстовый поиск или построение миниатюр от
корня подключённого Диска.
Обычный `df` безопасен: backend Яндекс Диска поддерживает получение квоты через
операцию `about`, поэтому подсчёт всех файлов не нужен.
Источник: [backend Яндекс Диска в rclone](https://rclone.org/yandex/).
## Изменения через браузер
VFS сразу знает об изменениях, сделанных через это же подключение. Изменения,
сделанные через браузер или другое устройство, могут быть не видны до истечения
`--dir-cache-time`, если backend не поддерживает уведомления об изменениях.
Практический отзыв владельца 2 ТБ Яндекс Диска показывает именно этот эффект:
при `--dir-cache-time 12h` внешние изменения долго оставались невидимыми.
Источник: [обсуждение 2 ТБ Яндекс Диска на форуме rclone](https://forum.rclone.org/t/how-to-automatically-synchronize-files/30752).
## Индексация GNOME
Текущая система рекурсивно индексирует домашний каталог, но LocalSearch по
умолчанию пропускает точки монтирования. Подключение всё же лучше держать в
`/mnt/yandex` и не добавлять его в «Параметры → Поиск → Места поиска».
Источник: [правила индексирования GNOME LocalSearch](https://gnome.pages.gitlab.gnome.org/localsearch/indexed-data.html).
## Отзывы пользователей
Повторяются следующие наблюдения:
- сценарий «файлы по требованию» считают естественным применением
`rclone mount`; это живое сетевое представление, а не полноценная офлайн-
синхронизация;
- даже хранилища с очень большим общим числом файлов могут подключаться, пока
программы не пытаются рекурсивно обходить всё дерево;
- каталоги с десятками тысяч мелких файлов остаются чувствительными к сетевой
задержке;
- по Яндекс Диску встречаются сообщения об ограничении скорости и ошибках
блокировки при массовой загрузке мелких файлов. Основная подробная подборка
относится к 2022 году, поэтому это сигнал для пробного теста, а не доказательство
текущего ограничения;
- Яндекс официально гарантирует работу своих клиентов, а сторонние клиенты не
поддерживает.
Источники:
- [современное обсуждение files-on-demand](https://www.reddit.com/r/rclone/comments/1tlhtxm/im_trying_to_understand_rclone_mount_and/);
- [обсуждение 1,7 млрд мелких файлов](https://www.reddit.com/r/rclone/comments/1oc77za/);
- [подборка проблем rclone и Яндекс Диска](https://forum.rclone.org/t/rclone-and-yandex-disk-2022-09-summary/33162);
- [обсуждение 60 тысяч мелких файлов](https://www.reddit.com/r/rclone/comments/jhm1zn/).
## Настройка на текущем компьютере
Команды ниже рассчитаны на установленную здесь Ubuntu 26.04 LTS
`x86_64` (`amd64`). `fuse3` и `/usr/bin/fusermount3` уже установлены.
### 1. Установка rclone
В репозитории Ubuntu 26.04 сейчас находится rclone 1.60.1, тогда как актуальный
выпуск — 1.74.4. Разработчики rclone предупреждают, что пакеты дистрибутивов
часто отстают. Для монтирования лучше поставить текущий официальный пакет:
```bash
curl -fL \
https://downloads.rclone.org/rclone-current-linux-amd64.deb \
-o /tmp/rclone-current-linux-amd64.deb
sudo apt install /tmp/rclone-current-linux-amd64.deb
rclone version
```
Snap-пакет не подходит: из-за его ограничений команда `rclone mount` не
поддерживается.
Источник: [официальная инструкция по установке rclone](https://rclone.org/install/).
### 2. Подключение учётной записи
```bash
rclone config
```
В диалоге:
1. Выбрать `n` — создать новое подключение.
2. Назвать его `yandex`.
3. Выбрать тип хранилища `yandex`.
4. `client_id` и `client_secret` оставить пустыми.
5. Разрешить вход через браузер и подтвердить доступ.
6. Сохранить подключение.
Проверить конфигурацию без рекурсивного обхода Диска:
```bash
rclone listremotes
rclone lsd yandex:
rclone about yandex:
rclone config file
chmod 600 "$HOME/.config/rclone/rclone.conf"
```
Последний файл содержит OAuth-токен. Его нельзя добавлять в Git или передавать
другим людям. Для первой проверки не следует запускать `rclone ls yandex:`:
в отличие от `lsd`, эта команда рекурсивно перечисляет все файлы.
Источник: [настройка backend Яндекс Диска](https://rclone.org/yandex/).
### 3. Пробное монтирование
Создать постоянную точку монтирования и каталог кэша:
```bash
sudo install -d -o "$USER" -g "$USER" -m 0750 /mnt/yandex
mkdir -p "$HOME/.cache/rclone/yandex"
```
Запустить rclone в терминале:
```bash
rclone mount yandex: /mnt/yandex \
--config "$HOME/.config/rclone/rclone.conf" \
--cache-dir "$HOME/.cache/rclone/yandex" \
--vfs-cache-mode full \
--vfs-cache-max-size 30G \
--vfs-cache-min-free-space 100G \
--vfs-cache-max-age 720h \
--vfs-write-back 10s \
--dir-cache-time 1h \
--poll-interval 0 \
--attr-timeout 1s \
--buffer-size 8M \
--transfers 4 \
--timeout 1h \
--log-level INFO
```
Эти размеры выбраны с учётом текущего свободного места в `/home`: кэш ограничен
30 ГБ, а rclone начнёт освобождать его при остатке менее 100 ГБ. Ограничение
не абсолютно: открытые и ещё не загруженные файлы нельзя удалить из кэша.
`--timeout 1h` нужен на случай загрузки файлов больше примерно 5 ГиБ.
Подключение работает в переднем плане. Для обычной остановки нажать `Ctrl+C`.
Если точка осталась подключённой после аварии:
```bash
fusermount3 -u /mnt/yandex
```
### 4. Проверка перед автозапуском
В другом терминале:
```bash
findmnt /mnt/yandex
ls /mnt/yandex
```
Затем открыть копию документа, изменить её, закрыть редактор и подождать больше
10 секунд. После этого проверить файл через веб-интерфейс Яндекс Диска. Важно
именно закрыть документ: rclone отправляет изменения после закрытия файла и
истечения `--vfs-write-back`.
Если rclone завершится раньше отправки, изменённый файл останется в VFS-кэше и
будет отправлен при следующем запуске с теми же параметрами. Поэтому нельзя
удалять каталог кэша после сбоя. Нельзя также одновременно запускать две копии
rclone для одного подключения с общим кэшем.
### 5. Постоянный запуск через systemd
После успешной ручной проверки создать файл
`~/.config/systemd/user/rclone-yandex.service`:
```bash
mkdir -p "$HOME/.config/systemd/user"
vim "$HOME/.config/systemd/user/rclone-yandex.service"
```
И вставить в него:
```ini
[Unit]
Description=Яндекс Диск через rclone
Documentation=https://rclone.org/commands/rclone_mount/
Wants=network-online.target
After=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/rclone mount yandex: /mnt/yandex \
--config=%h/.config/rclone/rclone.conf \
--cache-dir=%h/.cache/rclone/yandex \
--vfs-cache-mode=full \
--vfs-cache-max-size=30G \
--vfs-cache-min-free-space=100G \
--vfs-cache-max-age=720h \
--vfs-write-back=10s \
--dir-cache-time=1h \
--poll-interval=0 \
--attr-timeout=1s \
--buffer-size=8M \
--transfers=4 \
--timeout=1h \
--log-level=INFO
Restart=on-failure
RestartSec=10s
TimeoutStopSec=5min
[Install]
WantedBy=default.target
```
В службе не нужен `--daemon`: за процессом следит systemd. `%h` раскрывается
самим systemd в абсолютный путь к домашнему каталогу; `~` и `$HOME` в
`ExecStart` использовать не следует.
Включить службу:
```bash
systemctl --user daemon-reload
systemctl --user enable --now rclone-yandex.service
systemctl --user status rclone-yandex.service
```
Смотреть журнал:
```bash
journalctl --user -u rclone-yandex.service -f
```
Остановить или снова запустить:
```bash
systemctl --user stop rclone-yandex.service
systemctl --user restart rclone-yandex.service
```
Если изменения, сделанные через браузер, нужны раньше истечения одного часа,
сбросить только кэш каталогов этой службы:
```bash
systemctl --user kill \
--kill-whom=main \
--signal=HUP \
rclone-yandex.service
```
Это не сканирует весь Диск: нужные каталоги будут перечитаны при следующем
обращении. Не следует посылать сигнал всем процессам rclone разом.
На новых выпусках Ubuntu FUSE изредка блокируется AppArmor с ошибкой
`fusermount3: mount failed: Permission denied`. Не нужно заранее отключать
защиту. Если ошибка действительно появится, сначала проверить системный журнал
и применить актуальное для Ubuntu исправление из
[раздела Mounting on Linux](https://rclone.org/commands/rclone_mount/#mounting-on-linux).
### Что здесь называется синхронизацией
`rclone mount` не создаёт полную локальную копию нескольких терабайт. Это живое
представление Диска: файл скачивается по требованию, а закрытый изменённый файл
отправляется обратно через 10 секунд. Именно этот режим рекомендуется здесь.
Команда `rclone sync` решает другую задачу: приводит каталог назначения к
каталогу-источнику и удаляет из назначения лишние файлы. Для всего большого
Диска она вызовет полный рекурсивный обход, поэтому в этой схеме её не нужно
запускать.
Источник: [документация rclone mount и VFS-кэша](https://rclone.org/commands/rclone_mount/).
## Рекомендация для проверки
Сначала провести короткий пробный запуск без автозапуска:
1. Не использовать `--vfs-refresh`, `--vfs-used-is-size` и рекурсивные
индексаторы.
2. Включить `--vfs-cache-mode full`.
3. Ограничить дисковый кэш примерно 20–30 ГБ.
4. Начать с `--dir-cache-time 1h`: это компромисс между повторными запросами и
видимостью изменений из браузера.
5. Замерить время подключения, открытия корня, нескольких обычных каталогов и
одного самого большого каталога.
6. На копии документа проверить открытие, сохранение, появление файла в веб-
интерфейсе и повторное открытие из кэша.
Если эти проверки проходят, общий объём в несколько ТБ сам по себе не является
препятствием для постоянного подключения.