Як створити zip-файл, сумісний із Windows під Linux


49

Мені потрібно зробити доступний zip-файл для всіх відвідувачів моїх користувачів Windows, тому я наївно створив zip-файл із командою Unix zip (назвемо це madeinlinux.zip).

Він успішно відкривається за допомогою WinRar або Winzip, але ті мої користувачі, які використовують стандартну обробку zip-файлів Windows, відчувають збій при спробі розпакувати її. (Windows XP)

Я стиснув ті самі дані, використовуючи вбудований zip-mecanism для Windows, і з точки зору Linux я не бачу різниці у типі файлу:

$ file madeinlinux.zip :  Zip archive data, at least v2.0 to extract
$ file madeinwindows.zip : Zip archive data, at least v2.0 to extract

Вони повинні бути чимось специфічним для поштового файлу, сумісного з Windows.

Хтось знає що?


1
Чи можете ви створити один із цих ZIP-файлів (з фіктивним вмістом) і поставити його на сервер для завантаження та перевірки?
Бернхард Хофманн

Це звучить як випадок для superuser.com, якщо він ще існує.

1
Звичайно, Бернхард, ось винуватець: karijejet.co.uk/devel/Services_Careerjet.zip

Єдиною машиною Windows, яку мені довелося перевірити, був Windows 7, і це не мало проблем із відкриттям та вилученням файлу за допомогою провідника.

град вікна 7!

Відповіді:


28

Спробуйте:

zip -9 -y -r -q file.zip folder/
  • -9 Вказує найменшу швидкість стиснення (оптимальне стиснення, ігнорує список суфіксів)
  • -y Зберігайте символьні посилання як такі в zip-архіві, а не стискаючи та зберігаючи файл, на який посилається
  • -r Подорожуйте структуру каталогу рекурсивно
  • -q Спокійний режим

Чому це допоможе сумісності XP?
Wowfunhappy

Чесно кажучи, це було так багато часу тому, що я не пам'ятаю чітко; але я можу уявити, що дотримання символічних посилань може призвести до проблем (що може трапитися і без -r) і -rдозволяє вам взяти весь вміст папки
Ігор Фобія

11

7zip - це інструмент стиснення з відкритим кодом, який працює в Linux, FreeBSD, Mac OS X, BeOS, DOS, Amiga та Windows.

Я настійно рекомендую його на основі версії Windows.

Він підтримує

пакування / розпакування: 7z, ZIP, GZIP, BZIP2 та TAR

Розпаковується лише: ARJ, CAB, CHM, CPIO, DEB, DMG, HFS, ISO, LZH, LZMA, MSI, NSIS, RAR, RPM, UDF, WIM, XAR та Z.


8
Я рекомендую не використовувати ще один сторонній фірмовий інструмент для цієї неймовірно поширеної утиліти (zip a file), доступної зараз на всіх платформах.
Rick O'Shea

8

Єдине, що виглядає актуально, це це

-k - Attempt  to  convert  the  names  and paths to conform to MSDOS, store only the MSDOS attribute (just the user write attribute from UNIX), and mark the entry as made under
MSDOS (even though it was not); for compatibility with PKUNZIP under MSDOS which cannot handle certain names such as those with two dots.

але прочитайте "man zip" у вашій системі, перш ніж кудись поїхати ...


