Seite 1 von 1
Tarfile: Verzeichnis mit absolutem Pfad einpacken
Verfasst: Dienstag 20. Juli 2010, 15:50
von api
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
Re: Tarfile: Verzeichnis mit absolutem Pfad einpacken
Verfasst: Dienstag 20. Juli 2010, 15:53
von EyDu
Hallo.
Warum sollte man so etwas tun wollen? Das ist nicht Aufgabe beim Packen sondern beim Entpacken.
Sebastian
Re: Tarfile: Verzeichnis mit absolutem Pfad einpacken
Verfasst: Dienstag 20. Juli 2010, 16:09
von Dav1d
Einen relativen Pfad zum Tempverzeichnis angeben?
(im Home verzeichnis)
Re: Tarfile: Verzeichnis mit absolutem Pfad einpacken
Verfasst: Dienstag 20. Juli 2010, 16:23
von api
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
Re: Tarfile: Verzeichnis mit absolutem Pfad einpacken
Verfasst: Dienstag 20. Juli 2010, 17:56
von 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.
Re: Tarfile: Verzeichnis mit absolutem Pfad einpacken
Verfasst: Mittwoch 21. Juli 2010, 09:24
von api
@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
Re: Tarfile: Verzeichnis mit absolutem Pfad einpacken
Verfasst: Mittwoch 21. Juli 2010, 09:50
von 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.
Re: Tarfile: Verzeichnis mit absolutem Pfad einpacken
Verfasst: Mittwoch 21. Juli 2010, 09:57
von api
@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