Тар-файл Python выдает «Невозможно создать символическую ссылку: разрешение отклонено» при извлечении,Python

Программы на Python
Ответить
Anonymous
 Тар-файл Python выдает «Невозможно создать символическую ссылку: разрешение отклонено» при извлечении,

Сообщение Anonymous »

У меня есть следующий скрипт Python, который принимает путь (в этом примере я использую копию /etc) и архивирует его с помощью модуля tarfile:

Код: Выделить всё

import tarfile
from pathlib import Path

source = Path("/root/src/")

with tarfile.open("foo.tar.gz", "w:gz", dereference=False) as tar:
file_list = list(source.rglob('*'))

for file in file_list:
tar.add(file, arcname=file.relative_to(source.parent), recursive=False)
Я указал dereference=False, потому что я не хочу переходить по символическим ссылкам, а хочу добавлять их только как программные ссылки.
Проблема возникает, когда я пытаюсь извлечь архив с помощью GNU tar (v1.35):

Код: Выделить всё

[...]
tar: src/ca-certificates/extracted/cadir/8508e720.0: Cannot create symlink to ‘Certainly_Root_E1.pem’: Permission denied
src/ca-certificates/extracted/cadir/a2c66da8.0
tar: src/ca-certificates/extracted/cadir/a2c66da8.0: Cannot create symlink to ‘DigiCert_Trusted_Root_G4.pem’: Permission denied
[...]
Этого не произойдет, если я заархивирую каталог /root/src/, используя:

Код: Выделить всё

$ tar -cvzf foo.tar.gz -C /root/src/
Что я делаю не так?

Я знаю, что могу создать подпроцесс и вызвать GNU tar из Python, но я бы хотел использовать встроенный модуль, если это возможно.
Заранее спасибо.>

Подробнее здесь: https://stackoverflow.com/questions/798 ... extraction
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»