Inhalt aus Archivdatei auflisten, welche wiederum selbst in einer Archivdatei liegt

kongstrong

Well-Known Member
Hallo,

die "base73.tgz" von OpenBSD-7.3, beinhaltet "/var/sysmerge/etc.tgz". ... also ein Archiv im Archiv so zu sagen (Mathoshka)
Wie kann ich mir den Inhalt aus der "/var/sysmerge/etc.tgz" ausgeben lassen, ohne großartig extra entpacken(Schreibvorgänge) zu müssen?!?
Mit tar bzw. pax habe ich leider nach 6 Stunden probieren immer noch keinen Lösungsweg gefunden ;(

PS: Bbei einer einfachen Archivdatei, würde das ja so gehen:
Code:
tar ztvf base73.tgz > Dateiliste

Danke


Auszugsweise aus der sh_history, was ich so probiert hatte:

Code:
tar -zxf base73.tgz '*.etc.tgz' -
tar -zxf base73.tgz '*.etc.tgz' 
tar -ztf base73.tgz '*.etc.tgz' 
tar ztvf base73.tgz '*.etc.tgz' 
man tar
tar tvzf base73.tgz '*.etc.tgz' 
tar tvzf base73.tgz '*etc.tgz' 
tar tzf base73.tgz '*etc.tgz' 
tar tzf base73.tgz '*etc.tgz' -
tar zxf base73.tgz '*etc.tgz' 
mc
tar zxf base73.tgz '*etc.tgz' | tar tvzf -
mc
tar zxf base73.tgz '*etc.tgz' -
tar zxf base73.tgz '*etc.tgz' -C - | tar ztvf -
tar zxf base73.tgz '*etc.tgz' .
tar tcf base73.tgz | tar xf - /var/sysmerge/etc.tgz
tar zxf base73.tgz | tar xf - /var/sysmerge/etc.tgz
mc
tar ztxf base73.tgz | tar xf - /var/sysmerge/etc.tgz
tar ztxf base73.tgz | tar xtf - /var/sysmerge/etc.tgz
tar tvzf base73.tgz | tar tvzf /var/sysmerge/etc.tgz
tar tvzf base73.tgz | tar tvzf - /var/sysmerge/etc.tgz
tar tvzf base73.tgz | tar tvz - /var/sysmerge/etc.tgz
tar tvzf base73.tgz | tar tv - /var/sysmerge/etc.tgz
tar xf base73.tgz /var/sysmerge/etc.tgz | tar tv - 
tar xf base73.tgz '/var/sysmerge/etc.tgz' | tar tv - 
tar xf base73.tgz '/var/sysmerge/etc.tgz' 
tar xzf base73.tgz '/var/sysmerge/etc.tgz' 
tar xzf base73.tgz '/var/sysmerge/etc.tgz' | tar -ztvf -
tar xzf base73.tgz '/var/sysmerge/etc.tgz' | tar ztvf -
tar -xzf base73.tgz '/var/sysmerge/etc.tgz' | tar ztvf -
tar -xzf base73.tgz '/var/sysmerge/etc.tgz' | xargs | tar ztvf -
tar -xzf base73.tgz '/var/sysmerge/etc.tgz' | xargs | tar ztv -
tar -xzf base73.tgz '/var/sysmerge/etc.tgz' | xargs | tar tv -
tar -xzf base73.tgz '/var/sysmerge/etc.tgz' | xargs | tar -
tar -xzf base73.tgz '/var/sysmerge/etc.tgz' | xargs -0 | tar ztv
tar -xzf base73.tgz '/var/sysmerge/etc.tgz' | xargs -0 | tar ztv -
tar ztv - < tar -xzf base73.tgz '/var/sysmerge/etc.tgz' 
tar ztv < tar -xzf base73.tgz '/var/sysmerge/etc.tgz' 
tar ztv < tar xzf base73.tgz '/var/sysmerge/etc.tgz' 
tar ztv -| tar xzf base73.tgz '/var/sysmerge/etc.tgz' 
tar ztvf - | tar xzf base73.tgz '/var/sysmerge/etc.tgz' 
tar ztvf - <$( tar xzf base73.tgz '/var/sysmerge/etc.tgz' )
tar ztvf - <$( tar xzf base73.tgz '*etc.tgz' )
tar ztv - <$( tar xzf base73.tgz '*etc.tgz' )
tar ztv  <$( tar xzf base73.tgz '*etc.tgz' )
tar -ztvf  <$( tar xzf base73.tgz '*etc.tgz' )
tar tv  < $( tar xzf base73.tgz '*etc.tgz' )
gzip -k --list < $( tar xzf base73.tgz '*etc.tgz' )
tar xzpf base73.tgz '*etc.tgz' -C - | tar tv
tar xzpf base73.tgz '*etc.tgz' -C - 
mc
tar xzpf base73.tgz 'var/sysmerge/etc.tgz' -C - 
tar xzpf base73.tgz '/var/sysmerge/etc.tgz' -C - 
tar xzpf base73.tgz /var/sysmerge/etc.tgz -C - 
tar xzpf base73.tgz ./var/sysmerge/etc.tgz -C - 
mc
tar xzpf base73.tgz ./var/sysmerge/etc.tgz -C - 
mc
man pax
pax -v -f base73.tgz 
pax -z -v -f base73.tgz 
pax -z -v -f base73.tgz -s '!^./var/sysmerge/!!'
pax -z -r -pe -f base73.tgz -s '!^./var/sysmerge/!!'
pax -z -r -f base73.tgz -s '!^./var/sysmerge/!!'
mc
cd /home/openben/OpenBSD/
cd 7.3/amd64/
tar ztvf base73.tgz './var/sysmerge/etc.tgz' | pax -r '!^./var/sysmerge/!!'
tar ztvf base73.tgz './var/sysmerge/etc.tgz' | pax -r -s '!^./var/sysmerge/!!'
tar ztvf base73.tgz './var/sysmerge/etc.tgz' | pax -s '!^./var/sysmerge/!!'
tar ztvf base73.tgz './var/sysmerge/etc.tgz' | pax -r -s '!^./var/sysmerge/!!'
tar ztvf base73.tgz './var/sysmerge/etc.tgz' | pax -z -r -s '!^./var/sysmerge/!!'
tar xzf base73.tgz './var/sysmerge/etc.tgz' | pax -z -r -s '!^./var/sysmerge/!!'
tar xzf base73.tgz './var/sysmerge/etc.tgz' | pax -z -s '!^./var/sysmerge/!!'
pax -z -s '!^./var/sysmerge/!!' -f $(tar xzf base73.tgz './var/sysmerge/etc.tgz')
pax -r -s '!^./var/sysmerge/!!' -f $(tar xzf base73.tgz './var/sysmerge/etc.tgz')
tar xzf base73.tgz './var/sysmerge/etc.tgz'| pax -s '!^./var/sysmerg!!'
tar xzf base73.tgz './var/sysmerge/etc.tgz'| pax -s '!^./var/sysmerge!!'
tar xzf base73.tgz './var/sysmerge/etc.tgz' -C - | pax -s '!^./var/sysmerge!!'
pax -s '!^./var/sysmerge!!' -r < base73.tgz etc.tgz
pax -s '!^./var/sysmerge!!' -zr < base73.tgz 
mc
pax -s '!^./var/sysmerge/!!' -zr < base73.tgz etc.tgz
pax -s '!^./var/sysmerge/!!' -zr < base73.tgz /var/sysmerge/etc.tgz
pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz
mc
mc
pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz
pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz | tar ztv
pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz | tar ztv -
pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz - | tar ztv 
pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz - | tar ztv -
tar tv | pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz
tar tvf - | pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz
tar ztvf $( pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz)
tar ztvf < $( pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz)
tar ztvf <  pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz
tar ztvf - |  pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz
tar ztvf - | pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz
pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz|tar ztvf -
pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz|tar ztv -
pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz|tar -ztvf -
pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz|pax -r 
pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz|pax -zr 
pax -r < pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz
pax -r < $(pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz)
ls -l
tar ztvf etc.tgz 
pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz | tar ztvf -
pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz | xargs |tar ztvf -
pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz | gzip -k --list -
pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz | gunzip -k --list -
file -s etc.tgz 
gzip -k --list | pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz
gzip -k --list - | pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz
gzip -k --list <$( pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz)
gzip -k --list | $( pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz)
gzip -k --list | <$( pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz)
tar ztvf $( pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz)
tar -ztvf $( pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz)
tar ztvf - | $( pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz)
tar ztvf - | pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz
tar ztv | pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz
tar ztvf | pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz
tar ztvf - | pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz
tar tvf - | pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz
tar tvf | pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz
tar ztv | pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz
pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz| pax -r -s'!^./var/sysmerge/!!'
pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz| pax -r 
mc
pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz| tar ztvf etc.tgz
rm -f etc.tgz 
pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz| tar ztvf etc.tgz
pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz| pax -zr etc.tgz
rm -f etc.tgz 
pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz| pax -zr etc.tgz
pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz| pax -zr < etc.tgz
pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz| pax -r < etc.tgz
pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz| pax -zr < etc.tgz>>files
mc
pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz
man pax
tar vtf < pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz
tar vtf - < pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz
tar vt < pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz
tar -vt < pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz
tar -vt | pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz
tar vt | pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz
tar vtf | pax -s '!^./var/sysmerge/!!' -zr < base73.tgz ./var/sysmerge/etc.tgz
pax -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz'
pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz'
mc
pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz'
time pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz'
tar tv - | pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz'
tar tv | pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz'
pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz'|tar tv -
pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz'|tar -tv -
pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz'|tar -tvf -
pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz'|tar -ztvf -
tar ztvf <$(pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz')
tar ztvf -|<$(pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz')
tar ztv <$(pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz')
tar ztv | pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz'
tar -ztv | pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz'
tar ztvf | pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz'
tar -ztvf | pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz'
tar ztvf - | pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz'
tar ztvf < <$( | pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz')
tar ztvf << <$( | pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz')
tar ztvf <<<$( | pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz')
tar ztvf <<<( pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz')
tar ztvf <<( pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz')
tar ztvf <( pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz')
tar ztvf <$( pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz')
tar ztvf <<$( pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz')
tar ztvf <<<$( pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz')
ls -l
pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz | pax -r
pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz' | pax -r
pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz' | pax -zr
pax -z -r -s '!./var/sysmerge/!!' -f base73.tgz './var/sysmerge/etc.tgz' | pax -v
tar xzvf base73.tgz './var/sysmerge/etc.tgz' -s '!./var/sysmerge/!!'
man tar
tar xzvf base73.tgz 'etc.tgz' -s '!./var/sysmerge/!!'
mc
tar xzvf base73.tgz '*etc.tgz' -s '!./var/sysmerge/!!'
tar xf base73.tgz 'etc.tgz' -s '!./var/sysmerge/!!'
tar xzf base73.tgz 'etc.tgz' -s '!./var/sysmerge/!!'
tar xzf base73.tgz ./var/sysmerge/etc.tgz -
tar -xzf base73.tgz ./var/sysmerge/etc.tgz -
tar -xzf base73.tgz './var/sysmerge/etc.tgz' -
tar -ztvf base73.tgz './var/sysmerge/etc.tgz' -
tar -zf base73.tgz './var/sysmerge/etc.tgz' -
tar -zf base73.tgz './var/sysmerge/etc.tgz' -s '!./var/sysmerge/!!'
tar -zf base73.tgz './var/sysmerge/etc.tgz' -replstr '!./var/sysmerge/!!'
tar -zf base73.tgz './var/sysmerge/etc.tgz' -s !./var/sysmerge/!!g
 
Ich würde aus dem bauch heraus sagen das die gängigen tools das nicht unterstützen, das müsste ja eine funktion des entpackers sein, also von tar sein.

Aus einer Archiv-Datei eine weitere Archivdatei zu entpacken.
Letztlich wäre das aber nur "irgendwie" ein "umweg" denn "so oder so" müsste tar die aus dem Archiv komplett holen und dann irgendwo kurz ablegen um sie dann weiter zu verarbeiten, aufgrund der möglichen größe wird da sicher zumindest eine temp-datei "irgendwo" draus resultieren.

Dann kann mans gleich auch entpacken und nochmal entpacken.
 
Probier mal

Code:
tar xzOf base73.tgz /var/sysmerge/etc.tgz | tar tzf -

O im ersten tar == Buchstabe "O", nicht Zahl "0"
 
man könnte argumentieren, ein tgz innerhalb eines tgz macht eh keinen Sinn, aber da tar ja keinen "schau in Ebene 2" Schalter besitzt, braucht man halt mindestens ein 2. tar Kommando um das vom @kongstrong gewünschte zu erreichen;
mir wäre zumindest kein eleganterer Weg als der obige bekannt;
ich hab allerdings jetzt auch nicht extra geprüft, ob da eine tmp Datei erstellt wurde;
 
Mit engrampa konnte ich etc.tgz öffnen. Das ging def. schneller als es komplett zu entpacken (und erstmal ausschreiben zu müssen).
 
wie macht es das im Detail - mein Verständnis war, dass das nur ein Frontend für tar usw. ist?
 
Vermutlich läuft das direkt in den RAM als kleinere Abkürzung. 7zip kann mit 7z l datei.tgz auch den Inhalt zeigen, evtl. kann man sich so den Befehl abkürzen.
 
Man SPULT einfach bis zu dem passenden File-Eintrag vor..... (man schaue mal, was tar heisst, ... ... ..)
 
Geht das ohne Index Datei? Theoretisch kann ich ja auch eine Datei updaten, ich weiß also nur dann, dass ich die korrekte Version habe, wenn ich bis zum Ende durchspule und dann die Version nehmen die als letztes kommt.
 
Theoretisch ist der Mond aus Kaese.. Ohne Handstand-mit-Moehre bekommst Du kein "normales" tar ohne index hin...
 
Zurück
Oben