打包/压缩/查看/解包/解压
(1)tar
注:根据https://www.cnblogs.com/yhongji/p/9348487.html整理。
功能:
1)将多个文件打包为一个文件 -cvf;
2)将文件打包并压缩 -zcvf;
3)将打包的文件解包 -xvf;
4)将打包压缩的文件解压 -zxvf;
A. 用法
tar [选项] [文件…]
B. 命令选项
-A, --catenate 追加 tar 文件至归档
-c, --create 创建一个新归档
-r, --append 追加文件至归档结尾
-u, --update 仅追加比归档中副本更新的文件
-x, --extract, --get 从归档中解出文件
-t, --list 列出归档内容
-z, --gzip, --gunzip, --ungzip 通过 gzip 压缩归档
-j, --bzip2 通过 bzip2 压缩归档
-J, --xz 通过 xz 过滤归档
–lzip 通过 lzip 过滤归档
–lzma 通过 lzma 过滤归档
-Z, --compress, --uncompress 通过 compress 压缩归档
-v, --verbose 详细地列出处理的文件过程
-k, --keep-old-files 保留源文件不覆盖
-m, --touch 不要解压文件的修改时间
-W, --verify 在写入以后尝试校验归档
f, --file=ARCHIVE 使用归档文件或 ARCHIVE 设备,这个参数是最后一个,后面只接文件名
-b, --blocking-factor=BLOCKS 设置每个记录 BLOCKS x 512 字节
-C, --directory=DIR 改变至目录 DIR
–help 显示帮助信息
–version 显示版本信息
C. 实例
① 打包:将 1.txt 2.txt 3.txt 4.txt 文件打包为 test.tar
[root@mini ~]# ls
1.txt 2.txt 3.txt 4.txt anaconda-ks.cfg
[root@mini ~]# tar -cvf test.tar *.txt
1.txt
2.txt
3.txt
4.txt
[root@mini ~]# ls
1.txt 2.txt 3.txt 4.txt anaconda-ks.cfg test.tar
② 打包+压缩:将 1.txt 2.txt 3.txt 4.txt 文件打包并压缩为 test.tar.gz
[root@mini ~]# ls
1.txt 2.txt 3.txt 4.txt anaconda-ks.cfg test.tar
[root@mini ~]# tar -zcvf test.tar.gz *.txt
1.txt
2.txt
3.txt
4.txt
[root@mini ~]# ls
1.txt 2.txt 3.txt 4.txt anaconda-ks.cfg test.tar test.tar.gz
③ 打包+压缩:将 1.txt 2.txt 3.txt 4.txt 文件打包并压缩为 test.tar.bz2
[root@mini ~]# ls
1.txt 2.txt 3.txt 4.txt anaconda-ks.cfg test.tar test.tar.gz
[root@mini ~]# tar -jcvf test.tar.bz2 *.txt
1.txt
2.txt
3.txt
4.txt
[root@mini ~]# ls
1.txt 2.txt 3.txt 4.txt anaconda-ks.cfg test.tar test.tar.bz2 test.tar.gz
④ 列出:列出 test.tar 里的文件
[root@mini ~]# tar -tf test.tar
1.txt
2.txt
3.txt
4.txt
⑤ 解包:将 test.tar 解包
[root@mini ~]# ls
anaconda-ks.cfg test.tar test.tar.bz2 test.tar.gz
[root@mini ~]# tar -xvf test.tar
1.txt
2.txt
3.txt
4.txt
[root@mini ~]# ls
1.txt 2.txt 3.txt 4.txt anaconda-ks.cfg test.tar test.tar.bz2 test.tar.gz
⑥ 解压:将 test.tar.gz 解压
[root@mini ~]# ls
anaconda-ks.cfg test.tar test.tar.bz2 test.tar.gz
[root@mini ~]# tar -zxvf test.tar.gz
1.txt
2.txt
3.txt
4.txt
[root@mini ~]# ls
1.txt 2.txt 3.txt 4.txt anaconda-ks.cfg test.tar test.tar.bz2 test.tar.gz
⑦ 解压:将 test.tar.bz2 解压
[root@mini ~]# ls
anaconda-ks.cfg test.tar test.tar.bz2 test.tar.gz
[root@mini ~]# tar -jxvf test.tar.bz2
1.txt
2.txt
3.txt
4.txt
[root@mini ~]# ls
1.txt 2.txt 3.txt 4.txt anaconda-ks.cfg test.tar test.tar.bz2 test.tar.gz
(2)zip与unzip
注:根据https://www.runoob.com/linux/linux-comm-zip.html及https://blog.csdn.net/qq_27870421/article/details/92623897整理。
zip 是个使用广泛的压缩程序,压缩后的文件后缀名为 .zip。
unzip为.zip压缩文件的解压缩程序。
A. 命令选项
About zip:
-A 调整可执行的自动解压缩文件。
-b<工作目录> 指定暂时存放文件的目录。
-c 替每个被压缩的文件加上注释。
-d 从压缩文件内删除指定的文件。
-D 压缩文件内不建立目录名称。
-f 更新现有的文件。
-F 尝试修复已损坏的压缩文件。
-g 将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。
-h 在线帮助。
-i<范本样式> 只压缩符合条件的文件。
-j 只保存文件名称及其内容,而不存放任何目录名称。
-J 删除压缩文件前面不必要的数据。
-k 使用MS-DOS兼容格式的文件名称。
-l 压缩文件时,把LF字符置换成LF+CR字符。
-ll 压缩文件时,把LF+CR字符置换成LF字符。
-L 显示版权信息。
-m 将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。
-n<字尾字符串> 不压缩具有特定字尾字符串的文件。
-o 以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。
-q 不显示指令执行过程。
-r 递归处理,将指定目录下的所有文件和子目录一并处理。
-S 包含系统和隐藏文件。
-t<日期时间> 把压缩文件的日期设成指定的日期。
-T 检查备份文件内的每个文件是否正确无误。
-u 与 -f 参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。
-v 显示指令执行过程或显示版本信息。
-V 保存VMS操作系统的文件属性。
-w 在文件名称里假如版本编号,本参数仅在VMS操作系统下有效。
-x<范本样式> 压缩时排除符合条件的文件。
-X 不保存额外的文件属性。
-y 直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。
-z 替压缩文件加上注释。
-$ 保存第一个被压缩文件所在磁盘的卷册名称。
-<压缩效率> 压缩效率是一个介于1-9的数值。
About unzip:
-c 将解压缩的结果显示到屏幕上,并对字符做适当的转换。
-f 更新现有的文件。
-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。
[.zip文件] 指定.zip压缩文件。
[文件] 指定要处理.zip压缩文件中的哪些文件。
-d<目录> 指定文件解压缩后所要存储的目录。
-x<文件> 指定不要处理.zip压缩文件中的哪些文件。
-Z unzip -Z等于执行zipinfo指令。
B. 实例
① 打包压缩:将 /home/html/ 这个目录下所有文件和文件夹打包为当前目录下的 html.zip:
zip -q -r html.zip /home/html
如果在我们在 /home/html 目录下,可以执行以下命令:
zip -q -r html.zip *
② 删除文件:从压缩文件 cp.zip 中删除文件 a.c
zip -dv cp.zip a.c
③ 查看压缩文件中包含的文件:
# unzip -l abc.zip
Archive: abc.zip
Length Date Time Name
-------- ---- ---- ----
94618 05-21-10 20:44 a11.jpg
202001 05-21-10 20:44 a22.jpg
16 05-22-10 15:01 11.txt
46468 05-23-10 10:30 w456.JPG
140085 03-14-10 21:49 my.asp
-------- -------
483188 5 files
④ -v 参数用于查看压缩文件目录信息,但是不解压该文件。
# unzip -v abc.zip
Archive: abc.zip
Length Method Size Ratio Date Time CRC-32 Name
-------- ------ ------- ----- ---- ---- ------ ----
94618 Defl:N 93353 1% 05-21-10 20:44 9e661437 a11.jpg
202001 Defl:N 201833 0% 05-21-10 20:44 1da462eb a22.jpg
16 Stored 16 0% 05-22-10 15:01 ae8a9910 ? +-|¥+-? (11).txt
46468 Defl:N 39997 14% 05-23-10 10:30 962861f2 w456.JPG
140085 Defl:N 36765 74% 03-14-10 21:49 836fcc3f my.asp
-------- ------- --- -------
483188 371964 23% 5 files
⑤ 解压
unzip test.zip ->将test.zip解压到当前文件下
unzip -n test.zip -d tmp/ ->将test.zip解压到/tmp目录下,并且不要覆盖已有文件
unzip -o test.zip -d tmp/ ->将test.zip解压到/tmp目录下,并且覆盖已有文件
(3)rar
正常rar是windows下的压缩文件,linux是不支持的。但是可以通过安装rarlinux来使用rar命令解压rar文件。
将/etc 目录压缩为etc.rar 命令为:
rar a etc.rar /etc
将etc.rar 解压 命令为:
rar x etc.rar
或
unrar -e etc.tar