【问题标题】:Can I synchronize files between remote folders using native Python/pywin32?我可以使用本机 Python/pywin32 在远程文件夹之间同步文件吗?
【发布时间】:2016-06-26 14:23:23
【问题描述】:

我在一台可以访问远程文件服务器(Windows)的台式机上。登录时授予读/写访问权限,我不需要重新输入用户名和密码。

我想:

  • 将几个非常大的文件从一个远程文件夹复制到另一个文件夹
  • (目标文件夹可能包含传入文件的副本)
  • 避免产生不必要的网络流量
  • (包括不复制副本)

目前我对所有文件执行盲shutil.copy2()。这意味着不必要地复制重复项。系统管理员还报告说,这会产生不必要的网络流量,因为数据从 remote-folder-1 复制到 local-memoryremote-folder-2.

本机 Python 或 pywin32 中是否存在满足这些要求的现有命令?


丢弃的选项包括 CopyFileEx via pywin32(没有重复检查)和原生 Python byte-checkingchecksumming(仍然读取文件并因此产生网络流量)。

回退包括记录校验和、stat-based comparison(无字节检查)和乐观(部分)校验和。

【问题讨论】:

  • 是否可以为这种环境的双方创建一个包?就像 rsync 需要另一个软件才能有效一样,是否可以在两台机器上“安装”脚本并通过套接字进行协商?这将通过两个脚本在实际传输任何内容之前同步需要传输的文件来解决网络负载问题。如果没有,您可以使用pywin32 在远程机器上执行WMI 命令并获取校验和。这至少解决了一半的问题。

标签: windows python-2.7 duplicates lan file-management


【解决方案1】:

Windows 有一些用于同步的库存解决方案 - offline filesbriefcase (deprecated since Win8)、sync center (new in Vista)。第二个似乎有only a limited API,而其他的似乎很完整。如果您不想使用它们中的任何一个,您将使用 3rd 方解决方案。 Python 可以使用它们中的任何一个(例如使用ctypes)。

Python 本身在标准库中没有数据同步(因为它显然是一项非常自定义的任务)。当然,有很多第三方模块可以做到这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-23
    • 1970-01-01
    相关资源
    最近更新 更多