.zip in .tar.bz2 on-the-fly umwandeln

lme

FreeBSD Committer
Hallo zusammen,

der Titel sagt eigentlich schon alles:
Ich würde gerne viele Zip-Dateien mit vielen kleinen Dateien darin möglichst schnell in .tar.bz2 umwandeln.
Das ganze läuft auf Maschinen mit vielen Prozessoren, deswegen ist pbzip2 ideal, da es alle CPUs / Kerne ausnutzt und somit fast linear skaliert.
Bisher habe ich erst die .zip Datei entpackt, diese dann mit tar zusammengeschnürt und mit pbzip2 -9 ganz feste zusammengezogen und die ausgepackten Dateien danach gelöscht.
Dieser letzte Schritt ist der schmale Flaschenhals, hier würde ich gerne die Daten über eine Pipe von unzip an tar übergeben. Allerdings hat das bisher noch nicht geklappt, da (g)tar die Eingabedateien nicht erkennt. Ein
Code:
unzip -j -q -c source.zip | gtar --use-compress-program=pbzip2 cf target.bz2
klappt jedenfalls nicht. :(

-j benutze ich bei unzip übrigens, weil ich alle Dateien des Archiv in einem Verzeichnis haben will.
Anstatt -c habe ich auch mal -p ausprobiert, allerdings mit dem gleichen Misserfolg.

Das ganze läuft auf Solaris 10, sollte hier aber vernachlässigbar sein. ;)
 
Über die Pipe kannst du nur Roh-Daten schicken, keine Metadaten wie Dateinamen.

Ich schätze also du müsstest so etwas relativ komplex skripten. Die altenrative wäre deine alte methode in einer gemounteten memory-disk zu verwenden. Die musst du dann nur noch unmounten und entfernen um die Daten wieder loszuwerden.
 
Danke, so etwas habe ich mir gedacht...
Die Idee mit der Memory Disk klingt gut, ich schaue mal, wie das unter Solaris geht.
 
Boah, ist Solaris lahm, was das angeht.

Code:
ramdiskadm -a temp 1g && yes | newfs /dev/ramdisk/temp
Dauert 41! Sekunden auf ner E2900 mit 12 CPUs, 96GB RAM, etc.pp.

Dagegen dauert
Code:
mdconfig -a -t swap -s 1g -u1 && newfs -U /dev/md1
gerade mal 0.01s auf meinem 7.2er FreeBSD Notebook.
 
Zuletzt bearbeitet:
Zurück
Oben