Microsoft OneDrive Business/Office 365 Pro 提供 1 TB 的云存储,但不幸的是,从来没有在 Linux 上同步它的方法。
答案1
Ubuntu 18.04 及更高版本
更新:
下面的安装说明有效apt
,但 中的版本apt
太旧,无法解析授权 URI。相反,按照INSTALL.md
文档从源代码编译和安装是可行的:
https://github.com/abraunegg/onedrive/blob/master/docs/INSTALL.md
以前的:
有一个OneDrive 客户端在 Ubuntu 18.04 及更高版本的默认 Ubuntu 存储库中。OneDrive 是微软的云存储系统。此软件包提供了专门用于与 OneDrive 云存储同步的命令行客户端。
使用以下命令安装:
sudo apt install onedrive
首次运行时,它会要求您通过链接进行身份验证。身份验证后,您可以使用 启用守护进程,systemctl --user enable onedrive
然后systemctl --user start onedrive
。
它将在本地监控和同步 OneDrive 数据~/OneDrive
。可以在手册页中找到进一步的说明man onedrive
。设置非常简单,只需大约五分钟。
答案2
目前,实验性的 onedrive-d 是一个开源程序,它只能同步个人 OneDrive 帐户,因为它不接受 Microsoft Sharepoint 链接。以下是使用以下方法同步 OneDrive Business/Office 365 的方法Linux 版 GoodSync,个人使用可免费。
安装合适的版本到你的 Linux 机器例如:
./goodsync-linux-x86_64-release.run
回答者no 适用于 GoodSync Connect 设置和 GsServer Web UI。
- 在网络浏览器中打开 OneDrive。选择右下方的“返回经典 OneDrive”。
- 浏览器中的网址现在将如下所示:
https://xxxxxxx.sharepoint.com/xxxxxxxxxxx/Documents/Forms/All.aspx
并根据该网址获取您的同步链接将是office365://xxxxxxx.sharepoint.com/xxxxxxxxxxx/Documents
。 在您的主目录中的 .goodsync 子文件夹中创建一个新文件:
gedit ~/.goodsync/jobs.tix
在文件中输入以下代码并保存:
<Job> Name = "OneDrive_Sync" Side1 = <SideOptions> Dir = <Connect> Url = "put_your_syncing_link_here" UserID = "put_your_OneDrive/Office365_Bussiness_email_here" </Connect> </SideOptions> Side2 = <SideOptions> Dir = <Connect> Url = "file:///your_home_folder/one_drive_folder" </Connect> </SideOptions> Direction = 0 ExcludeHidden = No ExcludeSystem = No DetectMovesAndRenames = Yes LinksOption = 1 ExcludeEmptyFolders = No LimitChangesPercent = 100 AutoResolveConflicts = 3 DetectMovesAndRenames = Yes </Job>
开始同步过程:
gsync sync "OneDrive_Sync"
在此步骤中,您的 Web 浏览器将打开 OneDrive/Office 365 页面并请求您授权允许 goodsync 访问您的帐户。输入您的凭据后,同步将开始。
限制:Microsoft 不允许长度超过 270 个字符的 URL 请求,因此 GoodSync 无法同步路径名较长的文件。
享受!
答案3
克隆支持 OneDrive for Business。请参阅文章如何使用 Rclone 在 Linux 中挂载 OneDrive(支持企业和个人账户) - Linux Uprising 博客以供使用。
onedrive1
下面是我使用 rclone 1.48.0(在 Fedora 30 上)设置新远程的示例:
$ rclone config
2019/10/10 06:35:56 NOTICE: Config file ".config/rclone/rclone.conf" not found - using defaults
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
name> onedrive1
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
⋮
19 / Microsoft OneDrive
\ "onedrive"
⋮
Storage> 19
** See help for onedrive backend at: https://rclone.org/onedrive/ **
Microsoft App Client Id
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_id>
Microsoft App Client Secret
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_secret>
Edit advanced config? (y/n)
y) Yes
n) No
y/n> n
Remote config
Use auto config?
* Say Y if not sure
* Say N if you are working on a remote or headless machine
y) Yes
n) No
y/n> y
If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
Log in and authorize rclone for access
Waiting for code...
Got code
Choose a number from below, or type in an existing value
1 / OneDrive Personal or Business
\ "onedrive"
2 / Root Sharepoint site
\ "sharepoint"
3 / Type in driveID
\ "driveid"
4 / Type in SiteID
\ "siteid"
5 / Search a Sharepoint site
\ "search"
Your choice> 1
Found 2 drives, please select the one you want to use:
0: OneDrive - Example Inc (business) id=b!gFLg-RRe****-T9B****
1: OneDrive - Example Inc (business) id=b!gFLg-RRe****-T-H****
Chose drive to use:> 1
Found drive 'root' of type 'business', URL: https://example-my.sharepoint.com/personal/myname_example_com/Documents
Is that okay?
y) Yes
n) No
y/n> y
Current remotes:
Name Type
==== ====
onedrive1 onedrive
e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q
在我的情况下,驱动器 0 的 URL 以 结尾/ElementinnerHTML
并且不包含文件。
然后通过命令行将其挂载到本地目录,rclone-浏览器或者自 v1.49 起的 Web GUI。
答案4
虽然 xybu 原有的常用onedrived
工具仍然不支持 OneDrive for Business,而只支持个人 OneDrive。但是,derrix060 在 GitHub 上对这个项目进行了 fork它为商业客户端提供了一个可以工作(但仍然存在缺陷)的实现。
警告:当你使用此方法时,我强烈建议你始终通过在线检查来验证文件是否已正确同步https://www.office.com,和/或使用本页末尾显示的包装脚本至少通过桌面通知获知任何错误!
有时 onedrived 似乎无法获取某些更改或正确上传它们,导致您的 OneDrive 处于(部分)不同步状态。还可能发生由于某种原因而与自身产生合并冲突的情况,并通过在括号中附加主机名和可选的数字来在本地重命名您的文件。不幸的是,没有关于错误的通知,但您可以在日志文件中看到条目。
如果发生这种情况,您可以通过触摸它们或重命名它们或它们所在的文件夹等方式尝试再次同步相应的文件。
提示:似乎 onedrived 库经常出现问题,尤其是直接保存在 OneDrive 根目录中的文件。最好将所有文件放在子目录中,而不是直接将它们转储到 OneDrive 文件夹中。
虽然听起来很蠢,但我也注意到,通过 OneDrive Web 客户端上传文件并等待它们同步回本地文件夹(虽然这可能需要几分钟)似乎比在本地创建或复制/移动文件造成的问题更少。这是否可行或完全违背 OneDrive 的目的取决于你自己的决定……
请参阅项目的自述文件以获取完整的安装说明,但这里有一个简短的摘要:
安装
确保您没有安装其他版本的
onedrived
(或onedrive-d
)。安装依赖包:
sudo apt install build-essential python3-dev libssl-dev inotify-tools python3-dbus libdbus-1-dev libdbus-glib-1-dev
ngrok
从官方网站下载最新的Linux 客户端https://ngrok.com/download。Ubuntungrok-client
存储库中的软件包太旧,不符合要求。
解压下载的ngrok-stable-linux-amd64.zip
存档。它包含一个ngrok
二进制文件,您应将其放在 上的某个位置$PATH
,例如/usr/local/bin/
。
注册 ngrok 可能没有必要。onedrived
使用以下方法从 GitHub安装Python3 应用程序pip3
:sudo -H pip3 install git+https://github.com/derrix060/onedriveClient.git
可选择配置日志文件位置
onedrived
,您可以在其中检查问题是否存在任何无法正常工作的情况,例如:onedrived-pref config set logfile_path ~/.config/onedrived/onedrived.log
帐户设置和驱动器配置
安装成功后,您必须配置您的帐户和驱动器:
通过运行以下命令使用交互模式添加您的 OneDrive for Business 帐户:
onedrived-pref account add -b
交互式向导会两次要求您在浏览器中打开一个链接,您必须在其中使用 Microsoft Business 帐户授权该应用程序。
它会要求您将确认授权后重定向到的 URL 粘贴回交互式向导中。请按照指示操作并按照命令给您的说明进行操作。通过检查以下命令的输出来验证帐户是否已成功添加。它应该看起来类似并列出您登录的帐户:
$ onedrived-pref account list All OneDrive accounts associated with user "YOUR_UBUNTU_USERNAME": # Account ID Owner Name Email Address Profile Type --- ------------------------- ------------- -------------------- -------------- 0 YOUR_PERSONAL_ACCOUNT_ID YOUR_NAME YOUR_BUSINESS_EMAIL Business
通过运行以下命令在交互命令模式下配置您的驱动器:
onedrived-pref drive set
您将看到所有驱动器的列表,并会要求您输入要添加到本地配置的驱动器的行号。
然后,您必须指定要用作与驱动器同步的根文件夹的本地目录。您只需点击Enter,它就会使用默认值~/OneDrive
。如果路径不存在,则会创建该路径。对于要使用的忽略文件的路径,也是一样,您只需点击Enter,它就会使用默认值~/.config/onedrived/ignore_v2.txt
并在必要时创建它。检查以下命令的输出以显示有关所有可用和已配置驱动器的信息。它应该在标题下显示您刚刚设置的驱动器,并且设置正确
Drives that have been set up
:onedrived-pref drive list
启动守护进程
现在您的驱动器已配置完毕,您需要尝试启动onedrived
守护进程。我建议首先以调试模式启动它,以防出现您可能错过的任何问题。这将onedrived
在前台启动:
onedrived start --debug
如果一切正常,命令没有崩溃并退出,请尝试将一些文件放在本地 OneDrive 文件夹中,看看它是否同步。您应该可以通过访问 OneDrive Web 应用程序来验证这一点https://www.office.com并检查您在本地添加的文件是否出现在那里。
您可以通过按+onedrived
再次退出终端中的该进程。CtrlC
要正常启动onedrived
,作为后台守护程序,请使用以下命令运行它:
onedrived start
您可能应该将此命令添加到启动应用程序中,以便每次登录时它都会自动启动。请参阅如何在登录时自动启动应用程序?为了那个原因。
错误通知包装器
如果您想在onedrived
记录错误(例如文件同步失败)时获取桌面通知,这里有一个包装脚本,可以实时解析日志文件并使用通知发送将其显示给您。
您可以启动不带参数的包装脚本(或将其放入自动启动应用程序中)而不是命令onedrived start
。
#!/bin/bash
LOGFILE=~/.config/onedrived/onedrived.log
ICON_START=weather-overcast
ICON_STOP=weather-few-clouds
ICON_ERROR=weather-severe-alert
onexit () {
onedrived stop
notify-send -i "$ICON_STOP" "OneDrive" "Wrapper stopped"
echo "onedrived-wrapper stopped"
}
trap onexit EXIT
onedrived stop
echo "---" >> "$LOGFILE"
onedrived start || {
echo "Failed to start onedrived!"
exit 1
}
notify-send -i "$ICON_START" "OneDrive" "Wrapper started"
echo "Monitoring onedrived.log for error messages..."
tail -n 1 -F --pid="$(pgrep -f "onedrived start")" "$LOGFILE" |
while read LINE ; do
echo "$LINE"
if MESSAGE="$(grep -Pio '(?<=ERROR: ).*' <<< "$LINE")" ; then
notify-send -i "$ICON_ERROR" "OneDrive Error" "$MESSAGE"
fi
done