Linux 压缩解压命令汇总
确定文件类型
下面列出了几种常见的压缩文件的扩展名:
1 | |
然而文件扩展名与文件类型并无直接关系,可以使用file命令查看文件类型:
1 | |
Linux下也可以很方便地查看文件头,来判断文件类型
zip
zip是一种经典的压缩方式,文件头是504B0304,504B的ASCII对应为PK
1 | |
-
zip [选项] 输出文件 输入文件
-r :递归压缩目录
yum -y install unzip
-
unzip [选项] zip_file
-d dir : 解压到指定目录
-l :查看文件中的内容而不解压文件
gzip
gz是由GNU计划所开发出来的压缩命令,应用十分广泛。许多网页就使用了gz压缩。
文件头共10字节,包含幻数、版本号、时间戳。其中ID1、ID2是固定的,CM压缩算法目前仅一种
故gz文件总以1F8B08开始
1 | |
-
gzip [选项] file
-v 显示压缩比等信息
-r 分别压缩目录中的每个文件
-d 解压gz文件
-c --stdout,输出到屏幕,可以重定向
-l 列出信息
gzip压缩或解压会替换掉原文件,而使用stdout则不会替换
如果不想删除原文件,可以:
1 | |
还可以指保存的路径
1 | |
bzip2
bzip2提供了更好的压缩比,用法与gzip基本相同
yum -y install bzip2
-
bzip2 [选项] file
-k 保留原文件
xz
xz的压缩比更高,但是压缩也更慢,用法与gzip和bzip2几乎相同
cat/more/less/grep
如果gzip, bzip2, xz压缩的是文本文件,那么可以直接通过对应的命令读取文件的内容
例如:
1 | |
tar
gzip, bzip2, xz 这些命令压缩的对象都是文件,如果要将整个目录压缩,就要配合tar生成打包文件(tarfile)再生成压缩文件(tarball)
举例:
压缩:tar -cJvf file1.tar.xz 原文件
查询:tar -tjvf file2.tar.bz2
解压:tar -xzvf file3.tar.gz -C 解压目录
互斥项:
-
操作:
1
2
3-c 创建打包文件
-x 解包
-t 查看打包文件的内容 -
压缩方式:
1
2
3-z gzip
-j bzip2
-J xz -
解压目录:
1
2-C dir 用于解压缩,指定解压目录
-P 压缩或解压时不去除路径开头的/,即使用绝对路径
其他常用选项:
1 | |
实例:
-
如何使用绝对路径打包和解压?
压缩时原文件用绝对路径表示,压缩、解压都带-P选项
压缩:
tar -cPzvf test1.tar.gz /root/test解压:
tar -xPzvf test1.tar.gz否则会解压到当前路径
-
排除指定目录/文件:
tar --exclude=[目录名/*|文件名] -czvf filename.tar.gz 目录名
-f 选项要紧跟文件名,exclude可以放于前面
- 仅解压指定文件
1 | |
-
备份指定日期之后的文件
tar cjvf /root/etc.tar.bz2 --newer-mtime="2020/02/02" /etc/*
打包到特殊位置:
-
磁带(
/dev/st0)tar -cvf /dev/st0 /root /home /etc -
管道
1
2cd /tmp
tar -cvf - /etc | tar -xvf -两个
-分别代表stdout, stdin
dd
dd if="input" of="output" bs="block_size" count="n"
举例:
-
备份一个文件,bs默认512Bytes
dd if=/etc/passwd of=/tmp/passwd.bak -
从光盘上备份出iso镜像
dd if=/dev/sr0 of=/tmp/system.iso -
iso镜像刻录到U盘
dd if=/tmp/system.iso of=/dev/sda -
备份boot分区
dd if=/dev/vda2 of=/tmp/boot.img








