【问题标题】:What is the best utility/library/strategy with Python to copy files across multiple computers?使用 Python 跨多台计算机复制文件的最佳实用程序/库/策略是什么?
【发布时间】:2012-03-25 23:51:17
【问题描述】:

我在文件夹中存储了多台计算机上的数据。许多文件夹包含 40-100 G 大小从 500 K 到 125 MB 的文件。我需要归档大约 4 TB 的文件,并根据存储在每台计算机中的元数据构建一个未归档的元数据系统。

所有系统都运行 Linux,而我们想使用 Python。复制文件并将其存档的最佳方法是什么。

我们已经有了分析文件和填充元数据表的程序,它们都在 Python 中运行。我们需要弄清楚的是如何在不丢失数据的情况下成功复制文件,并确保文件已成功复制。

我们考虑过使用 rsync 和 unison 使用 subprocess.POPEn 来运行它们,但它们本质上是同步实用程序。这些本质上是复制一次,但可以正确复制。复制文件后,用户将移动到新的存储系统。

我担心的是 1) 复制文件时不应该有任何损坏 2) 文件复制必须高效,尽管没有速度预期。 LAN 为 10/100,端口为千兆。

是否有任何可以合并的脚本,或任何建议。所有计算机都将启用 ssh-keygen,以便我们进行无密码连接。

目录结构将在新服务器上维护,这与旧计算机非常相似。

【问题讨论】:

  • 使用同步工具复制有问题吗?
  • 没有。不是真的,但是在 Python 中使用 rsync 或 unison 是最好的推荐方式。我们需要使用 Python 运行整个过程,因为有一个数据生成程序可以更新数据库中的多个表

标签: python file rsync unison


【解决方案1】:

我会查看python fabric 库。该库用于简化 SSH 的使用,如果您担心数据完整性,我会使用 SHA1 或其他哈希算法在传输之前为每个文件创建指纹,并比较在初始和最终目的地生成的指纹值.所有这些都可以使用织物来完成。

【讨论】:

    【解决方案2】:

    如果更无缝的 python 集成是您可以考虑的目标,

    Duplicity

    pyrsync

    【讨论】:

      【解决方案3】:

      我认为 rsync 是解决方案。如果您担心数据完整性,请查看手册页中“--checksum”参数的说明。

      其他可能派上用场的参数是“--delete”和“--archive”。确保正确检查命令的退出代码。

      【讨论】:

        猜你喜欢
        • 2010-09-08
        • 2010-09-23
        • 1970-01-01
        • 2014-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多