Python-Tarfile erzeugt beim Extrahieren „Kann keinen Symlink erstellen: Berechtigung verweigert“.Python

Python-Programme
Anonymous
 Python-Tarfile erzeugt beim Extrahieren „Kann keinen Symlink erstellen: Berechtigung verweigert“.

Post by Anonymous »

Ich habe das folgende Python-Skript, das einen Pfad (in diesem Beispiel verwende ich eine Kopie von /etc) annimmt und ihn mit dem Modul tarfile archiviert:

Code: Select all

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)
Ich habe dereference=False angegeben, weil ich Symlinks nicht folgen, sondern sie nur als Softlinks hinzufügen möchte.
Das Problem tritt auf, wenn ich versuche, das Archiv mit GNU tar (v1.35) zu extrahieren:

Code: Select all

[...]
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
[...]
Dies tritt nicht auf, wenn ich das Verzeichnis /root/src/ archiviere mit:

Code: Select all

$ tar -cvzf foo.tar.gz -C /root/src/
Was mache ich falsch?

Ich weiß, dass ich einen Unterprozess erzeugen und GNU tar aus Python aufrufen kann, aber wenn möglich würde ich gerne das eingebaute Modul verwenden.
Vielen Dank im Voraus.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post