Меню Рубрики

Zip архив linux кодировка

В unzip появилась возможность выбора кодировки имен файлов внутри архива

В экспериментальной ветке проекта Info-Zip, в состав которого входит инструмент для распаковки архивов zip unzip, появилась возможность выбора кодировки для распаковываемого файла.

Теперь архив, созданный в операционной системе Windows и содержащий русские имена файлов, можно распаковать следующим образом:

Распакованные файлы будут иметь корректные имена вместо нечитабельного месева, появляющегося в неисправленных версиях. Ранее для обхода проблемы требовалось применять специальные ухищрения типа перекодировки имен распакованных файлов, которые зачастую не работали, или пересобирать unzip самостоятельно, накладывая сторонние патчи.

С появлением исправления в дереве основного проекта появилась надежда увидеть его в официальных базах всех дистрибутивов.

Исправленную версию UnZip 6.10c (beta) можно собрать следующим образом (в этом случае появится доступ к указанному параметру):

Источник

Как исправить кракозябры в файлах архива zip в debian 9?

Добрый день. Я ужен нашел решение на этом же форуме, использовать unar. В тот момент он сработал.

А вот сегодня скачал zip архив из виндовс. И какая-то магия получается. Попытался распаковать с помощью zip и получил

Это только название созданной папки из архива.

Попробовал через unar. Название папки нормально, а вот содержимое.

Что можете подсказать сделать? Я могу конечно пойти в виндовс, распаковать, упаковать в rar и перенести обратно в дебиан. Но очевидно, что это не решение.

На лорвики был очень подробный гайд под разные дистрибутивы

Если вас не затруднит, можете кинуть ссылку? Спасибо.

За актуальность рецепта не отвечаю, что-то могло устареть.

У меня debian 9. Пишет: add-apt-repository: command not found

Решение только для убунту.

Windows коряво пакует

Так там универсальные решения есть. Как раз на случай если в древнем дебиане, как всегда чего-то не хватает.

При ставке первой строки пишет

Проблема возникает в связи с тем, что Windows ZIP не следует спецификациям ZIP-формата, которые кстати, выложены в открытый доступ.

Если конкретно, то есть бит специальный, задающий кодировку, если он выставлен в 1, то кодировка должна быть UTF-8, а если нет, то в CP437, а в Windows не соблюдается ни то, ни другое.

Никогда не используйте встроенный в Windows архиватор. Если нужно создать архив zip в Windows, можно использовать программу 7-zip.

Что касается этой проблемы, можно попытаться переименовать после распаковки или попробовать распаковать bsdtar, 7zip или unar.

Нашел решение, хоть и костыльное, но работает. Установил winrar через wine. Все прекрасно отображается.

Первым делом буду использовать urar, если не сработает, то winrar.

Не подскажете а как закрыть на форуме вопрос?

Я тут не вижу такой опции.

В стартовом посте есть кнопка [Отметить тему решенной].

Нашел решение, хоть и костыльное, но работает. Установил winrar через wine. Все прекрасно отображается.

Можно и получше решение найти, пропатчить info-zip например. И насчёт unar, то есть опция

-e, -encoding ENCODING The encoding to use for filenames in the archive, when it is not known. If not specified, the program attempts to auto-detect the encoding used. Use «help» or «list» as the argument to give a listing of all supported encodings.

Кодировку выставить в CP866 и должно всё распаковаться без вайна.

Спасибо, в следующий раз обязательно попробую.

А зачем ждать следующего раза? Разве ты уже удалил распакованный архив? Дай вывод

Просто я тестирую другую систему, потом переметнусь обратно в xubuntu и проверю.

Источник

zip-архивы из винды: в какой кодировке там имена файлов?

Есть архив, созданный в виндах (ХР), содержаший файлы с русскими именами. Имена НЕ в uft-8/cp866/cp1251 (проверил). Так что-же там за кодировка используется? (Локаль — koi8-r)

