gpt4 book ai didi

cmis - 检测远程 CMIS 存储库更改的最有效方法是什么?

转载 作者:行者123 更新时间:2023-12-04 22:49:04 27 4
gpt4 key购买 nike

一个 Remote CMIS repository包含许多文件夹/文件。

我在写 a software使这些文件夹/文件的本地副本保持同步。

  • 在第一次运行时,我只是递归下载所有内容。
  • 在以后的运行中,我检查发生了什么变化,并下载任何变化。

  • 检查远程更改的最有效方法是什么?
    (附加/删除文件/文件夹)
    最有效 = 最少的带宽使用。

    我只能使用 CMIS protocol ,并且我无法在远程服务器上运行任何自定义软件。

    到目前为止我的想法:
  • 想法1:每次都重新下载everthing。
  • 思路二:查看根文件夹的修改日期,希望修改日期是递归的。
  • 想法 3:使用 CMIS 搜索查找比我上次同步时间更新的所有文件。问题:这不会告诉我哪些文件已被删除。

  • 还有其他想法吗?
    我不太了解CMIS协议(protocol),可能有更方便的东西。

    最佳答案

    使用存储库的更改日志是正确的方法,但要意识到并非每个存储库都支持这一点。例如,对于 Alfresco,您必须配置审计子系统,并且必须在 alfresco-global.properties 中设置 audit.cmischangelog.enabled=true。

    要了解您的存储库是否支持更改,您可以查看存储库的 getCapabilities 响应的结果。如果您看到“更改”设置为“无”,则您的存储库不支持更改日志。

    假设确实如此,您需要向存储库询问其最新的更改日志 token 。您可以从 getRepositoryInfo 获取。在调用 getContentChanges 之前保存它。然后,在下一次调用时,传入 token 。您将获得自发行 token 以来所做的更改。

    因此,您的代码需要:

  • 检查 getCapabilities 以获取 Changes = None
  • 以外的其他内容
  • 保存 getRepositoryInfo 的 latestChangeLogToken
  • 第一次询问时,调用不带参数的 getContentChanges
  • 下次询问时,使用上次保存的 token 调用 getcontentChanges
  • 然后,您可以处理结果集。每个更改日志条目都会告诉您其类型(创建、更新、删除、权限等,具体值参见规范)并提供更改对象的 cmis:objectId。
  • 重复步骤 2。

  • 我有一个“cmis-sync”脚本,它使用 Python 中实现的这种方法进行单向同步。我已经针对 Alfresco 作为源和 OpenCMIS InMemory 存储库作为目标对其进行了测试。如果有兴趣,我可以提供。

    关于cmis - 检测远程 CMIS 存储库更改的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12190247/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com