存储魔法

odm的Python项目详细描述


< ODM >

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 以管理员身份登录时。

谷歌服务账户

  • 在创建项目 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受到严重限制。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Cassandra复制因子大于节点数   java J2EE JTA事务回滚不适用于OSE Glassfish 4.0(Build 89)   java spring安全预认证用户登录   org的java类文件。反应流。从RxJava编译示例时未找到Publisher?   java在使用dataFormat作为POJO通过Camel调用Web服务时无法设置SOAP标头   Javafx类的java静态实例   java如何防止一个部件在关闭时覆盖另一个部件的位置   sql server无法从我的java代码连接到数据库   java在JList(Swing)中显示带有的ArrayList   从Java中的CXF服务获取WSAddressing数据   使用资产文件夹进行java简单json解析(本地)   java LDAPException未绑定的无效凭据   JavaJSFspring部署到weblogic   JAVA中字符数组中的特定元素排列?   如果脚本位于不同的目录中,则ant不会使用exec标记运行Javashell脚本