Es gibt eine Reihe von Dingen, die bei dem, was Sie versuchen, falsch sind - am wichtigsten: -
- Sie können eine ZIP-Datei nicht bearbeiten, ohne sie zu beschädigen: Dies wird normalerweise anhand der Checksumme erkannt und eine beschädigte Datei wird gemeldet.
echo $contents
(oder andere Erweiterungsvarianten) ersetzt eine beliebige Folge von Leerzeichen durch ein Leerzeichen.- Schrägstriche treten in den komprimierten Daten sowie im Dateiindex auf. Durch das Ersetzen dieser Daten wird die Datei weiter beschädigt.
Die befriedigendste Antwort ist die Verwendung eines plattformübergreifenden Archivierers wie 7-Zip, der ein Archiv mit generischen Verzeichnisseparatoren speichert und im nativen Format für die Plattform erweitert wird, auf der es aufgerufen wird.
In Windows verwende ich die Portable Apps- Version, die über die PortableApps Suite-Schnittstelle oder direkt von ihrem Verzeichnis aus ausgeführt werden kann. Die portable Version enthält sowohl 32- als auch 64-Bit-Builds und enthält 7z.exe
die Befehlszeilenschnittstelle (die möglicherweise eine DLL aus demselben Verzeichnis verwendet).
Es ist nicht offensichtlich, warum in Ihren Protokollen die PK
magische Zahl hätte ersetzt werden müssen, aber ich würde vermuten, dass Rückgabe-, Leerzeichen oder Escape-Zeichen in der Binärdatei dafür verantwortlich sein könnten. Wie Kamil Maciorowski in seinem Kommentar empfiehlt, xxd
wird geklärt, was passiert ist.