OneDrive на Linux — установка и синхронизация

Иногда приходится использовать проприетарные продукты ради удобства и совместимости. Google, Amazon, Dropbox и Microsoft доминируют в облачном хранении: их сервисы надёжны и часто бесплатны, но для работы с ними сервисы могут индексировать или предоставлять данные по законным запросам. Это реальность, но она не отменяет удобства использования таких сервисов.
OneDrive — облачное хранилище Microsoft. Хотя оно естественно ориентировано на Windows, подключить OneDrive к Linux-машинам можно просто и надёжно. Один из лучших способов — использовать скриптовый/CLI-клиент onedrive (проект abraunegg/onedrive на GitHub).
Важно: перед установкой убедитесь, что у вас есть учётная запись Microsoft и доступ к терминалу с правами sudo.
Что такое onedrive
onedrive — это CLI-клиент на D, который синхронизирует локальную папку с вашим OneDrive. Он поддерживает одностороннюю и двустороннюю синхронизацию, мониторинг изменений, выборочную синхронизацию и некоторые настройки робастности.
Определение в одну строку: onedrive — открытый CLI-клиент для синхронизации данных OneDrive на Linux.
Перед началом — зависимости
Установите базовые зависимости и git. Примеры для популярных дистрибутивов.
Для Ubuntu / Debian
sudo apt update
sudo apt install libcurl4-openssl-dev libsqlite3-dev git curl build-essentialЕсли вы используете Ubuntu 18.04 или новее, можно установить DMD через snap:
sudo snap install --classic dmd && sudo snap install --classic dubНа старых релизах потребуются дополнительные шаги для установки компилятора D; если вы не уверены — используйте snap или установите dmd через пакетный репозиторий вашего дистрибутива.
Для Fedora
sudo yum install libcurl-devel git sqlite-devel curl make gcc
curl -fsS https://dlang.org/install.sh | bash -s dmd(В современных Fedora можно заменить yum на dnf.)
Для Arch Linux
sudo pacman -Syu curl sqlite dlang git base-develПримечание: набор пакетов зависит от дистрибутива и версии. Если вы используете корпоративный/специальный образ, обратитесь к документации дистрибутива.
Установка onedrive из исходников
Склонируйте репозиторий и соберите клиент:
git clone https://github.com/abraunegg/onedrive.git
cd onedrive
./configure
make
sudo make installПосле установки запустите клиент для первичной авторизации:
onedriveКлиент откроет URL-адрес в терминале — посетите его в браузере, войдите в учётную запись Microsoft и предоставьте разрешения приложению.

После успешной авторизации сервис покажет страницу подтверждения; скопируйте URL и вставьте его в терминал, как предложит клиент.

