Webdav при помощи Rclone
После переустановки Linux Mint при монтировании яндекс-диска по webdav при помощи davfs2 не видел содержимое. ИИ посоветовал вместо davfs использовать rclone - типа он новее, быстрее и надежнее.
Итак, установка и настройка rclone
sudo apt install rclone
rclone config
Там создаем новое подключение. Можно создать подключение как простой webdav, а можно использовтаь в шаблонах rclone Яндекс диск. В первом случае будет ограничение протокола webdav - не будет передаваться дата файла, все закачки на сервере будут с временем закачки.
Если использовать профиль Яндекса, то такой проблемы нет. Настройка будет немного посложнее - нужно через броузер получать авторизацию.
Подключение по простому WebDav профилю
WebDAV внутри rclone (Самый простой путь). Rclone умеет работать через WebDAV, используя тот самый пароль приложения, который вы создали для webdav. Это избавляет от необходимости открывать браузер и создавать ID разработчика.
rclone config
n (New remote) -> имя yad
Выберите тип webdav (в списке это обычно номер в районе 40+)
URL: https://webdav.yandex.ru
Vendor: other
User: ваш_логин@yandex.ru
Password: y (введите ваш пароль приложения)
Остальное по умолчанию.
После создания конфигурации (yad) - команда для монтирования:
rclone mount yad: ~/CloudDisk/YaD --vfs-cache-mode full --dir-cache-time 30s --daemon
Что здесь происходит:
--vfs-cache-mode full: позволяет программам работать с файлами так, будто они локальные (чтение/запись/переименование).
--dir-cache-time 30s: заставляет rclone обновлять список файлов каждые 30 секунд. Если вы добавите файл через веб-интерфейс, он появится в папке максимум через полминуты.
--daemon: запускает процесс в фоновом режиме.
После выполнения команды подождите 10-15 секунд и введите:
ls -la ~/CloudDisk/YaD
Покажет наши папки на яндекс-диске.
протокол WebDAV у Яндекса не поддерживает стандартную передачу mtime, rclone не сможет установить дату изменения при обычной загрузке. В этом случае есть только два варианта:
Использовать флаг --size-only: rclone перестанет сравнивать даты и будет смотреть только на размер файла. Это предотвратит постоянную перезакачку одних и тех же файлов [3].
Архивация: упаковывать файлы в .tar или .zip перед отправкой.
Подключение с профилем Яндекс-диска
При создании профиля в rclone нужно выбрать профиль Yandex disk (на текущий момент опция 43).
1. Настройка через родной бэкенд (Yandex) без авто-браузера
Запустите настройку: rclone config.
Выберите n (New remote) и введите имя (например, yandex_native).
Выберите тип хранилища yandex.
client_id — это не имя вашего аккаунта. Это специальный идентификатор приложения для работы с API Яндекса.
Что делать на этом шаге? Просто оставьте эти поля пустыми и нажмите Enter:
Yandex Client Id: нажмите Enter (используется встроенный ID rclone).
Yandex Client Secret: нажмите Enter.
На вопрос Use web browser to automatically authenticate rclone with remote? ответьте n (No).
Rclone выдаст вам команду (вида rclone authorize "yandex" ...).
Если вы на этой же машине: просто скопируйте ссылку, которая появится после этой команды, в браузер.
После подтверждения доступа в браузере страница может «зависнуть» или показать ошибку соединения — это нормально. Вам нужно скопировать результирующий код (token), который появится в самом браузере или в адресной строке (в зависимости от версии rclone), и вставить его обратно в терминал.
Если вы нажимаете «Enter» и rclone пытается открыть браузер, но вылетает 404, сделайте следующее:
Когда rclone спросит Use auto config?, ответьте n (No).
Rclone выведет в терминал длинную ссылку, начинающуюся на https://oauth.yandex.ru....
Вручную скопируйте эту ссылку и вставьте в адресную строку браузера.
Подтвердите доступ к Диску. Яндекс выдаст вам код подтверждения (токен).
Скопируйте этот код и вставьте его обратно в терминал rclone, где написано Enter code:.
Почему это важно?
Использование родного типа yandex (через этот токен) вместо webdav — единственный способ заставить Яндекс.Диск принимать и сохранять дату изменения файла.
Теперь, когда rclone видит файлы, перейдем к автоматизации.
Использовать чистый /etc/fstab для rclone в Mint (Ubuntu-based) не всегда удобно из-за проблем с порядком загрузки сети. Лучше всего создать systemd-сервис — это надежнее, он сам поднимет диск после появления интернета и корректно размонтирует его при выключении.
Вариант 1: Через Systemd (Рекомендуемый)
Создайте файл сервиса:
nano ~/.config/systemd/user/rclone-yandex.service
(Если папки нет: mkdir -p ~/.config/systemd/user/). Вставьте туда этот текст (замените vmk на вашего пользователя, если путь отличается):
[Unit]
Description=RClone Yandex Disk Mount
After=network-online.target
[Service]
Type=simple
ExecStart=/usr/bin/rclone mount YaD: /home/vmk/CloudDisk/YaD \
--vfs-cache-mode full \
--vfs-cache-max-size 5G \
--dir-cache-time 5m \
--vfs-cache-max-age 24h
ExecStop=/bin/fusermount -u /home/vmk/CloudDisk/YaD
Restart=on-failure
[Install]
WantedBy=default.target
Вариант от Алисы
[Unit]
Description=Rclone mount for Yandex Disk via WebDAV
After=network.target
[Service]
User=ваш_пользователь
Group=ваша_группа
ExecStart=/usr/bin/rclone mount YaDiskWebDAV: /mnt/yandex-webdav \
--vfs-cache-mode full \
--dir-cache-time 24h \
--buffer-size 128M \
--timeout 30m \
--poll-interval 10s
Restart=always
[Install]
WantedBy=multi-user.target
Активируйте сервис:
systemctl --user daemon-reload
systemctl --user enable rclone-yandex.service
systemctl --user start rclone-yandex.service
Теперь диск будет монтироваться автоматически при вашем входе в систему.
Почему Systemd лучше fstab?
Логи: Можно всегда посмотреть, что не так: journalctl --user -u rclone-yandex.
Стабильность: Если rclone "упадет", systemd его перезапустит.
Права: Не нужно возиться с sudo, всё работает от вашего пользователя.
Если вы хотите использовать преимущества systemd (автоматический перезапуск при сбоях, ведение логов, правильное размонтирование), но не хотите, чтобы диск монтировался сам при старте системы, сделайте следующее:
1. Отключите автозагрузку сервиса
Если вы уже выполнили команду enable, отмените её:
systemctl --user disable rclone-yandex.service
Теперь сервис будет «спать» до тех пор, пока вы не вызовете его вручную.
2. Как запускать и останавливать «по кнопке»
Для удобства можно создать короткие команды (алиасы) или просто запомнить эти две:
Включить диск:
systemctl --user start rclone-yandex.service
Выключить диск:
systemctl --user stop rclone-yandex.service
3. Проверка статуса
Если папка вдруг пустая, вы всегда можете проверить, что пошло не так:
systemctl --user status rclone-yandex.service
Бонус: Создание «быстрой команды»
Чтобы не вводить длинную команду systemctl, добавьте сокращение в файл ~/.bashrc:
Откройте файл: nano ~/.bashrc
В самый конец добавьте строки:
alias yad-on='systemctl --user start rclone-yandex.service'
alias yad-off='systemctl --user stop rclone-yandex.service'
Сохраните (Ctrl+O, Enter) и примените:
source ~/.bashrc.
Теперь в терминале достаточно будет написать yad-on, чтобы диск появился, и yad-off, чтобы он исчез.
Несколько аккаунтов Яндекс-диска в разные папки
в Rclone можно подключить несколько аккаунтов Яндекс.Диска (или других облачных хранилищ) с разными учетными записями.
Если нужно подключить несколько аккаунтов через WebDAV:
Создайте отдельные конфигурации для каждого аккаунта
Для каждого создайте свой service-файл с уникальными:
- именем сервиса
- точкой монтирования
- параметрами подключения
Теперь вы можете работать с Яндекс.Диском через WebDAV в Rclone, используя systemd для автоматического монтирования. Монтирование разных аккаунтов
Монтирование первого аккаунта
rclone mount YaDisk1: /mnt/yandex1 \
--vfs-cache-mode full \
--dir-cache-time 24h
Монтирование второго аккаунта
rclone mount YaDisk2: /mnt/yandex2 \
--vfs-cache-mode full \
--dir-cache-time 24h
Проверка подключений
rclone lsd YaDisk1: # проверка первого аккаунта
rclone lsd YaDisk2: # проверка второго аккаунта
Управление несколькими конфигурациями
Просмотр всех конфигураций
rclone config show
Редактирование существующей конфигурации
rclone config edit YaDisk1
Полезные команды
Копирование между аккаунтами
rclone copy YaDisk1:source YaDisk2:destination
Синхронизация
rclone sync YaDisk1:folder YaDisk2:folder
Важные моменты
Каждый аккаунт должен иметь уникальное имя в конфигурации (например, YaDisk1, YaDisk2)
Для каждого монтирования нужно указывать разные точки монтирования (например, /mnt/yandex1 и /mnt/yandex2)
Убедитесь, что у вас достаточно прав для монтирования в выбранные директории
Можно использовать разные параметры монтирования для каждого аккаунта
Опубликовано