基础知识
1.什么是归档
实际上就是将一堆文件或者目录合并为一个特殊的文件
归档和压缩是由实质上的区别的
归档后的文件会越来越大
压缩
压缩文件或者目录的空间大小
2.为什么要压缩
当我们在传递文件或者目录的时候都会选择将其进行压缩然后在进行传递
首先:压缩之后的文件通常要比压缩之前的小,26G的文件可以压缩至6G
其次:多个文件的传输非常慢,单个文件的传输非常快,并且也极大去节约网络的消耗
3.window和linux压缩包能否互通
问题: linux和windows的压缩包可以互通吗?
可以
在windows系统下,通常rar、zip,linux系统下用的最多的就是tar.gz和zip
相互之间可以通过zip包进行软件包之间的互通
rar包在linux中是不识别
windows可以识别tar.gz压缩包类型
window ->linux 选择使用zip包
linux -> window zip tar.gz
压缩工具
zip压缩工具
压缩
zip [压缩包名称] [压缩的文件]
选项:
-r #压缩目录
压缩100M_1-3
# zip 100M.zip 100M_*
压缩100M目录
# mkdir 100M
# mv 100M_* 100M
# zip 100M2.zip -r 100M
查看压缩包中的文件
# zipinfo
# zipinfo 100M.zip
解压缩
unzip -d [解压的目录] [压缩包]
将100M.zip中的文件解压至/tmp目录下
# unzip -d /tmp/ 100M.zip
gz 压缩工具
压缩
# gzip 100M_1
解压缩
# gzip -d 100M_1.gz
xz 压缩工具
压缩
# xz 100M_3
解压缩
# xz -d 100M_3.xz
bz2 压缩工具
压缩
# bzip2 100M_2
解压缩
# bzip2 -d 100M.bz2
总结:gzip bzip2 xz 的缺陷,只能用于文件压缩 在于压缩的时候源文件会消失,解压缩的时候压缩文件会消失
归档工具
tar
选项:
c 创建归档
f 指定压缩包名称
z 与gzip压缩工具结合
j bzip2压缩工具相结合
J xz压缩工具结合
t 查看压缩包
v 详细信息
x 解压
-C 指定解压路径
排除文件(压缩中)
--exclude 排除文件
--exclude-from 排除文件(指定文件列表)
.tar.gz(推荐) .tar.bz2 .tar.xz
压缩 czf cjf cJf
查看 tf
解压缩 xf
例1:将100M_*开头的文件全部进行压缩
.tar.gz
# tar czf 100M.tar.gz 100M_*
.tar.bz2
# tar cjf 100M.tar.bz2 100M_*
.tar.xz
# tar cJf 100M.tar.xz 100M_*
例2:将100M_*开头的文件全部压缩到/tmp/100M.tar.(gz|bz2|xz)目录下
.tar.gz
# tar czf /tmp/100M.tar.gz 100M_*
例3:将/etc/目录压缩到/tmp目录下名为etc.tar.gz,并且查看其详细的压缩过程
# tar czvf /tmp/etc.tar.gz /etc
查看压缩包的内容
例4:查看/tmp/etc.tar.gz的文件内容
# tar tf /tmp/etc.tar.gz
例5:查看/tmp/etc.tar.gz压缩包内的文件参数
# tar tvf /tmp/etc.tar.gz
例6:将/etc/下的文件内容进行压缩,无需etc目录?
# cd /etc
# tar czf /opt/etc.tar.gz *
警告信息:
tar: Removing leading `/' from member names
当前未在根目录下开始压缩
解决方法:
# cd /
# tar czf etc.tar.gz etc/
# tar czf tmp.tar.gz /tmp 2>/dev/null
解压缩
例7:将100M.tar.gz进行解压至/tmp目录中
# tar xf 100M.tar.gz -C /tmp
例8:将100M.tar.gz解压至/opt目录下,并且查看详细的过程
# tar xvf 100M.tar.gz -C /opt
准备基础环境
# mkdir test
# touch test/{1..10}.txt
例9:将test目录进行压缩,压缩到/tmp目录下排除文件1.txt 2.txt
# tar czf /tmp/test.tar.gz test --exclude 1.txt --exclude 2.txt
例10:将test目录进行压缩,压缩到/tmp/test2.tar.gz,排除文件1-5.txt
# cat > file.list <<EOF
# 1.txt
# 2.txt
# 3.txt
# 4.txt
# 5.txt
# EOF
# tar czvf /tmp/test2.tar.gz test --exclude-from file.list
扩展
如何查看目录的大小
# du -sh 目录名
生成三个100M的文件
# dd if=/dev/zero of=文件的名称 bs=文件的大小 count=执行的次数