You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用Unix脚本从SharePoint下载文件时遇文件损坏问题

解决Unix脚本下载SharePoint文件损坏问题

一、先排查Curl下载损坏的常见坑

  • 没开二进制传输模式:docx、pdf这类二进制文件,Curl默认可能用文本模式传输,导致文件损坏,得强制二进制写入。
  • 认证方式不对:SharePoint分本地版(常用NTLM)和在线版(OAuth),普通-u账号密码可能不生效,下回来的是登录页面而非实际文件。
  • 没处理重定向:SharePoint经常会302跳转,不加-L参数会下载跳转页面而非目标文件。

二、修复后的Curl脚本(本地SharePoint/NTLM认证)

如果你的站点用域账号NTLM认证,试试这个命令:

curl -L -k --ntlm -u "DOMAIN\你的账号:你的密码" "https://你的sharepoint地址/sites/xxx/Documents/目标文件.pdf" -o 本地文件名.pdf

参数说明:

  • -L:自动跟随重定向
  • -k:临时忽略SSL证书警告(生产环境建议去掉,配置信任证书)
  • --ntlm:启用NTLM认证,适配企业内部SharePoint
  • -o:指定本地输出文件,确保二进制写入模式

三、SharePoint Online(云版)的OAuth认证脚本

云版SharePoint不支持NTLM,得用Azure AD应用获取令牌:

  1. 先在Azure AD注册应用,拿到client_id、client_secret、tenant_id
  2. 获取访问令牌(需要安装jq解析JSON):
TOKEN=$(curl -X POST "https://login.microsoftonline.com/{你的tenant_id}/oauth2/v2.0/token" \
  -d "client_id={你的client_id}" \
  -d "scope=https://graph.microsoft.com/.default" \
  -d "client_secret={你的client_secret}" \
  -d "grant_type=client_credentials" | jq -r '.access_token')
  1. 用令牌下载文件(通过Microsoft Graph API):
curl -L -H "Authorization: Bearer $TOKEN" \
  "https://graph.microsoft.com/v1.0/sites/{站点ID}/drive/items/{文件ID}/content" \
  -o 本地文件名.docx

四、更省心的替代方案:用rclone

rclone专门处理云存储传输,配置一次就能直接用:

  1. 安装rclone:Debian/Ubuntu用sudo apt install rclone,其他系统对应包管理命令
  2. 运行rclone config,选择SharePoint类型,按提示完成认证
  3. 下载文件命令:
rclone copy "配置的远程名:/sites/xxx/Documents/目标文件.xlsx" ./本地文件夹/

这个方法自动处理认证、重定向和二进制传输,基本不会出现文件损坏问题。

内容的提问来源于stack exchange,提问作者SRNS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 16:03:21