Как сделать zip /unzip в командной строке unix?
Как я могу создать и извлечь zip-архивы из командной строки?
9 ответов
Обычно для создания несжатого архива используется tar
и gzip
или bzip2
для сжатия этого архива. Соответствующие команды gunzip
и bunzip2
могут использоваться для распаковки указанного архива или вы можете просто использовать флаги в команде tar
для выполнения сжатия.
Если вы конкретно ссылаетесь на формат файла Zip , вы можете просто использовать zip
и unzip
.
Сжать:
zip squash.zip file1 file2 file3
или для zip каталога
zip -r squash.zip dir1
Чтобы распаковать:
unzip squash.zip
это распаковывает его в текущем рабочем каталоге.
Есть действительно vast количество различных способов сжатия и распаковки под UNIX-производными, поэтому я собираюсь предположить, что вы имели в виду «zip» в общем смысле, а не /em>.
Вы можете зашифровать файлы в сжатом формате с помощью программы GNU tar
:
tar -zcvf myfile.tgz .
, который будет выполнять текущий каталог. Замените .
другими именами файлов, если вы хотите что-то еще.
Чтобы распаковать этот файл, используйте:
tar -zxvf myfile.tgz
Это предполагает, что у вас есть tar
, способный выполнять сжатие, а также объединение файлов в один.
Если нет, вы можете просто использовать tar cvf
, за которым следует gzip
(опять же, если доступно) для сжатия и gunzip
, за которым следует tar xvf
.
Для конкретной обработки файлов формата ZIP я бы рекомендовал загрузить 7zip
и использовать это - он распознает множество форматов огромных , включая ZIP-файл.
Хорошо, когда дело доходит до распространения файлов для различных операционных систем, я бы рекомендовал 7-zip .
Обычно в пакете p7zip
вы получите команду 7z
и 7za
, с помощью которой вы можете создать свои собственные архивы 7z.
7za
также может распаковать стандартный ( pkzip ) zip-архивы (и создайте их также с помощью -tzip
).
Сжатие:
7za a archive.7z file1 file2 directory/
Распаковка:
7za x archive.7z
Он также может создавать самораспаковывающиеся архивы с помощью переключателя -sfx
:
7za a -sfx archive.exe files1 file2 dir
Я рекомендую этот метод, если пользователи Windows не смогут открывать архивы 7z (в случае, если вы хотите посоветовать инструмент для этого: -J
- это инструмент UNIX, который использует LZMA2 для сжатия, но работает путь tar
, tar cJf archive.tar.xz file1 file2 dir
и т. д. Он работает даже как фильтр.
7z не создает архивы с полной информацией о файловой системе в UNIX, поэтому вам нужно будет использовать xz
перед использованием 7z (но поскольку 7z хранит другую информацию о gz
, я бы рекомендовал использовать bz2
, поскольку он предназначен для него):
tar
Если у вас нет пакетов zip и unzip, и у вас есть java, вы можете использовать jar
для распаковки:
jar -xf file.zip
unzip <filename>
и
zip -r archive.zip <filename> [filename]
Вам нужно убедиться, что эти команды установлены через диспетчер пакетов. Это не сложнее, чем использовать что-либо еще в командной строке. Это, конечно, проще, чем создание архивов с tar.
BSD Tar также может сделать это
bsdtar acf bravo.zip alfa.jpg
Или:
bsdtar xf bravo.zip
Самый стандартный ответ: pax
, который рекомендуется по cpio
и tar
.
В отличие от cpio
и Posix tar
, но как GNU tar
, pax
способен как архивные файлы, так и сжать архив. Это поведение отличается от zip
, который сжимает каждый файл перед тем, как поместить его в архив.
Это относится только к извлечению
Для этого я начал использовать dtrx
.
https://brettcsmith.org/2007/dtrx/
вся суть заключается в том, чтобы удалить сложность. Таким образом, вы просто передаете в любой архив, и он выясняет, что с ним нужно сделать. Zip, tar, gz ... Использовать всегда одно и то же - dtrx archive.zip
. Он задает несколько вопросов, и все готово.
dtrx
доступен в большинстве репозиториев, поэтому вы можете apt
| yum
установить его.
Я часто пытаюсь закрепить измененные файлы в своем рабочем каталоге - либо скопировать все измененные файлы в другую рабочую директорию песочницы, либо сохранить их на короткое время, потому что я хочу отменить некоторые изменения.
В этом случае я копирую список измененных файлов во временный файл и использую zip
с опцией [email protected]
.
Предположим, я модифицировал файлы Foo.h, Bar.cc и TestBar.cc.
Предположим, я создаю файл с именем modified-files.txt, содержимое которого:
Foo.h
Bar.cc
TestBar.cc
Я выполняю следующую команду для zip этих файлов:
cat modified-files.txt | zip modified-files.zip [email protected]