untar Funktion - Filesize Frage - die letzten 1024Byte
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ball
bedeutung
byte
code
datei
ende
faktum
fazit
garnichts
header
http
leid danke
manual
paar
record
schablone
schau
url
verstehen
zufall
-
Heyho
Ich habe irgendwie ein Verständnisproblem...
Ich bin heut per Zufall eigentlich darauf gestoßen, dass man mit PHP keine Tar-Balls entpacken kann so nativ, und hatte geschaut, ob es dazu schon nen Snippet gibt, welches ich mir mal anschauen kann, um es einfach mal zu verstehen. Dabei bin ich auf dieses gestoßen:
http://phpsnips.com/snippet.php?id=131
Das gleiche Snippet habe ich gute 10 weitere male gefunden, also geh ich mal davon aus, dass es wohl korrekt ist. Um es zu verstehen habe ich mal nachverfolgt, was eigentlich gemacht wird, und habe mir die "Schablone", wie ich es von Netzwerkpaketen aus kenne, angeschaut (also auf Wikipedia die Header) und habe das ganze soweit gut durchverfolgt. Supereinfach, sehr logisch, einfach toll. Hät ich garnicht gedacht, dass ich soetwas so einfach hinkriege. Es gibt allerdings einen einzigen Punkt, den ich nicht verstehe, unzwar diese Zeilen:
$TarSize = filesize($tarfile); $TarSizeEnd = $TarSize - 1024;
Erstere ist logisch, aber zweitere nicht direkt. Ich vermute mal, dass ein Tarfile noch einen Footer hat, also quasi die Gesamt-CRC oder so etwas ähnliches, jedoch habe ich nach nen paar Stunden googln nichts dazu gefunden, dass ein Tar-Ball einen Footer hat. Warum also werden die letzten 1024 Byte von der Länge abgezogen? Was bedeutet dieses kByte?
Liebe Grüße -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich habe nun auch etwas gesucht und nichts gefunden.
Jedoch schau mal hier:
http://php.net/manual/en/function.gzwrite.php#88746
Der User hat auch eine TarAddFooter Funktion erstellt.
Wozu der Footer gut sein soll weiß ich jedoch auch nicht. :S
-
Achja, genau :)
Ich wurde von einem Exherbo Entwickler (http://www.exherbo.org/) aufgeklärt, warum.
Ein Tarball hat einfach, das ist so festgeschrieben, mindestens 2 Records Nullbytes am Ende der Datei.
Was man dazu wissen muss ist, dass Tarballs in Records unterteilt sind, die jeweils 512 Byte bemessen. Warum genau das gemacht wurde hab ich leider nicht erfahren können, das wusste er auch nicht, allerdings nehm ich das mal so hin. 512Byte sind auch die Header, welche jedoch grundsätzlich von 0 unterschieden sind. Wenn 2 mal (mindestens) hintereinander ein Nullheader kommt ist damit klar, dass der Tarball zu Ende ist.
Fazit: Es ist ein Faktum ohne größere Bedeutung, es ist keine Checksum und garnichts, sondern einfach nur da. Das wollte ich eigentlich schon vorgestern ergänzen, hab ich aber irgendwie leider vergessen, tut mir leid.
Danke :)
Liebe Grüße -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage