Tarfile: Verzeichnis mit absolutem Pfad einpacken

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
api
User
Beiträge: 181
Registriert: Donnerstag 7. August 2008, 21:23

Hallo,
ich möchte ein Verzeichnis mit absolutem Pfadnamen in ein Tarfile packen. Allerdings schneidet das Tarfile immer den ersten "/" vorne ab - so dass der Pfad ein relativer wird:

Code: Alles auswählen

FileWithAbsolutePath = "/tmp/Beispieldatei.dat"
TarFileName = "/log/LogTarfile.tar"
TarFile = tarfile.open(TarFileName, "w:")
TarFile.add(FileWithAbsolutePath)
TarFile.close()
Ausgabe des Tarfiles wäre dann:

tmp/Beispieldatei.dat

Ich verwende Python 2.4.4.

Kann ich irgendwie angeben, dass das Tarfile den absoluten Pfad speichern soll?

CU,
API
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Warum sollte man so etwas tun wollen? Das ist nicht Aufgabe beim Packen sondern beim Entpacken.

Sebastian
Das Leben ist wie ein Tennisball.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Einen relativen Pfad zum Tempverzeichnis angeben?

Code: Alles auswählen

cd ../../tmp
(im Home verzeichnis)
the more they change the more they stay the same
api
User
Beiträge: 181
Registriert: Donnerstag 7. August 2008, 21:23

Hallo eydu,

warum ist das die Aufgabe beim Entpacken? Wenn ich das Tarfile wieder auspacke, möchte ich mich eigentlich nicht drum kümmern müssen, wo ich das auspacke. In meinem Beispiel müsste ich es immer im Root-Verzeichnis auspacken, ansonsten generiere ich ja einen neuen Verzeichnisbaum...??
Oder verstehe ich dich da falsch?

CU,
API
BlackJack

@api: Im allgemeinen möchte man keine Archive, die egal wo man sie entpackt, Dateien irgendwo an feste Pfade entpacken. Das ist bestenfalls nervig, und schlimmstenfalls ein Sicherheitsrisiko. Wenn ich etwas auf meinem System entpacke, möchte ich die Sicherheit haben, dass da nicht irgendwo, ohne das ich das merke, Konfigurationsdateien von mir überschrieben werden können, die nicht unterhalb des aktuellen Verzeichnisses liegen.
api
User
Beiträge: 181
Registriert: Donnerstag 7. August 2008, 21:23

@BlackJack: Diese Haltung ist ja auch durchaus verständlich. Aber eigentlich erwarte ich von einer Umgebung (in diesem Fall jetzt das Python-Modul "Tarfile") das ich selbst entscheiden kann, ob ich eine Datei mit absolutem Pfadnamen einpacke.
Ich bewege mich normalerweise unter Solaris UNIX und kann dort mit dem "tar"-Befehl jegliche Art von Daten einpacken (auch ab Root). Deswegen wäre ich davon ausgegangen, dass das mit "Tarfile" auch möglich ist. Es müsste ja nicht der Default sein, aber ein Parameter wäre schon wünschenswert.
Um es vielleicht noch etwas verständlicher zu machen, was ich eigentlich damit bezwecke: Ich habe ein Verzeichnis, in dem ich Änderungen vornehmen will. Um dieses nun zu sichern, verwende ich "tar" bzw. wollte ich "Tarfile" verwenden. Und wenn meine Änderungen nun wieder rückgängig gemacht werden sollen, weil es eben doch nur ein schlechter Versuch war, so kann ich einfach das tar-File wieder auspacken (vorher lösche ich das Verzeichnis) - somit sollte das Verzeichnis natürlich wieder an der gleichen Stelle entpackt werden. Um zu verhindern, dass das Verzeichnis irrtümlicherweise woanders entpackt wird, ist der absolute Pfad im tar-File.

Aber deinen Äusserungen entnehme ich, dass das Tarfile so etwas nicht kann?!

CU,
API
BlackJack

@api: Das geht anscheinend nicht. Ist IMHO auch gut so, weil viel zu gefährlich. GNU Tar erzeugt Archive mit solchen Pfaden nicht und weigert sich auch, sie ohne weiteres zu entpacken. Gleiches gilt AFAIK auch für bsdtar, also unter anderem auf MacOS.
api
User
Beiträge: 181
Registriert: Donnerstag 7. August 2008, 21:23

@BlackJack: War mir gar nicht bewusst, dass anscheinend doch relativ viele tar-Prgs dieses inzwischen unterbinden.
Man kann es ja auch umgehen, indem man dieses selbst beim Auspacken regelt - das ist ja nicht weiter wild. Aber ich war es halt so gewohnt, mich darum nicht kümmern zu müssen. Ausserdem schaue ich vor dem Entpacken immer in ein tar-File hinein bevor ich es entpacke - wer weiss, was da so alles auf einen zukommt... :?
Aber ok. So weiss ich nun wenigstens, dass es mit "Tarfile" nicht geht und brauch nicht weiter rumprobieren... :!:

Danke dir für die Info.

CU,
API
Antworten