И попутный вопрос: нужно запаковать в zip файлы с русскими именами и отдать виндузятнику. Локаль — koi8-r. Как-нибудь можно сделать так, что бы ему не пришлось потом перекодировкой заниматься?

Re: zip-архивы из винды: в какой кодировке там имена файлов?

В какой-то рассылке нашел инфу о том, что info-zip коверкает имена файлов до полной неузноваемости. Так-же нашел патч для перекодировки вот тут: https://bugzilla.altlinux.org/attachment.cgi?id=532

Только что проверил: все работатет! Виндовые архивы перекодируются на лету!

Re: zip-архивы из винды: в какой кодировке там имена файлов?

Попутный вопрос: нужно запаковать в zip файлы с русскими именами и отдать виндузятнику. Локаль — koi8-r. Как-нибудь можно сделать так, что бы ему не пришлось потом перекодировкой заниматься?

Re: zip-архивы из винды: в какой кодировке там имена файлов?

Тут на самом деле нет однозначного ответа. WinRAR и pkzip25 кодируют в cp866. Сам неоднократно гемороился с *.zip, передавая/получая файлы упакованные на машине с win2k на winxp и наоборот. imho для виндузятников лучше паковать в *.rar – там используется unicode.

Re: zip-архивы из винды: в какой кодировке там имена файлов?

> imho для виндузятников лучше паковать в *.rar – там используется unicode.

Это в новых версиях чтоль? У меня rar паковал в в кодировке локали.

Re: zip-архивы из винды: в какой кодировке там имена файлов?

>Это в новых версиях чтоль? У меня rar паковал в в кодировке локали

Я имел в виду то, что имена файлов в rar хранятся в юникоде. Пакуешь, естественно, в своей локали, а rar при паковке перекодирует имена в юникод. На распаковке – из юникода переводит в ту локаль, которая у тебя установлена.

Источник

Кодировка zip

Всем привет, знаю тема заезженная, но нечего из прочитанных рецептов не помогло. У меня после распаковки из zip архива все имена файлов что были написаны русскими буквами превращаются в кашу, а из того же архива файлы с англ. именами все в порядке. При команде file -i filename у англ. файлов charset указан iso-8859-1 а если эту команду [file -i 00_01_à¨¢¥âá⢨¥.MP4] применить вот к такому файлику из архива то показывает binary. Пробовал использовать «convmv -f binary -t UTF-8 * -r –notest» но увы нечего не работает, пишет что всё ок Ready. Но все по прежднему. help плз.

ничего из прочитанных рецептов не помогло

unzip с natspec патчами точно пробовался и не помогает?

Какая связь между «file -i . — binary» и convmv -f binary .

Тут либо natspec патчи использовать, либо виндовский архиватор под вайном.

Источник

Архивирование файлов в Linux

В наши дни мы сталкиваемся с файлами архивов очень часто и на всех платформах: Windows, Mac или Linux. Это могут быть программы, резервные копии систем или баз данных или просто архив файлов. Нам также часто приходится создавать свои архивы в Linux, чтобы передать несколько файлов друзьям или загрузить на файлообменник. В виде архивов распространяются пакеты программ, исходные коды, а также много других файлов, распространяемых на просторах интернета. Научиться выполнять архивирование файлов в Linux через терминал очень важно, возможно это вам понадобиться, когда не будет доступа к графическому интерфейсу, или просто со временем в терминале станет более приятно работать.

В этой инструкции я хочу подробно рассмотреть утилиты для архивирования в Linux, мы рассмотрим не только самую популярную и универсальную утилиту – tar, но и другие менее известные, а также популярные алгоритмы сжатия.

Архивирование в Linux

Важно отметить, что архивирование в linux это не одно и то же что и сжатие файлов linux. Архивирование – это объединение нескольких небольших файлов в один, с целю более удобной последующей передачи, хранения, шифрования или сжатия. Как я уже сказал, архивация выполняется специальными утилитами. Мы не будем трогать архивацию файлов в графическом интерфейсе, вы с ними разберетесь сами, наша тема – терминал.

