Мне нужно сделать zip-файл доступным для всех моих посетителей-пользователей Windows, поэтому я наивно создал zip-файл с помощью команды Unix zip (назовем его madeinlinux.zip).
Он успешно открывается с WinRar или Winzip, но те из моих пользователей, которые используют стандартную обработку файлов zip-файлов Windows, терпят неудачу при попытке распаковать его. (Windows XP)
Я сжал те же данные с помощью встроенного механизма почтового индекса 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-совместимого zip-файла.
Кто-нибудь знает что?
Ответы:
Попробуйте с:
-9
Указывает на самую медленную скорость сжатия (оптимальное сжатие, игнорирует список суффиксов)-y
Храните символические ссылки как таковые в zip-архиве, вместо того, чтобы сжимать и хранить файл, на который ссылается ссылка-r
Путешествовать по структуре каталогов рекурсивно-q
Бесшумный режимисточник
-r
) и-r
позволит вам взять все содержимое папки7zip - это инструмент сжатия с открытым исходным кодом, который работает в Linux, FreeBSD, Mac OS X, BeOS, DOS, Amiga и Windows.
Я очень рекомендую его в зависимости от версии Windows.
Поддерживает
источник
Единственное, что выглядит актуально, это
но прочитайте "man zip" в вашей системе, прежде чем идти куда-либо еще ...
источник
zip -Z
устанавливает параметр сжатия.-Z store
является наиболее тривиальным, так как не сжимает вообще. Это полезно, когда вы используетеzip
в качестве альтернативыtar
или для устранения неполадок. В этом случае вы должны попытаться проверить, можно ли использовать несжатый архив из Windows. Если это является полезным, вы знаете , что вы должны выбрать опцию сжатия не по умолчанию.источник
В дополнение к тому, что предложили другие, важно обратить внимание на имена ваших файлов и каталогов, поскольку Windows не обязательно любит путь и имена файлов Linux. Это иногда также ускользает от них по-разному при архивировании. Примерами являются многочисленные, но наиболее важные точечные файлы (. И ..), файлы с разницей только в регистре (name.txt и NAME.txt), абсолютные пути к файлам (/tmp/file.txt) . Некоторые другие символы, которые разрешены в именах файлов в Windows, могут вызывать проблемы при использовании Проводника Windows для открытия файлов. В моем случае характер «:» был решающим фактором, но потребовалось много работы, чтобы выяснить это.
Поэтому, прежде чем вы возобновите использование множества параметров, я предлагаю выполнить простую процедуру:
Найдите папку или подайте ваш архив.
запустите: zip -9 -r -k zip-modified-names.zip / path / to / your / folder
Если это работает, возможно, лучше удалить символы, которые были удалены опцией -k, из имен файлов / каталогов, попробуйте выполнить обычную архивацию. Обратите внимание, что некоторые параметры, такие как -k, имеют побочные эффекты. В этом случае -k противоречит опции -q (для ссылок sym).
Также опция -k может сделать ваши имена файлов нечитаемыми. В моем случае мои файлы были названы в зависимости от времени создания (например, 10: 55: 39.pdf), чтобы упростить поиск нужной записи в архивах, но опция -k изменила ее на 105539.pdf, что нелегко прочитать пользователям. Поэтому я изменил имена на 10_55_39.pdf, который открывается в Windows без использования опции -k, но все еще доступен для чтения.
источник
Недавно была похожая проблема с файлами, созданными из сценария Perl. Обнаружено, что встроенный zip-архив Windows (только для Windows 7) неправильно обрабатывает пути с косой чертой и отображает пустой zip-файл. Решением было убрать косую черту перед добавлением файлов. Возможно, некоторые версии команд linux zip хранят пути к файлам с косой чертой.
источник
Вот скрипт Python, который я использую для архивирования некоторых файлов. Он был протестирован на Ubuntu и Vista. Почтовый индекс, сгенерированный в Ubuntu, открывается вместе с молнией Vista.
Я думаю, что у меня была похожая проблема в прошлом, и это было потому, что формат zip не был ZIP_DEFLATED. Я не уверен. Я проверю это.
Я надеюсь, что это помогает
источник
Возможно, проблема в переносе вашего файла из Linux в Windows. Если вы используете FTP, попробуйте установить двоичную передачу (команда bin в Windows, перед переносом ваших файлов из Linux в Windows).
источник