在Python中归档(压缩tar)时包含元数据(用户ID和时间戳)
我正在备份一个文件系统,需要确保保留一些元数据(比如文件的拥有者和创建时间)。
Python里的tarfile
模块非常有用,我在我的解决方案中广泛使用它。不过,我发现用这个模块创建的tar文件不能保留文件的元数据(可能是因为copy
和copy2
这两个方法做不到这一点)。
你会如何在Python中处理这个问题呢?
补充说明:
为了让大家更清楚:Python的tarfile
模块确实提供了通过Tarinfo
对象来存储元数据的方法。简单来说,Tarinfo
对象是Tar
对象的一个成员,它包含了你可能需要的所有信息。请参考被接受的帖子。
谢谢!
1 个回答
2
你说“可能”?那意思是你不确定吗?你有没有试过?不过据我所知,tar文件不会保留创建时间(ctime),而且保留这个时间也没什么意义,因为解压的时候这个时间应该会被重置。不过,修改时间(mtime)是会被保留的,tarfile模块会处理这个时间。
Python的tarfile模块在你添加文件的时候会使用TarInfo对象。就像这样:
TarFile.addfile(tarinfo, fileobj=None)
TarInfo对象里面包含了文件的信息:
TarInfo.mtime
Time of last modification.
TarInfo.uid
User ID of the user who originally stored this member.
TarInfo.gid
Group ID of the user who originally stored this member.
还有很多其他的元数据。可以查看一下 http://docs.python.org/library/tarfile.html。