Самой популярной для Linux утилитой для архивации есть tar. Она используется почти везде, для архивации исходников, упаковки пакетов. Для сжатия используются другие утилиты, в зависимости от алгоритма сжатия, например, zip, bz, xz, lzma и т д. Сначала выполняется архивация, затем сжатие, отдельными программами. Автоматический запуск некоторых утилит сжатия для только что созданного архива поддерживается в tar и других подобных программах с помощью специальных опций.

Также полезной возможностью архивации есть шифрование. Но теперь давайте рассмотрим какие существуют утилиты, с помощью которых выполняется архивирование файлов linux и как ими пользоваться.

Tar – это стандартная утилита, с помощью которой выполняется архивирование файлов Linux. Постепенно из небольшой программы архивации она превратилась в мощный инструмент, поддерживающий работу со многими вариантами архивов и алгоритмами сжатия. Программа поддерживает большое количество параметров. Давайте рассмотрим ее синтаксис и основные параметры:

$ tar опции f файл_для_записи /папка_файлами_для_архива

А теперь разберем основные опции:

  • A – добавить файл к архиву
  • c – создать архив в linux
  • d – сравнить файлы архива и распакованные файлы в файловой системе
  • j – сжать архив с помощью Bzip
  • z – сжать архив с помощью Gzip
  • r – добавить файлы в конец архива
  • t – показать содержимое архива
  • u – обновить архив относительно файловой системы
  • x – извлечь файлы из архива
  • v – показать подробную информацию о процессе работы
  • f – файл для записи архива
  • -C – распаковать в указанную папку
  • –strip-components – отбросить n вложенных папок

Теперь давайте рассмотрим архивирование файлов в Linux. Чтобы создать архив используйте такую команду:

tar -cvf archive.tar.gz /path/to/files

А чтобы распаковать архив tar linux:

tar -xvf archive.tar.gz

Очень просто запомнить для упаковки используется опция cCreate, а для распаковки – x – eXtract.

Сжатый архив создается точно так же, только с опцией -z, это в случае, если использовалось шифрование gizp, если нужно bzip то применяется опция -j:

tar -zcvf archive.tar.gz /path/to/files

$ tar -zxvf archive.tar.gz

Например, рассмотрим как заархивировать папку в Linux:

tar -zcvf home.tar.gz

Хотя можно поступить по-другому, тот же архив мы получим если сначала создать обычный архив с помощью tar, а потом сжать его утилитой для сжатия, только здесь мы получаем больше контроля над процессом сжатия:

Также можно убрать сжатие:

Утилиты сжатия мы рассмотрим ниже.

Чтобы добавить файл в архив используйте:

tar -rvf archive.tar file.txt

Для извлечения одного файла синтаксис тот же:

tar -xvf archive.tar file.txt

Можно извлечь несколько файлов по шаблону соответствия с помощью параметра wildcard, например, извлечем все php файлы:

tar -xvf archive.tar –wildcards ‘*.php’

По умолчанию распаковать архив tar linux можно в текущую папку с именем архива, чтобы распаковать в нужную папку используйте ключ -C:

tar -xvf archive.tar -C /path/to/dir

Стандартную утилиту рассмотрели, теперь кратко рассмотрим ее альтернативы. Их не так много, и большинство из них уже устаревшие.

Shar позволяет создавать самораспаковывающиеся архивы. По сути, это скрипт оболочки, и для распаковки ему необходима оболочка Bash или другая совместимая с Bourne Shell. У Shar есть несколько преимуществ, но также он потенциально небезопасный, так как архив представляет собой исполняемый файл.

  • -o – сохранять архив в файл вместо стандартного вывода
  • -l – ограничить размер выходного файла
  • -L – ограничить размер выходного файла и разбить его на части
  • -n – имя архива не будет включено в заголовок
  • -a – разрешить автоматическую генерацию заголовков

Примеры использования shar для того чтобы заархивировать папку linux:

Создаем shar архив:

shar file_name.extension > filename.shar

Распаковываем shar архив:

