[TOC]
0x00 快速入门 Linux中最常见的压缩格式有:.zip .gz .bz2 .tar.gz .tar.bz2 .xz .rar .tgz
通过打包.tar解决.gz和.bz2压缩目录的不便之处,所以常用压缩格式.tar.gz和.tar.bz2格式代替
打包和压缩两个概念: 答:可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的;
打包是指将一大堆文件或目录变成一个总的文件
压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
为什么要区分这两个概念呢? 答:这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)
tar 命令 描述:tar命令为linux的文件和目录创建档案,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。
weiyigeek.top-tar参数
实例演示:
[TOC]
0x00 快速入门 Linux中最常见的压缩格式有:.zip .gz .bz2 .tar.gz .tar.bz2 .xz .rar .tgz
通过打包.tar解决.gz和.bz2压缩目录的不便之处,所以常用压缩格式.tar.gz和.tar.bz2格式代替
打包和压缩两个概念: 答:可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的;
打包是指将一大堆文件或目录变成一个总的文件
压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
为什么要区分这两个概念呢? 答:这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)
tar 命令 描述:tar命令为linux的文件和目录创建档案,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。
weiyigeek.top-tar参数
实例演示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 tar -cvf log.tar log.log tar -zcvf log.tar.gz log.log tar -jcvf log.tar.bz2 log.log tar -zcvf test.tar.gz test.jsp tar -zxvf test.tar.gz tar -jcvf test.tar.bz2 test.jsp tar -jxvf test.tar.bz2 tar -zxvf test.tar.tgz tar -C cache/ -zcvf context.tar.gz . tar -zxvf test.tar.gz -C /tmp tar -xz -C my_directory --strip-components=1 tar -ztvf test.tar.gz tar -zxvf /opt/soft/test /log30.tar.gz log2013.log tar -zcvpf log31.tar.gz log2014.log log2015.log tar -zcvf scf.tar.gz scf/* --exclude scf/service tar -zcvf wwwroot.ta.gzr /home/public_html/ --exclude=*.gif tar -N "20160529" -zcvf time.tar.gz $tar -cvf test.tar /root/.bash_history$tar -rvf test.tar yum_save_tx.2019-05-29.11-23.JTFrPb.yumtx$tar -tvf test.tar-rw------- root/root 1258 2012-07-31 17:44 root/.bash_history -rw------- root/root 29154 2019-05-29 11:23 yum_save_tx.2019-05-29.11-23.JTFrPb.yumtx ``` <hr> gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用,不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式,据统计gzip命令对文本文件有60%~70%的压缩率。 _减少文件大小的好处:_ - 一是可以减少存储空间 - 二是通过网络传输文件时,可以减少传输的时间 gzip命令用来压缩文件,是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处“.gz”扩展名 ![weiyigeek.top-gzip参数](https://img.weiyigeek.top/2019/20190603152309.png) 实例演示: ```bash $gzip * -rw-r--r-- 1 root root 30 6月 3 15:26 test.jsp.gz $gzip -dv * gzip -d test.gz test.jsp.gz: -200.0% -- replaced with test.jsp
weiyigeek.top-gzip解压
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 gzip -c 源文件 > 压缩文件 gzip -c test.jsp > test.jsp.gz gunzip -c test.gz > filename gzip -dc /home/urpm/rpmbuild/SOURCES/nginx-1.16.0.tar.gz gzip -l * compressed uncompressed ratio uncompressed_name 26 1 -200.0% demo 26 1 -200.0% test gzip -r 目录 gzip -r test / gzip -rvf test6/ gzip -rvf /tmp gzip -drv *
weiyigeek.top-递归压缩解压
1 2 3 4 5 6 7 8 tar -cvf test.jsp.tar test.jsp gzip test.tar $gzip -vt www1.gzwww1.gz: OK
bzip2命令 描述:bzip2命令用于创建和管理(包括解压缩)“.bz2”格式的压缩包。
weiyigeek.top-bzip2参数
示例案例:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 bzip2 源文件 $bzip2 test.jsp test.jsp.bz2 bzip2 -k 源文件 bzip2 -k test.jsp bzip2 -z filename bzip2 -d test.jsp.bz2 bunzip2 test.jsp.bz2 bzip2 -k -d 压缩文件 = bunzip2 -k 压缩文件 bzip2 -tv test.jsp.bz2 $bzip2 -c filename bzip2: I won't write compressed data to a terminal. ' bzip2: For help , type : `bzip2 --help `. $bzip2 -dc filename.bz2 bzip2 -- test.log -rw-r--r-- 1 root root 553 6月 3 15:55 test.log.bz2 $tar -cvf test.jsp.tar test.jsp$bzip2 test.jsp.tar test.jsp.tar.bz2 tar -jcvf 压缩包名.tar.bz2 源文件 -C /tmp/ tar -jxvf 压缩包名.tar.bz2 tar -jtvf 压缩包名.tar.bz2
zip 命令 Linux中zip压缩和unzip解压缩命令详解,zip命令可以用来解压缩文件,或者对文件进行打包操作,zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有“.zip”扩展名的压缩文件。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 zip压缩包:指定要创建的zip压缩包 文件列表:指定要压缩的文件列表 -A:调整可执行的自动解压缩文件; -b<工作目录>:指定暂时存放文件的目录; -c:替每个被压缩的文件加上注释; -d:从压缩文件内删除指定的文件; -D:压缩文件内不建立目录名称; -f:此参数的效果和指定“-u”参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中; -F:尝试修复已损坏的压缩文件; -g:将文件压缩后附加在已有的压缩文件之后,而非另行建立新的压缩文件; -h:在线帮助; -i<范本样式>:只压缩符合条件的文件; -j:只保存文件名称及其内容,而不存放任何目录名称; -J:删除压缩文件前面不必要的数据; -k:使用MS-DOS兼容格式的文件名称; -l:压缩文件时,把LF字符置换成LF+CR字符; -ll:压缩文件时,把LF+cp字符置换成LF字符; -L:显示版权信息; -m:将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中; -n<字尾字符串>:不压缩具有特定字尾字符串的文件; -o:以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同; -q:不显示指令执行过程; -r:递归处理,将指定目录下的所有文件和子目录一并处理; -S:包含系统和隐藏文件; -t<日期时间>:把压缩文件的日期设成指定的日期; -T:检查备份文件内的每个文件是否正确无误; -u:更换较新的文件到压缩文件内; -v:显示指令执行过程或显示版本信息; -V:保存VMS操作系统的文件属性; -w:在文件名称里假如版本编号,本参数仅在VMS操作系统下有效; -x<范本样式>:压缩时排除符合条件的文件; -X:不保存额外的文件属性; -y:直接保存符号连接,而非该链接所指向的文件,本参数仅在UNIX之类的系统下有效; -z:替压缩文件加上注释; -$:保存第一个被压缩文件所在磁盘的卷册名称; -<压缩效率>:压缩效率是一个介于1~9的数值。
实际案例:1 2 3 4 5 6 7 8 9 10 11 zip 压缩文件名 原文件 zip -r 压缩文件名 源目录 zip test.zip test.jsp zip -r test.zip test / zip -r abc123.zip abc 123.txt zip -q -r html.zip /home/Blinux/html zip -q -r html.zip *
unzip 命令 语法说明:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Usage: unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir] Default action is to extract files in list, except those in xlist, to exdir; file[.zip] may be a wildcard. -Z => ZipInfo mode ("unzip -Z" for usage). -p extract files to pipe, no messages -l list files (short format) -f freshen existing files, create none -t test compressed archive data -u update files, create if necessary -z display archive comment only -v list verbosely/show version info -T timestamp archive to latest -x exclude files that follow (in xlist) -d extract files into exdir modifiers: -n never overwrite existing files -q quiet mode (-qq => quieter) -o overwrite files WITHOUT prompting -a auto-convert any text files -j junk paths (do not make directories) -aa treat ALL files as text -U use escapes for all non-ASCII Unicode -UU ignore any Unicode fields -C match filenames case -insensitively -L make (some) names lowercase -X restore UID/GID info -V retain VMS version numbers -K keep setuid/setgid/tacky permissions -M pipe through "more" pager -O CHARSET specify a character encoding for DOS, Windows and OS/2 archives -I CHARSET specify a character encoding for UNIX and other archives See "unzip -hh" or unzip.txt for more help . Examples: unzip data1 -x joe => extract all files except joe from zipfile data1.zip unzip -p foo | more => send contents of foo.zip via pipe into program more unzip -fo foo ReadMe => quietly replace existing ReadMe if archive file newer
参数说明1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 -c:将解压缩的结果 -l:显示压缩文件内所包含的文件 -p:与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换 -t:检查压缩文件是否正确 -u:与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其它文件解压缩到目录中 -v:执行是时显示详细的信息 -z:仅显示压缩文件的备注文字 -a:对文本文件进行必要的字符转换 -b:不要对文本文件进行字符转换 -C:压缩文件中的文件名称区分大小写 -j:不处理压缩文件中原有的目录路径 -L:将压缩文件中的全部文件名改为小写 -M:将输出结果送到more程序处理 -n:解压缩时不要覆盖原有的文件 -o:不必先询问用户,unzip执行后覆盖原有文件 -P:使用zip的密码选项 -q:执行时不显示任何信息 -s:将文件名中的空白字符转换为底线字符 -V:保留VMS的文件版本信息 -X:解压缩时同时回存文件原来的UID/GID
案例使用:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 unzip test.zip unzip PentextBox.zip -d /tmp/ unzip abc\*.zip unzip -v wwwroot.zip unzip -t wwwroot.zip unzip -j wwwroot.zip unzip -q -d 201906 download_201906.zip
rar 命令 根据习惯我们一般会试探看看当前环境中是否已经有rar、unrar的源包,如果有的话可以直接安装。不过一般是没有的,所以我们就用下面的编译方法. 安装rar压缩和解压环境:
环境安装:
方式1.然后通过wget下载到当前机器中进行下面的编译:1 2 3 wget https://soft.itbulu.com/php/rarlinux-x64-5.4.b2.tar.gz tar -zxvf rarlinux-x64-5.4.b2.tar.gz cd rar && make
weiyigeek.top-下载安装
方式2.1 2 3 4 5 wget https://www.rarlab.com/rar/rarlinux-x64-6.0.0.tar.gz tar -zxvf rarlinux-x64-6.0.0.tar.gz cp -a ./rar/rar ./rar/unrar /usr/local /bin/ ls /usr/local /bin/ rar unrar
unrar 命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 用法: unrar <命令> -<开关 1> -<开关 N> <压缩文件> <文件...> <@列表文件...> <解压路径\> <注释> e 解压压缩文件到当前目录 l[t,b] 列出压缩文件[技术信息,简洁] p 打印文件到标准输出设备 t 测试压缩文件 v[t,b] 详细列出压缩文件[技术信息,简洁] x 用绝对路径解压文件 <开关> - 停止扫描 ac 压缩或解压后清除存档属性 ad 添加压缩文件名到目标路径 ap<路径> 添加路径到压缩文件中 av- 禁用用户身份校验 c- 禁用注释显示 cfg- 禁用读取配置 cl 名称转换为小写 cu 名称转换为大写 dh 打开共享文件 ep 从名称中排除路径 ep3 扩展路径为包含盘符的完全路径 f 刷新文件 id[c,d,p,q] 禁止信息显示 ierr 发送所有消息到标准错误设备 inul 禁用所有消息 ioff 完成一个操作后关闭 PC 电源 kb 保留损坏的已解压文件 n<文件> 仅包括指定文件 n@ 从标准输入设备读取要包括的文件名称 n@<列表> 在指定列表文件包括文件 o+ 覆盖已存在文件 o- 不覆盖已存在文件 oc 设置 NTFS 压缩属性 or 自动重命名文件 ow 保存或恢复文件所有权和组 [密码] 设置密码 p- 不询问密码 r 包含子目录 ri<P>[:<S>] 设置优先级 (0-默认,1-最小..15-最大) 和休眠时间(毫秒) sl<大小> 处理小于指定大小的文件 sm<大小> 处理大于指定大小的文件 ta<日期> 添加日期 <日期> 后修改的文件,日期格式 YYYYMMDDHHMMSS tb<日期> 添加日期 <日期> 前修改的文件,日期格式 YYYYMMDDHHMMSS tn<时间> 添加 <时间> 以后的文件 to<时间> 添加 <时间> 以前的文件 ts<m,c,a>[N] 保存或恢复文件时间(修改,创建,访问) u 更新文件 v 列出所有卷 ver[n] 文件版本控制 vp 每卷之前暂停 x<文件> 排除指定的文件 x@ 从标准输入设备读取要排除的文件名 x@<列表> 排除指定列表文件中的文件 y 假设对全部询问都回答是
案例演示:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 rar a itbulu.com.rar file rar x itbulu.com.rar unrar v test.rar unrar x test.rar /tmp unrar e test.rar unrar x -o- -y weiygeek.rar /home/weiygeek/
weiyigeek.top-解压与压缩
xz 命令 简介:xz是绝大数linux默认就带的一个压缩工具,在下载phpmyadmin的时候看到这种压缩格式的,phpmyadmin压缩包xz格式的居然比7z还要小。 是最新的archlinux某些东西就使用xz压缩,不过xz也有一个坏处就是压缩时间比较长,比7z压缩时间还长一些,不过压缩是一次性的,所以可以忽略。
案例示例:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 xz -z 要压缩的文件 xz -z -k -1 text.bat xz -d 要解压的文件 xz -d -k text.xz tar cvf text.tar text/ xz -z -k text.tar xd -k -d text.tar.xz tar xvf text.tar
zcat -压缩或扩展文件 描述: zcat与gunzip-c完全相同,注意 gzip、gunzip、zcat 都是压缩或扩展文件的相关命令。
zcat 解压缩命令行或其标准输入上的文件列表,并将未压缩的数据写入标准输出, zcat将解压具有正确压缩格式的文件,无论它们是否具有.gz后缀。
Tips: 在某些系统上,zcat可能作为gzcat安装,以保留要压缩的原始链接。
实例演示: 1 2 3 4 5 zcat server.log.2017-02-07.tar.gz zcat server.log.2017-02-07.tar.gz | grep -a -C30 7494560570