onedrive README

The project's README from github.com/abraunegg/onedrive. As one markdown file: README.md.

OneDrive Client for Linux

Version Release Date

Linux Test Build Linux Smoke Test Build Docker Images Docker Pulls

E2E Testing - Master Status

A fully featured, free, open-source and actively maintained Microsoft OneDrive client that seamlessly supports OneDrive Personal, OneDrive for Business, Microsoft 365 (formerly Office 365), and SharePoint document libraries.

Designed for maximum flexibility and reliability, this powerful and highly configurable client works across all major Linux distributions, FreeBSD and OpenBSD. It can also be deployed in containerised environments using Docker or Podman. Supporting both one-way and two-way synchronisation modes, the client provides secure and efficient file syncing with Microsoft OneDrive services — tailored to suit both desktop and server environments.

Project Background

This project originated as a fork of the skilion client in early 2018, after a number of proposed improvements and bug fixes — including Pull Requests #82 and #314 — were not merged and development activity of the skilion client had largely stalled. While it’s unclear whether the original developer was unavailable or had stepped away from the project - bug reports and feature requests remained unanswered for extended periods. In 2020, the original developer (skilion) confirmed they had no intention of maintaining or supporting their work (reference).

The original skilion repository was formally archived and made read-only on GitHub in December 2024. While still publicly accessible as a historical reference, an archived repository is no longer maintained, cannot accept contributions, and reflects a frozen snapshot of the codebase. The last code change to the skilion client was merged in November 2021; however, active development had slowed significantly well before then. As such, the skilion client should no longer be considered current or supported — particularly given the major API changes and evolving Microsoft OneDrive platform requirements since that time.

Under the terms of the GNU General Public License (GPL), forking and continuing development of open source software is fully permitted — provided that derivative works retain the same license. This client complies with the original GPLv3 licensing, ensuring the same freedoms granted by the original project remain intact.

Since forking in early 2018, this client has evolved into a clean re-imagining of the original codebase, resolving long-standing bugs and adding extensive new functionality to better support both personal and enterprise use cases to interact with Microsoft OneDrive from Linux, FreeBSD and OpenBSD platforms.

Help Sustain OneDrive Client for Linux

OneDrive Client for Linux is free, open-source software that is independently developed and maintained.

If the client is useful to you or your organisation, you can help sustain ongoing development, compatibility work, testing across supported operating systems and Microsoft OneDrive account types, and long-term project maintenance through GitHub Sponsors.

Sponsorship is entirely optional and does not alter access to the software, project documentation, community support, or the ability to report issues and contribute to the project.

Features

Broad Microsoft OneDrive Compatibility

Flexible Synchronisation Modes

Client-Side Filtering & Granular Sync Control

Real-Time Monitoring & Online Change Detection

Data Safety, Recovery & Integrity Protection

Modern Authentication Support

Performance, Efficiency & Resource Management

Desktop Integration & User Experience

What's missing

External Enhancements

Frequently Asked Questions

Refer to Frequently Asked Questions

Have a question

If you have a question or need something clarified, please raise a new discussion post here

Supported Application Version

Support is only provided for the current application release version or newer 'master' branch versions.

The current release version is: Version

To check your version, run: onedrive --version. Ensure you are using the current release or compile the latest version from the master branch if needed.

If you are using an older version, you must upgrade to the current release or newer to receive support.

Documentation and Configuration Assistance

OneDrive Client for Linux includes a rich set of documentation covering installation, configuration options, advanced usage, and integrations. These resources are designed to help new users get started quickly and to give experienced users full control over advanced behaviour. If you are changing configuration, running in production, or using Business/SharePoint features, you should be reading these documents. All documentation is maintained in the docs/ directory of this repository.

Getting Started

Installation

Learn how to install the client on various systems — from distribution packages to building from source. Please read the Install Guide

Basic Usage & Configuration

Covers initial authentication, default settings, basic operational instructions, frequently asked 'how to' questions, and how to tailor the application configuration. Please read the Usage Guide

Advanced Configuration