Когда авторизация завершена, клиент завершит настройку и создаст локальную базу метаданных.
Базовые команды
- Запуск синхронизации один раз:
onedrive --synchronize- Непрерывный мониторинг локальной папки и автоматический запуск синхронизации:
onedrive --monitor- Показ текущей конфигурации:
onedrive --display-config- Принудительная пересинхронизация (очистка локальной БД и повторная загрузка):
onedrive --resync- Выход/отмена авторизации:
onedrive --logout
Настройка конфигурации
Файл конфигурации находится в каталоге репозитория (config). Чтобы активировать его, переместите в ~/.config/onedrive/:
mkdir -p ~/.config/onedrive
cp ~/onedrive/config ~/.config/onedrive/configОткройте ~/.config/onedrive/config и отредактируйте ключевые параметры:
- sync_dir: путь к локальной папке, где будут храниться файлы OneDrive. Всё, что добавлено/удалено в этой папке, будет синхронизировано.
- skip_files: шаблоны файлов, которые не надо синхронизировать (например, *.tmp).
- monitor_interval: интервал в секундах между автоматическими проверками при режиме –monitor.
Сохраните изменения и перезапустите onedrive (или запустите с нужными флагами).
Выборочная синхронизация (Sync List)
Если не хотите синхронизировать весь аккаунт, создайте файл sync_list в ~/.config/onedrive/ и перечислите в нём относительные пути (от корня OneDrive) к файлам и папкам, которые нужно синхронизировать.
Пример содержимого sync_list:
Documents/Reports
Photos/VacationПосле изменения списка перезапустите клиент.
Запуск onedrive при входе (автозапуск)
Есть два распространённых подхода.
Добавить команду в автозагрузку окружения рабочего стола:
onedrive --monitor.Создать системный user-сервис systemd (рекомендуется для стабильности). Пример user unit:
# ~/.config/systemd/user/onedrive.service
[Unit]
Description=OneDrive Free Client
After=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/onedrive --monitor
Restart=on-failure
[Install]
WantedBy=default.targetВключение и запуск:
systemctl --user daemon-reload
systemctl --user enable --now onedrive.serviceВажно: убедитесь, что PATH и путь к исполняемому файлу совпадают с местом установки onedrive.
Отладка и частые проблемы
- Ошибка авторизации: повторно выполните
onedrive --logout, затемonedriveи пройдите процедуру авторизации заново. - Конфликты файлов: проверяйте лог клиента. Для принудительного восстановления используйте
--resync. - Проблемы с зависимостями D: установите dmd/dub через snap или инструкции dlang.org.
- Не синхронизируются большие файлы: проверьте ограничения сети, VPN и политики корпоративного прокси.
Команды для диагностики и логов:
onedrive --synchronize --verbose
journalctl --user -u onedrive.serviceКогда onedrive не подходит (ограничения)
- Если вам нужна полная клиентская интеграция с GUI (автоматическое монтирование в файловый менеджер, полнофункциональные контекстные меню), возможно, стоит рассмотреть коммерческие решения.
- Для сложной работы с SharePoint или специфическими бизнес-аккаунтами проверяйте документацию проекта на GitHub — возможности могут отличаться.
Альтернативы и сравнение (кратко)
- rclone — универсальный инструмент, поддерживает OneDrive и многие другие провайдеры; более гибкий для скриптов и серверов.
- insync — платный клиент с GUI, хорошо интегрируется с рабочим столом.
- onedrive (abraunegg) — лучший вариант для легковесной CLI-синхронизации и автоматизации.
Выбор зависит от задач: если нужен GUI и простота — Insync; если нужен серверный гибкий инструмент — rclone; если нужен открытый CLI-клиент для настольного использования — onedrive.
Мини-методология внедрения (шаги)
- Оцените требования (объём данных, политика безопасности, нужные функции).
- Установите зависимости и клиента согласно дистрибутиву.
- Авторизуйте клиент и выполните первичную синхронизацию в тестовую папку.
- Настройте config, sync_list и skip_files.
- Настройте автозапуск (systemd user) и мониторинг.
- Проведите тесты (проверка загрузки/скачивания, конфликтов, больших файлов).
- Переведите в эксплуатацию.
Ролевые чек-листы
Для администратора:
- Проверить сетевые политики и прокси.
- Обеспечить доступ к GitHub и dlang-установкам.
- Настроить systemd unit и логи.
Для пользователя:
- Убедиться в наличии учётной записи Microsoft.
- Выбрать sync_dir и заполнить sync_list.
- Изучить команды
--synchronize,--monitorи--display-config.
Для DevOps/серверной команды:
- Рассмотреть rclone как альтернативу для серверных задач.
- Автоматизировать обновления клиента и резервное копирование конфигураций.
Критерии приёмки
- Локальная sync_dir содержит файлы из OneDrive.
onedrive --display-configпоказывает ожидаемые параметры.- Автозапуск успешно включён (
systemctl --user status onedrive.service). - Логи не содержат критических ошибок при синхронизации.
Безопасность и приватность
onedrive использует OAuth-авторизацию через Microsoft. Клиент хранит токены локально — защитите домашнюю папку от постороннего доступа. Если требуются дополнительные меры, применяйте шифрование на уровне файловой системы (например, LUKS) и VPN при передаче данных.
Примечание по GDPR: использование OneDrive подчиняется политике Microsoft и требованиям вашей организации; для чувствительных данных проконсультируйтесь с юридическим/комплаенс-отделом.
Часто задаваемые вопросы
Нужно ли использовать GUI для авторизации?
Нет: клиент выдаст URL, который вы должны открыть в браузере и подтвердить разрешения. Это единоразовый шаг.
Поддерживает ли клиент OneDrive for Business и SharePoint?
Проект поддерживает рабочие и личные аккаунты, но детали и ограничения для SharePoint зависят от версии сервиса — смотрите документацию проекта на GitHub.
Можно ли синхронизировать только отдельные папки?
Да — используйте файл sync_list в ~/.config/onedrive/.
Что делать при конфликте файлов?
Проверьте логи, вручную разрешите конфликты и при необходимости выполните onedrive --resync.
Изображение: Microsoft OneDrive
Итог
onedrive — стабильный и гибкий CLI-клиент для синхронизации OneDrive на Linux. Он пригоден для настольных и серверных задач, особенно если нужна автоматизация через systemd и точный контроль синхронизируемых папок. Альтернативы (rclone, Insync) стоит рассматривать в зависимости от требований GUI, лицензирования и интеграции.
Похожие материалы
Как внести чек через телефон — пошаговое руководство
Включить Microsoft Defender Antivirus в Windows 10
Установка Connect в Windows 10
Синхронизация браузеров: перенос закладок и паролей
Трансляция Prime Video на Discord