it-swarm-ru.tech

Как мне сжать / разархивировать в командной строке Unix?

Как я могу создавать и извлекать Zip-архивы из командной строки?

570
joachim

Обычно используется tar для создания несжатого архива и либо gzip, либо bzip2 для сжатия этого архива. Соответствующие команды gunzip и ​​bunzip2 можно использовать для распаковки указанного архива, или вы можете просто использовать флаги в команде tar для выполнения распаковки.

Если вы имеете в виду конкретно формат Zip-файла , вы можете просто использовать команды Zip и ​​unzip.

Сжать:

Zip squash.Zip file1 file2 file3

или Zip каталог

Zip -r squash.Zip dir1

Чтобы распаковать:

unzip squash.Zip

это распакует его в ваш текущий рабочий каталог.

698
Justin Ethier

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

Вы можете сжать файлы (в сжатом формате) с помощью программы GNU tar):

tar -zcvf myfile.tgz .

который будет делать текущий каталог. Заменить . с другими именами файлов, если вы хотите что-то еще.

Чтобы распаковать этот файл, используйте:

tar -zxvf myfile.tgz

Это предполагает, конечно, что у вас есть tar, способный выполнять сжатие, а также объединять файлы в один.

Если нет, вы можете просто использовать tar cvf с последующим gzip (снова, если доступно) для сжатия и gunzip с последующим tar xvf.


Для конкретной обработки файлов в формате Zip я бы рекомендовал скачать 7Zip и ​​используя это - он распознает огромное разнообразие форматов файлов, включая Zip.

68
user14408

Если у вас не установлены пакеты Zip и Unzip, и у вас есть Java, вы можете использовать jar для распаковки:

jar -xf file.Zip
33
mlocke

Ну, когда дело доходит до распространения файлов для различных операционных систем, я бы рекомендовал 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 (если вы хотите посоветовать инструмент для этого: PeaZip ).

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

tar cJf archive.tar.xz file1 file2 dir

xz - инструмент UNIX, который использует LZMA2 для сжатия, но работает так же, как gz, bz2 и ​​т. д. работает. Это даже работает как фильтр.

7z не создает архивы с полной информацией о файловой системе в UNIX, поэтому вам нужно использовать tar перед использованием 7z (но поскольку 7z хранит другую информацию о файле tar, я бы порекомендовал используя xz, как он предназначен для этого):

tar cf - file1 file2 dir | 7za z -si archive.tar.7z
30
polemon
unzip <filename>

а также

Zip -r archive.Zip <filename> [filename]

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

23
Starfish

BSD Tar также может сделать это

bsdtar -a -c -f sunday.Zip sunday.jpg

Или:

bsdtar -x -f sunday.Zip
4
Steven Penny

Самый стандартный ответ --- pax , который рекомендуется более cpio и tar ,.

В отличие от cpio и ​​POSIX tar, но вроде GNU tar, pax умеет архивировать файлы и сжимать архив. Это поведение отличается от Zip , который сжимает каждый файл перед тем, как поместить его в архив.

3
mouviciel

Это касается только добычи.

Для этого я начал использовать dtrx .

Весь смысл в том, чтобы устранить сложность. Таким образом, вы просто передаете в него любой архив, и он выясняет, что с ним делать. Zip, tar, gz ... Использование всегда одинаково - dtrx archive.Zip. Он задает несколько вопросов, и все готово.

dtrx доступно в большинстве репозиториев, поэтому вы можете apt | yum установить его.

2
JackLeo

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

В этом случае я копирую список измененных файлов во временный файл и использую Zip с параметром [email protected].

Допустим, я изменил файлы Foo.h, Bar.cc и TestBar.cc.

Допустим, я создал файл с именемified-files.txt, содержимое которого:

Foo.h
Bar.cc
TestBar.cc

Я выполняю следующую команду, чтобы сжать эти файлы:

cat modified-files.txt | Zip modified-files.Zip [email protected]
1
R Sahu