Application Configuration Options

Full reference for every config option (with descriptions, defaults, and examples) to customise sync behaviour precisely. Please read the Application Configuration Options Guide

Advanced Usage

Tips for creating multiple config profiles, custom sync rules, daemon setups, selective sync, dual-booting with Microsoft Windows and more. Please read the Advanced Usage Guide

Special Use Cases

Business Shared Items

Configuring sync for OneDrive Business shared items (files and folders). Please read the Business Shared Items Guide

SharePoint & Office 365 Libraries

Instructions for syncing SharePoint document libraries (Business or Education tenants). Please read the SharePoint Library Guide

National Cloud support

Instructions for environments like Microsoft Cloud Germany or US Government cloud endpoints. Please read the National Cloud Deployment Guide

Container Support

Docker

How to run the OneDrive client in a Docker container. Please read the Docker Guide

Podman

How to run the OneDrive client with Podman. Please read the Podman Guide

Basic Troubleshooting Steps

If you encounter any issues running the application, please follow these steps before raising a bug report:

  1. Check the application version
    Run onedrive --version to confirm which version you are using.

    • Ensure you are running the latest release.
    • If you are already on the latest release but still experiencing issues, manually build the client from the master branch to test against the very latest code. This includes fixes for bugs discovered since the last tagged release.
    • If you are using Docker or Podman, ensure you are using the 'edge' Docker Tag. Do not use the 'latest' Docker Tag.
  2. Run in verbose mode
    Use the --verbose option to provide greater clarity and detailed logging about the issue you are facing.

    If you are using Docker or Podman, use the ONEDRIVE_VERBOSE environment variable to increase logging verbosity.

  3. Test with IPv4 only
    Configure the application to use IPv4 network connectivity only, then retest. See the 'ip_protocol_version' option documentation for assistance.

  4. Test with HTTP/1.1 and IPv4
    Configure the application to use HTTP/1.1 over IPv4 only, then retest. See the 'force_http_11' option documentation for assistance.

  5. Verify cURL and libcurl versions
    If the above steps do not resolve your issue, upgrade both curl and libcurl to the latest versions provided by the curl developers.

  6. Perform a --resync In some cases, a --resync is needed to ensure your data is correctly synced. This option instructs the client to delete its local state database and fully rebuild it from the current online OneDrive contents. This is a powerful recovery and re-alignment action that should be used sparingly and with care.

  7. Open a new issue
    If the problem persists after completing the steps above, proceed to Reporting an Issue or Bug below and open a new issue with the requested details and logs.

Reporting an Issue or Bug

[!IMPORTANT] Please ensure the problem is a software bug. For installation issues, distribution package/version questions, or dependency problems, start a Discussion instead of filing a bug report.

If you encounter a bug, you can report it on GitHub. Before opening a new issue report:

  1. Complete the Basic Troubleshooting Steps
    Confirm you’ve run through all steps in the section above.

  2. Search existing issues
    Check both Open and Closed issues for a similar problem to avoid duplicates.

  3. Use the issue template
    Open a new bug report using the issue template and fill in all fields. Complete detail helps us reproduce your environment and replicate the issue.

  4. Generate a debug log
    Follow this process to create a debug log.

    • If you are concerned about personal or business sensitive data in the debug log, you may:
      • Create a new OneDrive account, configure the client to use it, use dummy data to simulate your environment, and reproduce the issue; or
      • Provide an NDA or confidentiality agreement for signature prior to sharing sensitive logs.
  5. Share the debug log securely

    • Do not post debug logs publicly. Debug logs can include sensitive details (file paths, filenames, API endpoints, environment info, etc.).
    • Send the log via email to [email protected] using a trusted email account.
    • Archive and password-protect the log before sending (e.g. .zip with AES or .7z):
      • Example (zip with password): zip -e onedrive-debug.zip onedrive-debug.log
      • Example (7z with password): 7z a -p onedrive-debug.7z onedrive-debug.log
    • Send the password out-of-band (OOB) — not in the same email as the archive. Email [email protected] to arrange an OOB method (e.g. separate email thread, phone/SMS, or agreed channel).
    • If you require an NDA, attach your NDA or confidentiality agreement to your email. It will be reviewed and signed prior to exchanging sensitive data.

