Вы не можете прочитать эту распаковку под Linux?

Linux

предисловие

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

tar

tar — наиболее часто используемая команда распаковки в Linux. Команду tar можно использовать для обработки файлов с суффиксами tar, tar.gz, tgz, .tar.Z, tar.bz2. Описание задействованных параметров:

-c 建立新的压缩文件
-r 添加文件到已经压缩的文件
-u 添加改变了和现有的文件到已经存在的压缩文件
-x 从压缩的文件中提取文件
-t 显示压缩文件的内容
-z 支持gzip解压文件
-j 支持bzip2解压文件
-v 显示操作过程
-k 保留源有文件不覆盖
-C 切换到指定目录
-f 指定压缩文件

--delete            删除包中文件
--strip-components  去除目录
--add-file          向包中添加文件

компрессия

Заархивируйте tarball без сжатия

tar -cvf test.tar test1.log test2.log #归档多个文件
tar -cvf test.tar test/*  #归档test目录下所有文件
tar -cvf test.tar *.log  #归档所有以.log结尾的文件 

Так как этот метод не сжимает, только архивы, поэтомуочень быстро, при этом занимая больше места.

Заархивируйте и сожмите в tar.gz или tar.bz2

Упаковка таким образом сжимает файл:

tar -zcvf test.tar.gz file1 file2 #打包,并以gzip压缩
tar -jcvf test.tar.bz2 file1 file2 #打包,并以bzip2压缩

Посмотреть файлы в архиве

Если вы не хотите распаковывать и просто хотите просмотреть содержимое файлов в сжатом пакете, вы можете использовать параметр -t:

tar -tvf test.tar #可查看test包中有哪些文件

Удалить исходные файлы после упаковки

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

tar -zcvf test.tar.gz test.log --remove-files 
Упаковать файлы, отличные от указанного каталога или файла

Для файлов в некоторых каталогах может потребоваться упаковка только некоторых файлов, поэтому вы можете использовать параметр --exclude, чтобы исключить некоторые файлы, которые не нужно упаковывать:

tar -zcvf test.tar.gz --exclude=test/*.log test/* #打包test目录下所有文件,排除以.log结尾的文件

Здесь используется параметр --exclude, который поддерживает подстановочные знаки и регулярные выражения, поэтому он также очень мощный.

Обновить файлы в архив

Например, тестовый и другие файлы были введены в сжатый пакет, и теперь вы хотите обновить только тестовый файл в сжатом пакете, тогда вы можете использовать параметр --add-file:

tar -tf test.tar --add-file=test #只针对tar包

Добавить файлы в архив

Чтобы добавить файлы в архив, используйте параметр -r:

tar -rf test.tar testfile #在test.tar包中增加文件,只针对tar包

удалить файлы в архиве

Файлы в пакете можно удалить с помощью параметра --delete без распаковки:

tar --delete -f test.tar  test1 #从test.tar中删除test1文件

распаковать

Извлеките файлы tar.gz и tar в текущий каталог.

tar -xvf test.tar.gz
tar -xvf test.tar 

Разархивировать в указанный каталог

tar -xvf test.tar.gz -C dir
tar -xvf test.tar -C dir

Разархивируйте указанный файл в пакете

Например, файлы в пакете test.tar.gz выглядят следующим образом:

1.txt
log/
log/1.log
log/2.log
log/2.log
log/4.log
log/5.log

Если нам нужно извлечь только 1.log в каталог журнала, нам нужно выполнить только следующую команду:

tar -xvf test.tar.gz log/1.log
tar -xvf test.tar.gz log/1.log -C test #将1.log解压到test目录

Удалить структуру каталогов при распаковке

Файлы в сжатом пакете могут иметь многоуровневые каталоги.После распаковки файлов обычным способом соответствующие каталоги также будут существовать.Если вам нужны только файлы в сжатом пакете, вы можете удалить структуру каталогов (примечание: имена файлов в одной и той же папке не могут повторяться):

tar -xvf test.tar.gz --strip-components=1 #去掉一层目录

Не перезаписывать исходный файл при распаковке

Файлы в пакете могут уже существовать в текущем каталоге.Если вы не хотите, чтобы разархивированные файлы перезаписывали существующие в данный момент файлы, вы можете использовать параметр -k (будет выдано сообщение об ошибке):

tar -xvkf test.tar.gz

специальное напоминание

Параметр f диапазона декомпрессии или сжатия, упомянутый выше, необходимо поместить в конец, потому что он определяет имя сжатого пакета, иначе декомпрессия или сжатие не удастся.

zip/unzip

Команды zip и unzip в основном используются для обработки zip-пакетов.

компрессия

Описание задействованных параметров:

-d 从压缩文件内删除指定的文件。
-f 此参数的效果和指定"-u"参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中。
-j 只保存文件名称及其内容,而不存放任何目录名称。
-r 递归处理,将指定目录下的所有文件和子目录一并处理。
-u 更换较新的文件到压缩文件内。
-v 显示指令执行过程或显示版本信息。
-y 直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。
- <压缩效率> 压缩效率是一个介于1-9的数值。

Сжатый файл

zip -r test.zip test/ #打包test目录下的文件
zip -rj test.zip test/ #打包test目录下文件,且压缩包不带test目录

Укажите степень сжатия для упаковки файла

zip -r8 test.zip test/* #数值(1-9)越大,压缩率越高,耗时越长

упаковать файлы символических ссылок

Предыдущая команда может упаковывать только обычные файлы.Если вы хотите упаковать файлы с символическими ссылками, вам нужно использовать параметр -y:

zip  -ry test.zip test

Добавляйте или обновляйте файлы в архив

Иногда вам нужно добавить файлы в сжатый пакет, но вы не хотите повторно распаковывать пакет, вы можете использовать параметр -u:

zip -u test.zip test2 #向test.zip 包中增加test2文件

Публичный аккаунт WeChat [Programming Pearl]: сосредоточьтесь, помимо прочего, на том, чтобы поделиться основами компьютерного программирования, Linux, языком C, C++, структурами данных и алгоритмами, инструментами, ресурсами и другими [оригинальными] техническими статьями, связанными с программированием. Оригинальный адрес:Ууху, Ян Бинху.com/2018/10/19/…

Шифровать при сжатии

Если вам нужно зашифровать сжатый пакет во время сжатия, вы можете использовать параметр -P:

zip -r test.zip test1 test -P 66666 #使用密码66666加密

Удалить определенные файлы сжатого пакета

zip -d test.zip test  #删除test.zip包中的test文件

распаковать

Описание задействованных параметров:

-l 显示压缩文件内所包含的文件
-j 只保存文件名称及其内容,而不存放任何目录名称。
-o 以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该
-v 显示指令执行过程或显示版本信息。
-d 指定解压目录,目录不存在会创建

Просмотр информации о файле в сжатом пакете

unzip -l test.zip #可以看到压缩包中的文件名,日期等信息
unzip -v test.zip #查看更多信息,例如crc校验信息等

Разархивируйте сжатый пакет

unzip -o test.zip -d dir #讲test.zip解压到dir目录

Разархивируйте указанный файл в пакете

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

unzip -o test.zip "1.log" -d dir #解压包中的1.log文件到dir目录
unzip -o tet.zip "*.log" -d dir  #解压包中所有的log文件

Удалить структуру каталогов при распаковке

В сжатом пакете есть несколько структур каталогов. Обычная распаковка по-прежнему сохраняет структуру каталогов. Если вам нужны только файлы в сжатом пакете, вы можете использовать параметр -j:

zip -oj test.zip -d ./temp  

Разархивируйте пакет jar

Пакет jar представляет собой пакет архива Java, но вы также можете разархивировать его, чтобы просмотреть файлы внутри:

unzip -o java.jar -d dir

gzip

Описание задействованных параметров:

-k 保留源文件
-d 解开压缩文件
-r 递归处理,将指定目录下的所有文件及子目录一并处理
-v 显示指令执行过程

Команда tar имеет параметр -z, и когда она упакована в файл tar.gz, для сжатия вызывается gzip. Степень сжатия gzip для текста составляет около 60% ~ 70%, а сжатый файл пакета часто имеет суффикс gz. Используйте параметр -k, чтобы сохранить исходные файлы:

gzip -k ./* #当前目录下所有文件进行压缩,每个文件一个gz包
gzip -rkv ./* 递归压缩

Распаковать тоже несложно:

gzip -dv test.gz 

bzip2

Когда команда tar использует параметр -j для упаковки файла как tar.bz2, для сжатия вызывается bzip2. После сжатия или распаковки bzip2 исходные файлы удаляются. Если вам нужно сохранить исходные файлы, вы можете использовать параметр -k:

bzip2 -zk test  #压缩test文件
bzip2 -dk test.bz2  #解压

rar/unrar

Команды rar и unrar не включены в дистрибутив Linux и должны быть установлены отдельно. Обычное использование выглядит следующим образом:

rar a test.tar test  #将test文件压缩为test.tar
rar e test.rar       #解压test.tar
unrar x test.rar     #解压test.tar

Сравнение степени сжатия

Общая степень сжатия:

tar.bz2>tar.gz>zip>tar

Чем выше степень сжатия, тем больше времени требуется для сжатия и распаковки.

Суммировать

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

Вышеупомянутый контент взят из общедоступной учетной записи [Programming Pearl].