【问题标题】:Request recursive list of server files from client从客户端请求服务器文件的递归列表
【发布时间】:2021-05-21 15:31:12
【问题描述】:

我需要定期(每天或每周)获取文件夹及其所有子文件夹中文件的完整列表,以检查更改。该文件夹位于我作为网络共享访问的服务器上。 该文件夹目前包含大约 250,000 个子文件夹,并且在未来还会继续增长。 除了挂载文件系统 R/W 之外,我没有任何访问服务器的权限。

我目前检索文件列表的方式是在文件夹上递归地使用 python 的os.walk() 函数。这受到互联网连接延迟的限制,目前大约需要 4.5 小时才能完成。

执行此操作的更快方法是创建一个包含整个文件列表的文件服务器端,然后将此文件传输到我的计算机。

有没有办法从客户端请求这样一个递归的文件列表?

python 解决方案将是完美的,但我也愿意接受其他解决方案。 我的脚本目前在 Windows 上运行,但将来可能会迁移到 Linux 服务器;与操作系统无关的解决方案是最好的。

【问题讨论】:

    标签: python smb fileserver


    【解决方案1】:

    你已经回答了你的问题:

    除了挂载文件系统 R/W 之外,我没有任何访问服务器的权限。

    此后无需添加任何内容,因为任何服务器端处理都需要能够(直接或间接)在服务器上启动进程。

    如果您可以与服务器管理员协作,您可以要求他们定期启动一个服务器端脚本,该脚本将构建一个包含您需要的文件的压缩存档(例如 zip 文件),并在发生时将其移动到特定位置完毕。然后您只需下载该压缩存档即可节省大量网络带宽。

    【讨论】:

      【解决方案2】:

      您可以通过多种方式解决此问题。我会通过在 ssh 上运行一个脚本来做到这一点,比如

      ssh xys@server 'bash -s' < local_script_togetfilenames.sh
      

      如果你更喜欢 python,你可以通过添加 #!python 来运行类似的 python 脚本,假设 python 安装在服务器上

      如果你想完全使用 python,你应该探索 python RPC(远程进程调用) 您可以使用 rPyC 库。文档是 here

      【讨论】:

      • 是的,这很理想,但我没有对服务器的 SSH 访问权限
      猜你喜欢
      • 2012-11-30
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多