Plik zip utworzony w programie Powershell nie może być używany w systemie Linux


1

Mam folder z podfolderami i plikami. Plik .zip tworzę za pomocą programu PowerShell Compress-Archive.

Problem polega na tym, że struktura plików jest popsuta po otwarciu w systemie Linux.

Bad to archiwum bad.zip wykonane w programie Powershell Compress-Archive, a Good is good.zip wykonane w systemie Windows WinRAR.

Tak to wygląda w systemie Linux: (lewy jest zły, prawy jest dobry)

obrazek 1

Zawartość pliku widoczna w systemie Linux z cat: (lewy jest zły, prawy jest dobry):

zdjęcie 2

Jak rozwiązać ten problem?

...

Próbowałem zamienić wszystkie „\” w bad.zip na „/” w nano i zadziałało .

Próbowałem zautomatyzować to za pomocą tego skryptu, ale bezskutecznie:

#!/bin/bash

contents=$(cat $1)
echo "${contents//\\//}"

Uruchamiam skrypt:

./FixZip.sh bad.zip > new.zip

Odwrotne ukośniki zostały zastąpione zgodnie z przeznaczeniem, ale nie można otworzyć new.zip. Powodem jest prawdopodobnie kodowanie jest inne ...

To jest kodowanie plików zip:

terminal:# file -i bad.zip 
bad.zip: application/zip; charset=binary
terminal:# encguess bad.zip 
bad.zip UTF-32LE

terminal:# file -i new.zip 
new.zip: application/octet-stream; charset=binary
terminal:# encguess new.zip 
new.zip unknown

terminal:# cat new.zip
P5�WMCw:a_folder/test2.txt+��IP7�WM���a_folder/test3.txt�(*P4�WM��6a_folder/subf/test1.txt�H���P5�WMCw:a_folder/test2.txtP7�WM���7a_folder/test3.txt4�WM��6ma_folder/subf/test1.txtPKũ

1
Czy jesteś jedyną osobą na tym forum? ... W każdym razie .. Nie mogę używać 7zipa na Windowsie, tylko Archiwum Kompresji PowerShell. Chyba zawsze mogę odtworzyć strukturę pliku za pomocą skryptu ....
MyWays

1
Bez przestępstwa. Po prostu zawsze mi pomaga ...
MyWays

1
Kilka rzeczy jest niewłaściwych: (1) nie można edytować pliku zip bez jego uszkodzenia, co zwykle zostanie wykryte przez jego sumę kontrolną; (2) $(cat $1)zastąpi dowolną sekwencję znaków spacji pojedynczym spacją; (3) ukośniki pojawią się w skompresowanych danych, a także w indeksie plików, więc ich zastąpienie spowoduje dalsze uszkodzenie pliku. Nie jest oczywiste, dlaczego PKmagiczna liczba powinna zostać zastąpiona, ale przypuszczam, że to wyjaśnia znaki powrotu, spacji lub ucieczki w pliku binarnym. Jak zaleca @KamilMaciorowski, xxdwyjaśni, co się dzieje.
AFH

2
„Nie mogę korzystać z 7zip na Windowsie, tylko Archiwum Kompresji PowerShell”. - naprawdę? Powiedziałeś już, że możesz używać WinRAR. 7-Zip jest dostępny jako aplikacja przenośna , która nie wymaga instalacji.
AFH

3
Wersja na stronie PortableApps jest całkowicie przenośna. Można go uruchomić albo przez interfejs PA, albo bezpośrednio z PortableApps\ katalogu, który zawiera 32- i 64-bitowe wersje zarówno GUI, jak i wersji 7z.exewiersza poleceń, które, jak sądzę, będą potrzebowały jednego lub więcej .dllplików.
AFH

Odpowiedzi:


0

Z tym, co próbujesz zrobić, jest wiele rzeczy nie tak - najważniejsze:

  1. Nie można edytować pliku zip bez jego uszkodzenia: zwykle zostanie on wykryty przez sumę kontrolną i zgłoszony zostanie uszkodzony plik.
  2. echo $contents (lub inne warianty rozszerzenia) zastąpi dowolną sekwencję znaków białych znaków pojedynczą spacją.
  3. Ukośniki wsteczne pojawią się w skompresowanych danych, a także w indeksie pliku, więc ich zastąpienie spowoduje dalsze uszkodzenie pliku.

Najbardziej zadowalającą odpowiedzią jest użycie wieloplatformowego archiwizatora, takiego jak 7-Zip , który zapisze archiwum z ogólnymi separatorami katalogów i rozwinie się w natywnym formacie dla platformy, na której się nazywa.

W systemie Windows korzystam z wersji Portable Apps , którą można uruchamiać przez interfejs PortableApps Suite lub bezpośrednio z katalogu w izolacji; wersja przenośna zawiera wersje 32- i 64-bitowe i zawiera 7z.exeinterfejs wiersza polecenia (który może wykorzystywać bibliotekę DLL z tego samego katalogu).

Nie jest oczywiste, dlaczego w twoich logach PKmagiczna liczba powinna zostać zastąpiona, ale domyślam się, że znaki powrotu, spacji lub znaki specjalne w pliku binarnym mogą to wyjaśniać. Jak Kamil Maciorowski zaleca w swoim komentarzu, xxdwyjaśni, co się dzieje.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.