Muszę udostępnić plik zip wszystkim moim użytkownikom systemu Windows, więc naiwnie utworzyłem plik zip za pomocą polecenia zip w systemie Unix (nazwijmy go madeinlinux.zip).
Z powodzeniem otwiera się w WinRar lub Winzip, ale ci z moich użytkowników, którzy używają standardowej obsługi plików zip Windows, doświadczają niepowodzenia podczas próby rozpakowania. (Windows XP)
Skompresowałem te same dane za pomocą wbudowanego systemu Windows w mechanizmie zip i z punktu widzenia systemu Linux nie widzę żadnej różnicy w typie pliku:
$ file madeinlinux.zip : Zip archive data, at least v2.0 to extract
$ file madeinwindows.zip : Zip archive data, at least v2.0 to extract
Muszą być czymś specyficznym dla pliku zip kompatybilnego z Windows.
Czy ktoś wie co?
Odpowiedzi:
Spróbuj z:
-9
Wskazuje najwolniejszą prędkość kompresji (optymalna kompresja, ignoruje listę sufiksów)-y
Przechowuj dowiązania symboliczne jako takie w archiwum zip, zamiast kompresować i przechowywać plik, do którego odwołuje się łącze-r
Podróżuj rekurencyjnie po strukturze katalogów-q
Tryb cichyźródło
-r
) i-r
pozwala zabrać całą zawartość folderu7zip to narzędzie do kompresji typu open source, które działa w systemach Linux, FreeBSD, Mac OS X, BeOS, DOS, Amiga i Windows.
Gorąco polecam w oparciu o wersję systemu Windows.
To wspiera
źródło
Jedyne, co wygląda na istotne, to to
ale przeczytaj „man zip” w swoim systemie, zanim pójdziesz gdziekolwiek indziej ...
źródło
zip -Z
ustawia opcję kompresji.-Z store
jest najbardziej trywialny, ponieważ nie kompresuje się wcale. Jest to przydatne, gdy używaszzip
jako alternatywytar
lub podczas rozwiązywania problemów. W takim przypadku powinieneś spróbować sprawdzić, czy nieskompresowane archiwum można wykorzystać w systemie Windows. Jeśli jest to użyteczne, wiesz, że będziesz musiał wybrać niestandardową opcję kompresji.źródło
Oprócz tego, co sugerują inni, należy zwrócić uwagę na nazwy plików i katalogów, ponieważ system Windows niekoniecznie lubi ścieżkę i nazwy plików systemu Linux. Czasami również ucieka im inaczej podczas zipowania. Przykładami są liczne, ale przede wszystkim pliki kropkowe (. I ..), pliki z różnicami tylko liter (name.txt i NAME.txt), bezwzględne ścieżki do plików (/tmp/file.txt) . Niektóre inne znaki dozwolone w nazwach plików w systemie Windows mogą powodować problemy, gdy Eksplorator Windows jest używany do otwierania plików. W moim przypadku znak „:” przełamał umowę, ale dużo się zajęło, aby się tego dowiedzieć.
Więc zanim wznowisz korzystanie z wielu parametrów, sugeruję wykonać prostą procedurę:
Znajdź folder lub plik, który chcesz skompresować.
uruchom: zip -9 -r -k zip-modified-names.zip / path / to / your / folder
Jeśli to zadziała, być może lepiej będzie usunąć znaki, które zostały usunięte przy pomocy opcji -k z nazw plików / katalogów, spróbuj spakować się normalnie. Uwaga: niektóre parametry, takie jak -k, mają skutki uboczne. W tym przypadku -k jest sprzeczne z opcją -q (dla dowiązań sym).
Również opcja -k może sprawić, że twoje nazwy plików będą nieczytelne. W moim przypadku moje pliki zostały nazwane na podstawie czasu utworzenia (np. 10: 55: 39.pdf), aby ułatwić łatwą lokalizację wymaganego rekordu z archiwów, ale opcja -k zmieniła go na 105539.pdf, który nie jest łatwy do odczytania przez użytkowników. Dlatego zmieniłem nazwy na 10_55_39.pdf, który otwiera się w systemie Windows bez użycia opcji -k, ale nadal jest czytelny.
źródło
Miałem ostatnio podobny problem z plikami utworzonymi ze skryptu Perla. Stwierdzono, że natywny zip systemu Windows (tylko przetestowany Windows 7) niepoprawnie obsługuje ścieżki z wiodącym ukośnikiem i wyświetla pusty plik zip. Rozwiązaniem było usunięcie głównego ukośnika przed dodaniem plików. Być może niektóre wersje linux zip przechowują ścieżki plików z wiodącymi ukośnikami.
źródło
Oto skrypt Pythona, którego używam do skompresowania niektórych plików. Został przetestowany na Ubuntu i Vista. Zip wygenerowany na Ubuntu otwiera się za pomocą suwaka Vista.
Wydaje mi się, że miałem podobny problem w przeszłości, ponieważ format zip nie był ZIP_DEFLATED. Nie jestem pewien. Sprawdzę to.
Mam nadzieję, że to pomoże
źródło
Prawdopodobnie występuje problem z przenoszeniem plików z systemu Linux na system Windows. Jeśli używasz FTP, spróbuj ustawić transfer binarny (polecenie bin w systemie Windows, przed przeniesieniem plików z systemu Linux na Windows).
źródło