1
Привіт. Thx для пропозиції, але ця опція -k повертає мене назад у часі занадто багато. Він перетворює все ім’я файлу у 8-символьну / без регістрової версії :(

Так, я пам'ятаю ті дні. Але чи допомогло це файлу прочитати вбудовану програму Zip у Windows?

Не знаю. Ця проблема з ім'ям файлу зупинила мене на спробах

Я здогадуюсь, що це стиснення, як каже MSalters ...

8

zip -Zвстановлює параметр стиснення. -Z storeє найбільш тривіальною, оскільки вона зовсім не стискається. Це корисно, коли ви використовуєте zipяк альтернативу tarабо для усунення несправностей. У цьому випадку вам слід спробувати перевірити, чи нетиснений архів може бути використаний у Windows. Якщо це зручно, ви знаєте, що вам доведеться вибрати параметр стиснення, який не використовується за замовчуванням.


приголомшливо, я б здогадувався, що алгоритм стиснення теж спричиняє проблеми ...

4

Окрім того, що запропонували інші, важливо звернути увагу на назви файлів та каталогів, оскільки Windows не обов'язково подобається шлях та назви файлів Linux. Іноді вони також уникають їх по-різному при блискавці. Прикладами є численні, але найголовніше крапкові файли (. І ..), файли з різницею регістру (name.txt та NAME.txt), абсолютні шляхи до файлу (/tmp/file.txt) . Деякі інші символи, дозволені в іменах файлів в Windows, можуть спричинити проблеми, коли Windows Explorer використовується для відкриття файлів. У моєму випадку персонаж «:» був порушником угоди, але знадобився багато роботи, щоб дізнатися це.

Тому перш ніж продовжувати використовувати багато параметрів, пропоную дотримуватися простої процедури:

  1. Знайдіть папку або заповніть свій папір.

  2. запустити: zip -9 -r -k zip-modified-names.zip / path / to / your / folder

  3. зверніть увагу на те, що виплітає консоль. У моєму випадку ":" у іменах файлів було викреслено.
  4. Перемістіть zip-файл на машину Windows і спробуйте його відкрити.

Якщо це працює, можливо, вам буде краще видалити символи, які були позбавлені опцією -k, з імен файлів / директорій, спробуйте застебнути нормально. Зауважте, деякі параметри, такі як -k, мають побічні ефекти. У цьому випадку -k суперечить опції -q (для символьних посилань).

Також опція -k може зробити імена файлів нечитабельними. У моєму випадку мої файли були названі на основі часу створення (наприклад, 10: 55: 39.pdf), щоб полегшити пошук потрібного запису з архівів, але опція -k перетворила його на 105539.pdf, що не легко читається користувачами. Отже, я змінив імена на 10_55_39.pdf, який відкривається в Windows без використання опції -k, але все ще читається.


1
@ TD.512 Ви помітили, що на 6-річне запитання ще немає однозначної відповіді? Найкраще додати ще одну відповідь, якщо, здається, відповідь допоможе комусь, як не зробили інші.
Привіт-Ангел

3

Нещодавно виникли подібні проблеми з файлами, створеними зі сценарію Perl. Виявив, що нативний ZIP-zip (лише для тестування Windows 7) неправильно обробляє контури з провідним косою рисою та відображає порожній zipfile. Рішенням було зняти провідну косу рису перед додаванням файлів. Можливо, деякі версії команд Linux zip зберігають контури файлів з провідними косою рисою.


2
Згідно з додатком. Примітки на веб-сайті pkware ( pkware.com/support/zip-app-note/archives ): "Назва файлу з необов'язковим відносним шляхом. Шлях, що зберігається, не повинен містити літери диска або пристрою або провідної косої риски. "
EKW

2

Ось сценарій python, який я використовую для копіювання деяких файлів. Він був протестований на ubuntu та Vista. Створений на Ubuntu блискавку відкривається за допомогою блискавки Vista.

Я думаю, що у мене була аналогічна проблема в минулому, і це було тому, що формат zip не був ZIP_DEFLATED. Я не впевнений. Я це перевірю.

Я сподіваюся, що це допомагає

імпортувати zipfile
імпорт glob, os, sys

клас ZipArchive:

    def zip_it (self, dirName, файли):
        dirNamePrefix = dirName + "/ *"
        для імені файлу в glob.glob (dirNamePrefix):
            якщо os.path.isfile (ім’я файлу) і (не само.exclude_svn або (filename.find (". svn \\") == - 1)):
                друкувати назву файлу
                name = ім'я файлу [len (самопапка) +1:]
                self.archive.write (ім'я файлу, ім'я, zipfile.ZIP_DEFLATED)

    def run (власне, папка, ім'я, виключити_svn):
        self.exclude_svn = виключити_svn
        self.folder = папка
        self.archive = zipfile.ZipFile (ім'я + ". zip", "w")
        os.path.walk (самопапка, ZipArchive.zip_it, самоврядування)
        self.archive.close ()

якщо __name__ == "__main__":
    якщо (len (sys.argv) == 1):
        print "використання папки zipit [ім'я] [svn: так | ні]"
    ще:
        name = sys.argv [1]
        виключити_svn = Неправдиво

        if (len (sys.argv)> 2): name = sys.argv [2]
        if (len (sys.argv)> 3): виключити_svn = (sys.argv [3] == "ні")

        арка = ZipArchive ()
        arch.run (sys.argv [1], ім'я, виключення_svn)
        друк "зроблено"


питання полягає в тому, чи можна її розпакувати за допомогою zip механізму Windows?

так. я відкрив його за допомогою інструмента Vista zip. Я сподіваюся, що він теж працює для вас

0

Можливо, існує проблема в перенесенні файлів з Linux на Windows. Якщо ви використовуєте FTP, спробуйте встановити двійкову передачу (команда bin в Windows, перед передачею ваших файлів з Linux в Windows).


Не погоджуюсь. У мене виникли подібні проблеми, як у ОП, особливо зі старими версіями Windows. Я перевірив цілісність і збіг шасума. Крім того, зауважте, що OP каже, що файли декомпресуються належним чином у сторонніх програмах.
Wowfunhappy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.