What to include in your bug report

When raising a new bug report, please include all details requested in the issue template, such as:

Providing complete information makes it much easier to understand, reproduce, and resolve your issue quickly.

[!NOTE]
Submitting a bug report starts a collaboration. To help us help you, please:

  • Stay available to answer questions or provide clarifications if needed
  • Test and confirm fixes in your own environment when a pull request (PR) is created for your issue

[!TIP]
Reports with missing details are much harder to investigate. Sharing as much as you can up front gives the best chance of a fast and accurate fix.

Known issues

Lists common limitations, known problems, diagnostics, and workarounds. Please read the Known Issues Advice

onedrive (abraunegg/onedrive)

Searching Database…

12.9K ·GitHub
这是什么?这是一个免费开源的 Linux 版 Microsoft OneDrive 客户端,可与 OneDrive 个人版、OneDrive for Business、Microsoft 365 和 SharePoint 文档库同步文件。
这是图形界面程序还是命令行工具?它是一个命令行客户端,既能在图形界面下运行,也能在无界面的服务器环境中使用。只有在需要 Intune SSO、桌面通知或文件管理器侧边栏集成时才用得到图形界面;另外有一个独立的社区版图形工具可用于配置。
怎么安装,怎么绑定我的 Microsoft 账号?按照安装指南安装发行版软件包或从源码构建,然后通过标准的浏览器 OAuth2 流程完成登录。在没有图形界面的服务器或纯终端系统上,可以改用 OAuth2 设备授权流程;企业用户还可以通过 D-Bus 使用 Intune SSO。
Windows 版 OneDrive 客户端有什么功能是它做不到的?有的:它无法在传输过程中实时加密/解密文件,也没有 Windows 那种只有访问时才下载的“按需文件”。但同步本身——包括共享文件夹和 SharePoint 文档库——是完全支持的。
它只能在 Linux 上运行,还是 BSD 系统也支持?所有主流 Linux 发行版以及 FreeBSD 和 OpenBSD 都支持,也可以用 Docker 或 Podman 在容器中运行。没有原生的 Windows 或 macOS 版本。
我可以修改代码并发布自己的版本吗?可以,它采用 GPLv3 许可证:只要衍生作品沿用同样的许可证,就允许分叉并继续开发。该项目也明确表示,一直遵守从最初的 skilion 客户端继承而来的 GPLv3 条款。
它是双向同步的吗?双向同步是默认模式,能让本地和云端数据保持完全一致。你也可以切换成只上传或只下载模式;dry-run 模式可以安全地测试配置改动;当备份是最稳妥的做法时,遇到冲突会通过创建本地备份来解决。
我可以只同步指定的文件夹或文件类型吗?可以。基于规则的客户端过滤支持包含、排除、通配符和 glob 模式,你可以按具体文件、文件夹或模式来筛选,只同步你想要的 OneDrive 内容。
如果文件被误删了会怎样?该客户端实现了 FreeDesktop.org 回收站规范,因此因云端删除而在本地被删掉的文件可以找回。它还能防止配置改动后意外删除或覆盖云端文件,并会对每个传输的文件做完整性校验。
这个项目是怎么来的?它始于 2018 年初,当时 skilion 客户端提交的修复和拉取请求一直没被合并,项目陷入停滞,于是有人分叉出了这个项目。原作者在 2020 年确认不再维护,skilion 仓库也于 2024 年 12 月在 GitHub 上被归档。
它能立刻发现文件的改动吗?几乎是实时的:本地改动通过 inotify 监听,云端的改动则通过原生 WebSocket 支持推送,在不适合用 WebSocket 的场合会回退到 webhook。传输是多线程的,还可以选择限制带宽速率。
Creator
abraunegg
Size
27.7 MB
Stars
12.9K
Age
8y
Commits · 90 Days