Архивирование (tar и сжатие) с метаданными (идентификатор пользователя и ctime) в Python - PullRequest
1 голос
/ 27 января 2010

Я выполняю резервное копирование файловой системы, и мне нужно убедиться, что метаданные сохранены (владелец файла и время создания).

Модуль tarfile в Python действительно полезен, и я широко использую его в своем решении. Однако я не могу создать tar-файл с файлами, сохраняющими свои метаданные (предположительно потому, что copy и copy2 не могут этого сделать).

Как бы вы подошли к этой проблеме из Python?

EDIT:

Просто чтобы прояснить сообществу: модуль tarfile в Python предоставляет средства для хранения метаданных через объект Tarinfo. По сути, объект Tarinfo является членом объекта Tar, и он содержит всю информацию, которая может вам понадобиться. Пожалуйста, обратитесь к принятому сообщению.

Спасибо!

1 Ответ

2 голосов
/ 27 января 2010

"Предположительно"? Вы имеете в виду, что вы не знаете? Вы пробовали ? Тем не менее, насколько я знаю, tarfiles не сохраняет ctime, и в этом нет особого смысла, так как ctime должно быть сброшено при распаковке. Однако mtime сохраняется, и модуль tarfile обрабатывает mtime.

Модуль 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

...