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