如何使用 Python 克隆文件?

Posted

技术标签:

【中文标题】如何使用 Python 克隆文件?【英文标题】:How to clone files with Python? 【发布时间】:2018-06-05 08:12:41 【问题描述】:

在 macos 上使用 bash,我可以使用 cp -c 创建 COW 文件克隆。是否有提供相同功能的 Python 库? shutil 中的复制功能似乎没有提到克隆。

在 APFS 克隆上:https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/APFS_Guide/Features/Features.html

在 BSD 克隆文件上:http://www.manpagez.com/man/2/clonefile/

【问题讨论】:

这是文件系统的特性吗? ***.com/questions/123198/… 您是否正在寻找 cli 解决方案? 你只需要牛缓冲吗?在 python 中,这通常被称为mmap 我无法在 osx 上找到任何关于牛文件的信息... 我收回来,我刚刚发现一篇关于 APFS 添加牛的文章(除此之外......) 【参考方案1】:

Python 标准库不支持克隆文件。

要在子进程中使用cp -c 克隆文件,您可以使用此函数:

def clonefile(source, dest):
    subprocess.check_output(["cp", "-c", source, dest])

【讨论】:

【参考方案2】:

好的,我将其标记为重复,但不知道复制和克隆之间的区别。

这是在 Python 中尽可能详细地复制文件的说明的位置: https://docs.python.org/3.6/library/shutil.html

它以以下警告开头: 警告即使是更高级的文件复制函数(shutil.copy()、shutil.copy2())也无法复制所有文件元数据。

如果您想要的是文件的操作系统克隆,您将需要运行系统调用。该系统调用将需要特定于操作系统,并且该调用将从以下问题中提取: Calling an external command in Python

因此,请查看复制库,看看是否可以获得足够的详细信息,以及是否无法使用系统特定的调用。

【讨论】:

您对外部命令的引用可能很有用,但 OP 已经提到 shutil 不是可接受的解决方案。 我发现的所有文档都表明,shutil 与 Python 一样深......我承认,我对答案感到有点高兴。 而且,坦率地说,对于 Python 来说,拥有足够特定于系统的标准库以跟上 Bash、ksh 等的强大功能并没有多大意义。编译的解决方案需要完成所有工作各种系统查找和(可能是错误的)跳舞跟上。所以我想说你最好坚持使用能满足你特殊需要的工具。

以上是关于如何使用 Python 克隆文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用GitPython克隆存储库

如何使用 Python 和 PyGithub/GitPython 克隆我的 git 存储库?

如何使用vsphere client 克隆虚拟机

如何克隆文件名中带有冒号的文件

如何使用私钥克隆 GIT 存储库

git gui:如何克隆和推送?