ar – утилита для создания и управления архивами. В основном используется для архивации статических библиотек, но может быть использована для создания любых архивов. Раньше использовалась довольно часто но была вытеснена утилитой tar. Сейчас используется только для создания и обновления файлов статических библиотек.

  • – d – удалить модули из архива
  • – m – перемещение членов в архиве
  • – p – напечатать специфические члены архива
  • – q – быстрое добавление
  • – r – добавить члена к архиву
  • – s – создать индекс архива
  • – a – добавить новый файл к существующему архиву

Теперь рассмотрим примеры использования. Создадим статическую библиотеку libmath.a из объектных файлов substraction.o и division.o:

ar cr libmath.a substraction.o division.o

Теперь извлечем файлы из архива:

Таким образом, можно распаковать любую статическую библиотеку.

cpio – означает Copy in and out (скопировать ввод и вывод). Это еще один стандартный архиватор для Linux. Активно используется в менеджере пакетов Red Hat, а также для создания initramfs. Архивация в Linux для обычных файлов с помощью этой программы не применяется.

  • -a – сбросить время обращения к файлам после их копирования
  • -A – добавить файл
  • -d – создать каталоги при необходимости

Пример использования. Создаем cpio архив:

file1.o file2.o file3.o

ls | cpio -ov > /path/to/output_folder/obj.cpio

Архивирование папки linux выполняется также само.

Сжатие архивов в Linux

Как создать архив в linux рассмотрели. Теперь давайте поговорим о сжатии. Как я говорил, для сжатия используются специальные утилиты. Рассмотрим кратко несколько из них

Чаще всего применяется Gzip. Это стандартная утилита сжатия в Unix/Linux. Для декомпрессии используется gunzip или gzip -d Сначала рассмотрим ее синтаксис:

$ gzip опции файл

$ gunzip опции файл

Теперь разберем опции:

  • -c – выводить архив в стандартный вывод
  • -d – распаковать
  • -f – принудительно распаковывать или сжимать
  • -l – показать информацию об архиве
  • -r – рекурсивно перебирать каталоги
  • -0 – минимальный уровень сжатия
  • -9 – максимальный уровень сжатия

Примеры использования вы уже видели в описании утилиты tar. Например, выполним сжатие файла:

gzip -c файл > архив.gz

А теперь распакуем:

Но чтобы сжать папку в Linux вам придется сначала заархивировать ее с помощью tar, а уже потом сжать файл архива с помощью gzip.

bzip2 – еще одна альтернативная утилита сжатия для Linux. Она более эффективная чем gzip, но работает медленнее. Для распаковки используйте утилиту bunzip2.

Описывать опции bzip2 я не буду, они аналогичны gzip. Чтобы создать архив в Linux используйте:

В текущем каталоге будет создан файл file.bz2

Новый и высокоэффективный алгоритм сжатия. Синтаксис и опции тоже похожи на Gzip. Для распаковки используйте unlzma.

Еще один высокоэффективный алгоритм сжатия. Обратно совместимый с Lzma. Параметры вызова тоже похожи на Gzip.

Кроссплатформенная утилита для создания сжатых архивов формата zip. Совместимая с Windows реализациями этого алгоритма. Zip архивы очень часто используются для обмена файлами в интернете. С помощью этой утилиты можно сжимать как файлы, так и сжать папку linux.

$ zip опции файлы

$ unzip опции архив

  • -d удалить файл из архива
  • -r – рекурсивно обходить каталоги
  • -0 – только архивировать, без сжатия
  • -9 – наилучший степень сжатия
  • -F – исправить zip файл
  • -e – шифровать файлы

Чтобы создать Zip архив в Linux используйте:

Как видите архивирование zip в Linux не сильно отличается от других форматов.

Выводы

Теперь вы знаете все что нужно об архивации файлов в Linux. Мы рассмотрели только консольные команды, так сказать, чтобы была понятна суть. В графическом интерфейсе все еще проще. Если остались вопросы – задавайте их в комментариях.

Источник

Популярные записи


Adblock
detector