как имитировать `—numeric-owner` в tarfile?

#python-3.x #tar #tarfile

#python-3.x #tar #tarfile

Вопрос:

с помощью команды tar мы можем tar --numeric-owner -cf - test | tee убедиться, что в данных tar используется число для представления owner: group. Как мы можем сделать это в tarfile python3? Кажется, извлекается только упомянутый числовой владелец.

Ответ №1:

Я столкнулся с аналогичной проблемой. После некоторого расследования единственным решением, которое я смог придумать, было передать фильтр TarInfo при добавлении файлов в архив. Что-то вроде:

 def tar_filter(tarinfo: TarInfo) -> TarInfo:
    # tar filter to mimic --numeric-owner argument
    tarinfo.uname = ''
    tarinfo.gname = ''
    return tarinfo

with tarfile.open(<tar_file_name>, w:gz) as tar:
    tar.add(<file_to_add>, filter=tar_filter)