Как создать и извлечь zip-архивы из командной строки?
Как создать и извлечь zip-архивы из командной строки?
Ответы:
Обычно используется tar
для создания несжатого архива и / gzip
или bzip2
для сжатия этого архива. Соответствующее gunzip
и bunzip2
команды могут быть использованы для распаковывать указанный архив, или вы можете просто использовать флаги на tar
командах для выполнения распаковки.
Если вы имеете в виду конкретно к формату Zip файлов , вы можете просто использовать zip
и unzip
команды.
Сжать:
zip squash.zip file1 file2 file3
или заархивировать каталог
zip -r squash.zip dir1
Чтобы распаковать:
unzip squash.zip
это распакует его в ваш текущий рабочий каталог.
zip -r9 archive.zip files...
синтаксис (-r = рекурсивный -9 = максимальное сжатие).
zip
можно создавать множество разных разновидностей архивов .ZIP, а также использовать много разных компрессоров. С другой стороны, существует ряд других инструментов сжатия, названных аналогично: 7-Zip, gzip, bzip2, rzip и т. Д., Которые не являются взаимозаменяемыми.
cd dir1; zip -r ../squash.zip *
unzip -d myfolder squash.zip
для извлечения в отдельный новый каталог ( myfolder
) вместо того, чтобы помещать все файлы непосредственно в текущий каталог, что может раздражать, если файл zip содержит много файлов и каталогов на верхнем уровне. Это имитирует работу большинства инструментов для распаковки пользовательского интерфейса.
Существует действительно огромное количество различных способов сжатия и распаковки в производных UNIX, поэтому я собираюсь предположить, что вы имели в виду «zip» в общем смысле, а не в конкретном формате файла.
Вы можете архивировать файлы (в сжатом формате) с помощью tar
программы GNU :
tar -zcvf myfile.tgz .
который будет делать текущий каталог. Замените .
другими именами файлов, если вы хотите что-то еще.
Чтобы распаковать этот файл, используйте:
tar -zxvf myfile.tgz
Это, конечно, предполагает, что у вас есть tar
возможность выполнять сжатие, а также объединять файлы в один.
Если нет, вы можете просто использовать с tar cvf
последующим gzip
(снова, если доступно) для сжатия и gunzip
затем tar xvf
.
Для конкретной обработки файлов формата ZIP, я бы порекомендовал скачать 7zip
и использовать это - он распознает огромное разнообразие форматов файлов, включая ZIP.
tar jcvf file.tar.bz2...
для сжатия в формате bzip2 или tar Jcvf file.tar.xz ...
для сжатия xz.
Если у вас не установлены пакеты zip и unzip и у вас есть java, вы можете использовать jar
для распаковки:
jar -xf file.zip
Ну, когда дело доходит до распространения файлов для различных операционных систем, я бы рекомендовал 7-zip .
Обычно в пакете p7zip
вы получаете команду 7z
and 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
atool
, это хороший маленький инструмент, который делает использование различных компрессоров более удобным. Привязать это к a
и создать архив становится a arc.7z folder/
или извлекать простоеa arc.7z
unzip <filename>
а также
zip -r archive.zip <filename> [filename]
Вам необходимо убедиться, что эти команды установлены через менеджер пакетов. Это не сложнее, чем использовать что-либо еще в командной строке. Это, конечно, проще, чем создавать архивы с помощью tar.
BSD Tar также может сделать это
bsdtar acf bravo.zip alfa.jpg
Или же:
bsdtar xf bravo.zip
tar
Преимущество BSD заключается в поддержке множества дополнительных форматов сжатия по сравнению с GNU tar
и другими форматами tar
. Возможно, наибольшее преимущество заключается в том, что это происходит при использовании tar
-подобного синтаксиса . Вы можете , конечно , использовать 7z
, unrar
, unzip
и т.д. из командной строки, но они используют различный синтаксис.
Самый стандартный ответ pax
, который рекомендуется cpio
и tar
.
В отличие от cpio
POSIX tar
, но, как и GNU tar
, pax
он умеет архивировать файлы и сжимать архив. Это поведение отличается от того zip
, который сжимает каждый файл перед тем, как поместить его в архив.
pax
Поддерживает ли zip архивы?
pax
архивы!
Это касается только добычи.
Для этого я начал использовать dtrx
.
Весь смысл в том, чтобы устранить сложность. Таким образом, вы просто передаете в него любой архив, и он выясняет, что с ним делать. Zip, tar, gz ... Использование всегда одинаково - dtrx archive.zip
. Он задает несколько вопросов, и все готово.
dtrx
доступно в большинстве репозиториев, так что вы можете apt
| yum
установить его.
Я часто пытаюсь заархивировать измененные файлы в моем рабочем каталоге - либо скопировать все измененные файлы в другой рабочий каталог песочницы, либо сохранить их ненадолго, потому что я хочу отменить некоторые изменения.
В этом случае я копирую список измененных файлов во временный файл и использую его zip
с опцией -@
.
Допустим, я изменил файлы Foo.h, Bar.cc и TestBar.cc.
Допустим, я создал файл с именемified-files.txt, содержимое которого:
Foo.h
Bar.cc
TestBar.cc
Я выполняю следующую команду, чтобы сжать эти файлы:
cat modified-files.txt | zip modified-files.zip -@