使用wget从SharePoint下载Shared Documents文件夹无输出求助
你的wget命令存在几个关键问题,导致无输出且无法下载:
- Bearer令牌缺失:
Authorization: Bearer后没有填入有效的访问令牌,认证直接失败。 - 引号嵌套错误:命令里的单引号混用,导致URL被错误截断,wget无法识别正确的请求地址。
- API端点不适用:
/_api/Web/GetFolderByServerRelativeUrl返回的是文件夹的JSON元数据(比如文件列表、属性),不是可直接递归下载的资源路径,wget没法通过这个端点直接拉取整个文件夹。
修复方案
方法1:用wget手动枚举并下载文件
首先需要获取有效的SharePoint访问令牌:
- 如果你有Azure CLI,运行以下命令获取令牌:
az account get-access-token --resource https://<你的租户名>.sharepoint.com
从输出中提取accessToken字段的值。
然后分两步操作:
- 获取文件夹内的文件列表:
wget --no-check-certificate --header 'Authorization: Bearer <你的访问令牌>' \ 'https://(confidential).sharepoint.com/sites/<你的站点名称>/_api/Web/GetFolderByServerRelativeUrl('Shared%20Documents')/Files?$select=ServerRelativeUrl' -O files.json
这个命令会把文件列表保存为files.json。
- 循环下载每个文件:
需要用jq解析JSON(先确保已安装jq),然后逐个下载:
for file_path in $(jq -r '.value[] | .ServerRelativeUrl' files.json); do wget --no-check-certificate --header 'Authorization: Bearer <你的访问令牌>' \ "https://(confidential).sharepoint.com$file_path" done
方法2:用rclone简化文件夹下载(更推荐)
wget处理SharePoint的递归下载比较繁琐,rclone有原生的SharePoint支持,操作更简单:
- 配置rclone:运行
rclone config,选择SharePoint类型,按照提示完成站点、认证信息的配置(可以用Azure AD令牌或交互式登录)。 - 下载整个文件夹:
rclone copy "你的rclone远程名:Shared Documents" ./本地目标文件夹
注意事项
- 确保你的访问令牌有
Files.Read.All或Sites.Read.All的权限,否则会被拒绝访问。 - 原命令中的
-r(递归下载)参数位置错误,应该放在wget的选项开头,比如wget -r --no-check-certificate ...,但即使位置正确,原API端点也不支持递归下载。
内容的提问来源于stack exchange,提问作者user21319481
相关产品推荐
相关产品推荐

