Как создать и извлечь 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вы получаете команду 7zand 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.
В отличие от cpioPOSIX 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 -@