Сжатие файлов с терминала OS X?

50

В Finder есть замечательная возможность щелкнуть правой кнопкой мыши файл или каталог, выбрать сжатие в раскрывающемся списке и получить сжатый файл.

Можно ли сделать то же самое из терминала?

Уильям Джокуш
источник

Ответы:

69

Это называется zip.

Это добавляет файл fileв архив file.zip:

zip file.zip file

Конечно, чтобы добавить больше файлов, просто добавьте их в качестве аргументов команды. Проверьте man zipбольше вариантов.

Часто вам нужно пропустить включающие эти надоедливые .DS_Storeфайлы, например сжать всю папку folderв folder.zip:

zip -vr folder.zip folder/ -x "*.DS_Store"
slhck
источник
что такое (1) после слова zip?
Джейкоб Раккуя
@JacobRaccuia See superuser.com/questions/297702/...
slhck
Это обычный старый GNU zip, который поставляется с OS X?
mwfearnley
@mwfearnley Под macOS это так Copyright (c) 1990-2008 Info-ZIP. developer.apple.com/legacy/library/documentation/Darwin/...
slhck
ссылка man zip
commonpike
15

Чтобы сжать файлы в точности так, как это сделала бы команда Finder, используйте:

ditto -c -k --sequesterRsrc --keepParent src_directory archive.zip

Смотрите man dittoподробности:

 The command:
       ditto -c -k --sequesterRsrc --keepParent src_directory archive.zip
 will create a PKZip archive similarly to the Finder's Compress function-
 ality.
qqbenq
источник
3
Это лучший ответ, потому что он производит одинаковый zip, тогда как CLI zip или tar отличается и немного меньше. Аналогичный вопрос с тем же ответом: stackoverflow.com/questions/10738505/…
Генри Блайт
5

Есть tar (1) и gzip (или bzip2 или lzma). Tar используется для объединения нескольких файлов в один архив, в то время как один из трех других используется для его сжатия.

В командной строке вы вызовете tar с несколькими опциями, чтобы создать архив и распаковать его.

Например:

tar -c -z -f myarchive.tar.gz -C /home/username Downloads

Этот willl -c reate ag -z ipped архив с именем -f ile из каталога -C hange-folder-to будет содержать все файлы в папке Downloads. Опция -C является необязательной, и аргументы исходного файла будут взяты из текущей папки, если опущены.

Для справки: учебник по tar

Ярослав Рахматуллин
источник