在Python中归档(压缩tar)时包含元数据(用户ID和时间戳)

1 投票
1 回答
1177 浏览
提问于 2025-04-15 18:31

我正在备份一个文件系统,需要确保保留一些元数据(比如文件的拥有者和创建时间)。

Python里的tarfile模块非常有用,我在我的解决方案中广泛使用它。不过,我发现用这个模块创建的tar文件不能保留文件的元数据(可能是因为copycopy2这两个方法做不到这一点)。

你会如何在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

撰写回答