根据http://docs.python.org/library/shutil.html使用这些方法不会复制元数据,包括所有权,ACL和资源分叉。是否会使用基本文件读取方法打开文件并将其写回到重复文件,换行,保持文件元数据完好无损?我的猜测是肯定的。目标磁盘是否必须与源保持完整的源格式相同?我的猜测是否定的。 我浏览了一下,没有看到任何特定的内容。我想基本上使用python将运行不同操作系统的3台不同的计算机备份到一个中心位置。复制的文件完全相同,就好像我可以替换原件并看不出任何差异一样。感谢您的任何见解!
答案 0 :(得分:2)
我有一个类似的问题,我必须保留unix文件系统的所有者和组信息。这些只是整数,但shutil.copy2不保留它们。虽然您要跨系统进行复制,但您可以修改代码以在某处存储元数据,然后在完成复制后应用它。
import os
import shutil
import stat
def CopyMinusP(src, dest):
file_stat = os.stat(src)
owner = file_stat[stat.ST_UID]
group = file_stat[stat.ST_GID]
print "Owner: %d Group: %d" % (owner, group) # for diagnostics
shutil.copy2(src, dest)
os.chown(dest, owner, group)
答案 1 :(得分:0)
不,只是打开源文件进行读取,而写入的目标文件不会复制元数据。操作系统应该如何知道呢?此外,不同的文件系统支持不同的元数据,并且没有与文件系统无关的方式来复制所有元数据。在不同文件系统之间进行复制时,通常无法保留元数据。复制到FAT文件系统时,如何保留资源分支?在FAT上根本就没有这样的东西。所以你的猜测都是错误的。
您应该使用一个好的备份解决方案,而不是完全支持您使用的所有文件系统。