1

根据http://docs.python.org/library/shutil.html,使用这些方法不会复制元数据,包括所有权、ACL 和资源分叉。使用基本文件读取方法打开文件并将其逐行写回重复文件,保持文件元数据完整吗?我的猜测是肯定的。目标磁盘是否必须与源磁盘的格式相同才能保持原样?我的猜测是否定的。我四处浏览并没有看到任何具体的内容。我想基本上使用 python 将 3 台运行不同操作系统的不同计算机备份到一个中心位置。被复制的文件是相同的,就好像我可以替换原件并且看不到任何差异一样,这是不可或缺的。感谢您的任何见解!

4

2 回答 2

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)
于 2013-10-18T01:52:18.177 回答
0

不,只需打开源文件进行读取和目标文件进行写入不会复制元数据。操作系统应该如何知道它应该?此外,不同的文件系统支持不同的元数据,并且没有文件系统独立的方式来复制所有元数据。在不同文件系统之间复制时,通常不可能保留元数据。复制到 FAT 文件系统时应如何保留资源分叉?FAT上根本没有这样的东西。所以你的两个猜测都是错误的。

您应该使用一个好的备份解决方案,而不是完全支持您使用的所有文件系统。

于 2012-08-09T16:41:24.397 回答