Як я можу створювати та витягувати архіви 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
та 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]
Вам потрібно буде переконатися, що ці команди встановлені через менеджер пакунків. Це не складніше, ніж використовувати що-небудь інше в командному рядку. Це, звичайно, простіше, ніж створювати архіви з дьогтем.
BSD Tar також може це зробити
bsdtar acf bravo.zip alfa.jpg
Або:
bsdtar xf bravo.zip
tar
має перевагу в підтримці декількох додаткових форматів стиснення порівняно з GNU tar
та іншими tar
. Найбільша користь - це, мабуть, те, що він робить це під час використання tar
синтаксису -like . Ви можете , звичайно , використовувати 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.
Скажімо, я створюю файл під назвою modi-files.txt, вміст якого:
Foo.h
Bar.cc
TestBar.cc
Я виконую наступну команду для копіювання цих файлів:
cat modified-files.txt | zip modified-files.zip -@