目录
文件压缩
为什么使用压缩
文件或目录太大,需要压缩传输
以后学的服务安装包都需要解压
压缩格式及命令
格式 | Linux命令 |
---|---|
.zip | zip |
.gz | gzip |
.tar | tar |
.tar.gz | tar.gz |
压缩命令-gzip
# 安装gzip命令
[root@localhost ~]# yum install -y gzip
# gzip命令使用
gzip 普通文件名
-r:递归压缩目录下的所有文件,每个文件会被压缩成单独一个包
# 特性
1.压缩文件后,源文件不存在
2.只能压缩文件,不能压缩目录
3.压缩后,压缩包的位置在源文件的目录下
4.压缩包可以直接查看文件内容 zcat
5.一个压缩包中,只会有一个文件
6.解压后,压缩包没了,只剩源文件
# 例:
[root@localhost ~]# gzip lza.txt
[root@localhost ~]# ll
total 4
-rw-r--r--. 1 root root 24 Apr 18 15:58 lza.txt.gz
[root@localhost ~]# zcat lza.txt.gz
111
222
333
# -r:
[root@localhost ~]# gzip -r .
[root@localhost ~]# ll
total 8
-rw-r--r--. 1 root root 36 Apr 18 16:04 lza1.txt.gz
-rw-r--r--. 1 root root 40 Apr 18 16:01 lza.txt.gz
# 查看压缩包内容
zcat 压缩包名
# 解压命令
gzip -d 压缩包名
[root@localhost ~]# gzip -d lza.txt.gz
[root@localhost ~]# ll
total 4
-rw-r--r--. 1 root root 12 Apr 18 16:01 lza.txt
压缩命令-zip
# 安装zip和unzip命令
[root@localhost ~]# yum install -y zip
[root@localhost ~]# yum install -y unzip
# zip命令
[root@localhost ~]# zip txt.zip 1.txt 2.txt 3.txt
zip 压缩包名 需要放入压缩包的文件
# 压缩并指定位置
[root@localhost ~]# zip /opt/lza.zip 1.txt 2.txt 3.txt
# 特性
1.压缩文件后,源文件存在
2.可以指定压缩包后保存的路径
3.可以压缩目录,也可以压缩文件,也可以指定多个文件一起压缩
4.压缩目录需要加选项,如果不加,压缩后,只有一个空目录,没有里面的文件
5.解压后,压缩包不会消失,如果同一目录下出现同名文件则询问是否要覆盖
# 选项
-r:递归压缩,包括目录下的所有文件
[root@localhost ~]# zip -r lza.zip lza/
-q:quiet静默输出,不输出压缩的过程
# 解压命令
unzip 压缩包名
[root@localhost ~]# unzip lza.zip
-l:查看压缩包里面都有那些文件
[root@localhost ~]# unzip -l lza.zip
-d:指定解压路径
[root@localhost ~]# unzip zls.zip -d /tmp
压缩命令-tar
tar命令本身是归档
# 选项
c:归档
f:指定压缩包名
z:使用gzip把归档文件压缩
v:显示压缩/解压的过程
x:解压归档文件
C:指定解压的位置
t:查看压缩包里的文件都有哪些
j:使用bzip2压缩文件
J:压缩成.xz包
h:打包软链接(如果软链接文件是绝对路径,那么不加h打包出来的文件会失效)
P:压缩时带绝对路径,解压时按绝对路径解压
X:排除指定的文件
--exclude:排除指定文件
--hard-dereference:打包硬链接文件
# 例:
# 压缩文件,指定压缩包路径,源文件还在
[root@localhost ~]# tar zcvf /tmp/lza.tar.gz .
./
./.bash_logout.gz
./.bash_profile.gz
./.cshrc.gz
./.tcshrc.gz
./.bash_history.gz
./.bashrc.gz
./.zls.gz
./.viminfo.gz
./lza.txt
./lza1.txt
[root@localhost ~]# ll /tmp/
total 4
-rw-r--r--. 1 root root 2045 Apr 18 16:13 lza.tar.gz
[root@localhost ~]# tar tf /tmp/lza.tar.gz
# 解压,指定路径,且压缩包还在
[root@localhost ~]# tar xf /tmp/lza.tar.gz -C /tmp/
[root@localhost ~]# ll /tmp/
total 12
-rw-r--r--. 1 root root 7 Apr 18 16:04 lza1.txt
-rw-r--r--. 1 root root 2045 Apr 18 16:13 lza.tar.gz
-rw-r--r--. 1 root root 12 Apr 18 16:01 lza.txt
# 特性
1.压缩文件后,源文件存在
2.目录和文件都可以压缩
3。压缩后,压缩包的位置可以指定任意目录
[root@localhost ~]# tar zcf /tmp/lza.tar.gz /opt /tmp
4.可以查看压缩包里有那些文件,但是看不了文件内容
[root@localhost ~]# tar tf /tmp/lza.tar.gz
5.一个压缩包中,可以有多个文件或目录
6.解压后,压缩包还在,源文件也可以随意指定路径 -C
7.使用zcf压缩,zxf解压
使用jcf压缩,jxf解压
使用Jcf压缩,Jxf解压
# 8.万能解压:xf
# 注意
1.tar命令在解压开文件时,如果有文件名冲突,则不会询问,直接覆盖
2.tar命令,在打包时,会自动删除绝对路径的 /
3.以后打包,尽量使用相对路径,cd到需要打包命令或文件的上级目录
[root@localhost ~]# cd /
[root@localhost /]# tar zcf /tmp/opt.tgz opt/
思维导图
![](C:\Users\DELL\Downloads\文件压缩 (1).png)
tar企业案例
1.数据库物理备份
# 基础环境准备
[root@localhost ~]# yum install mariadb-server
[root@localhost ~]# systemctl start mariadb
[root@localhost ~]# mkdir /backup
# 案例1 mysql物理备份及恢复
[root@localhost ~]# tar cJf /backup/mysql.tar.xz /var/lib/mysql
[root@localhost ~]# tar xf /backup/mysql.tar.xz -C /
# 案例2 mysql物理备份及恢复
[root@localhost ~]# cd /var/lib/mysql
[root@localhost mysql]# tar cJf /backup/mysql.tar.xz *
[root@localhost mysql]# tar tf /backup/mysql.tar.xz
[root@localhost mysql]# tar xf /backup/mysql.tar.xz -C /var/lib
2.传输海量小文件
# 文件传输(如果etc下小文件特别多,很占用磁盘IO)
[root@localhost lib]# cp -a /etc /tmp
# 以下方式减少小文件的传输
[root@localhost lib]# tar czf - /etc | tar xzf - -
3.网络传输海量小文件
# 常规方法
[root@localhost ~]# scp -r /etc [email protected]:/tmp
#建议方法:
#接收B主机, 需要监听端口
[root@hostB ~]# systemctl stop firewalld.service
[root@hostB ~]# nc -l 8888 |tar xzf - -C /tmp
#发送方A主机
[root@hostA ~]# tar -czf - /etc | nc 10.0.0.200 8888
tar: Removing leading `/' from member na
练习题
1.如何使用gzip命令对文件进行压缩、解压
[root@localhost ~]# gzip lza.txt
[root@localhost ~]# gzip -d lza.txt.gz
2.如何用zip命令对文件以及目录进行压缩、解压
zip 压缩包名 文件
zip -r 压缩包名 目录名
unzip 压缩包名
3.创建一个自己名字的文件至/opt目录
[root@localhost ~]# touch /opt/lza
4.打包opt整个目录,并命名test_opt.tar.gz
[root@localhost ~]# tar zcPf test_opt.tar.gz /opt
5.查看打包好的test_opt.tar.gz里的文件
[root@localhost ~]# tar tf test_opt.tar.gz
opt/
opt/lza
6.将打包好的test_opt.tar.gz内容指定解压至/tmp目录
[root@localhost ~]# tar xf test_opt.tar.gz -C /tmp/
7.打包etc目录下的所有文件,不要目录只要文件
[root@localhost ~]# gzip -r /etc
8.打包etc目录下的所有文件,排除passwd,shadow
[root@localhost ~]# cd / && tar zcf etc1.tgz --exclude=passwd --exclude=shadow `find /etc -type f`
9.打包etc目录下的所有以p开头的文件
[root@localhost ~]# tar zcf etc2.tgz `find /etc -type f -name "p*"`
10.打包etc目录下所有大于1M的文件
[root@localhost ~]# tar zcf etc3.tgz `find /etc -type f -size +1M`
[root@localhost ~]# tar tf etc3.tgz
etc/udev/hwdb.bin
etc/selinux/targeted/active/policy.kern
etc/selinux/targeted/contexts/files/file_contexts.bin
etc/selinux/targeted/policy/policy.31
11.新建文件 1.txt 2.txt 3.txt
,将三个文件打包成一个123.tar的包
[root@localhost ~]# tar zcf 123.tar 1.txt 2.txt 3.txt
12.新建tar目录,并且将123.tar移动到tar目录下
[root@localhost ~]# mkdir tar
[root@localhost ~]# mv 123.tar tar/
13.tar目录下解包123.tar
[root@localhost ~/tar]# tar xf tar/123.tar
14压缩系统的/home目录,使用zip格式压缩,并且命名为student.tar.gz, 此文件要放在 /tmp/rhel7 目录下
[root@localhost ~/tar]# zip -r /tmp/rhel7/student.tar.gz /home
15.使用tar命令打包/etc/时,会出现一个删根的操作,怎样打包不会进行删根的操作
切换到etc目录下
16.打包/etc/目录,要求不打包/etc/hosts这个文件
[root@localhost ~]# tar zcf etc.tgz --exclude /etc/hosts /etc/
17.打包/etc/目录,要求不打包/etc/hosts和/etc/hostname这两个文件
[root@localhost ~]# tar zcf etc.tgz --exclude /etc/hosts --exclude /etc/hostname /etc/
18.把/var/log/目录中所有.log的文件进行打包成一个压缩包,名称定义为log.tar.gz的压缩包
[root@localhost ~]# tar zcf log.tar.gz `find /var/log -type f -name '*.log'`
19.已知文件oldboy.zip,请问在不解压的情况下,怎样查看该文件的内容
[root@localhost ~]# unzip -l oldboy.zip
20.用zip打包/opt目录,要求不显示打包过程
[root@localhost ~]# zip -r opt.zip /opt/
标签:文件,zip,tar,压缩,gz,etc,root,localhost
From: https://www.cnblogs.com/LZA1218/p/16769918.html