存储魔法
odm的Python项目详细描述
ODM是一组用于从OneDrive管理性下载内容的工具 不需要最终用户参与的本地目录树。它也 包括一个工具,用于管理性地将本地目录树上载到google 驱动器.< /P>
设置您的环境
这个工具主要是在linux上使用python 2.7编写和测试的。部分 这些代码也在python>;=3.4的不同版本下进行了测试。
对于开发,我们建议使用virtualenv安装odm的python 依赖关系。
- 运行
init.sh
设置virtualenv - 当您想使用odm时,source env-setup.sh(
)。env set up.sh
)设置 必要的环境变量。
凭证
odm命令需要授权的azure ad 2.0客户端的凭据。 gdm命令需要授权的google服务帐户的凭据。
azure广告2.0
- 在https://apps.dev.microsoft.com/" rel="nofollow">https://apps.dev.microsoft.com/注册你的客户端(azure ad 2.0客户端
也被称为"聚合应用程序")。
- 在
application secrets
下,选择generate new password
;将其用作 ODM配置中的客户机密钥。 - 在
platforms
下,添加一个重定向url为https://localhost
(我们使用的认证流是 在任何方面都没有用处,但不能省略) - 在Microsoft Graph Permissions下添加必要的应用程序权限:
- user.read.all
- files.read.all
- 注释.阅读.全部
- 在
- 通过访问授予租户权限
https://login.microsoftonline.com/common/adminconcept?客户端id=foo&;重定向uri=https://localhost
以管理员身份登录时。
- foo应该替换为您注册的客户机ID
- 如果此步骤成功,则应重定向到https://localhost/?管理员同意=真租户=栏,可能无法加载。
谷歌服务账户
- 在创建项目 https://console.developers.google.com/cloud resource manager
- 在项目内部,创建一个服务帐户。
- 给帐户起个有意义的名字。
- 帐户不需要任何角色。
- 选择
提供新的私钥和json密钥类型。
- 启用
g套件全域委派
- 创建帐户将下载一个json文件;将其用作
凭证
在ODM配置中。
- 在项目内部,启用google drive api。
- 单击左上角的三个条形图标打开导航菜单。
- 单击
API&Services
- 单击"启用API和服务"
- 查找Google Drive API
- 单击"启用"
- 作为超级管理员,在https://admin.google.com/" rel="nofollow">https://admin.google.com/授权作用域
- 单击
安全性
- 单击高级设置
- 单击"管理API客户端访问"
- 输入客户端ID并为其授权
https://www.googleapis.com/auth/drive
- 单击
从OneDrive下载
单个操作的设计是等幂的和干净的 可恢复的因为获取大型驱动器的元数据 完成了代价高昂的操作(无论是在api调用量还是时间上) 作为一个单独的步骤,下载操作使用此缓存 元数据文件而不是实时API。
获取元数据
odm user ezekielh show
odm user ezekielh list-drives
odm user ezekielh list-items > ezekielh.json
下载项目
下载的文件在保存时会被验证,但您也可以重新检查 以前下载的文件作为单独操作的状态,或清除 通过删除无关文件来删除现有的目标文件夹。
odm list ezekielh.json list-filenames
odm list ezekielh.json download-estimate
odm list ezekielh.json download --dest /var/tmp/ezekielh
odm list ezekielh.json verify --dest /var/tmp/ezekielh
odm list ezekielh.json clean-filetree --dest /var/tmp/ezekielh
转换OneNote笔记本
OneNote有一个基本的API,它允许一些但不是所有的笔记数据 提取并转换为HTML文档。
odm user ezekielh list-notebooks > ezekielh-onenote.json
odm list ezekielh-onenote.json convert-notebooks --dest '/var/tmp/ezekielh/Exported from OneNote'
上传到Google Drive
gdm filetree /var/tmp/ezekielh upload ezekielh --dest "Magically Delicious"
gdm filetree /var/tmp/ezekielh verify ezekielh --dest "Magically Delicious"
已知限制
保留单个文件的修改时间,但不尝试 保留文件夹的时间。
OneDrive文件名最长可达400个字符,而大多数Unix 文件系统只允许255个字节(可能只有63个utf-8 如果odm遇到的文件名或路径组件超过 255字节它将多余的字符分块到主目录组件中。
OneNote文件可以通过OneDrive API下载,但它们没有 关联的哈希值,无法通过 因此无法进行验证。
OneDrive在列出文件时有时会返回不正确的文件哈希。 下载文件后,api将返回正确的 哈希。< /P>
OneDrive扫描检测到的恶意软件文件无法通过下载 API.
Microsoft对OneDrive中的文件使用非标准指纹方法 生意。odm包含一个非常慢的纯python实现 算法使文件验证可以开箱即用,但是如果 处理任何大量的数据指纹计算可以 通过安装 libqxh
迁移工具
ODM在这一点上经过了很好的测试,已经在 密歇根州将一次性迁移约6000个用户,总容量为5tib 数据。可以在contrib目录中找到迁移脚本示例。
有关OneNote导出的详细信息
奥德姆的大部分魔法就像纳尼亚的衣橱。OneNote导出更多 类似于哀伤的配置。
OneNote API不返回某些类型页面的任何内容 元素,所以数学表达式(可能还有其他一些节点类型) 将在转换过程中丢失。
OneNote API受到严重限制。