首页 > 其他分享 >文件压缩

文件压缩

时间:2022-10-08 19:13:44浏览次数:49  
标签:文件 zip tar 压缩 gz etc root localhost

目录

文件压缩

为什么使用压缩

文件或目录太大,需要压缩传输
以后学的服务安装包都需要解压

压缩格式及命令

格式 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

相关文章

  • 文件管理
    目录文件管理/目录下的文件/etc目录/var存放系统日志文件目录/dev系统设备文件目录路径的定位特殊目录文件管理重点:在linux中,一切皆文件。没有后缀区分。/目录下的文件......
  • 转载:Altium Designer输出Gerber文件步骤
    转自嘉立创论坛,原帖地址:https://www.jlc.com/portal/q6i10171.html正文输出Gerber文件四步骤..输出文件之前请新建一个文件夹,把需要输出的PCB文件放进去。再次强调:对......
  • C# 最基础知识介绍(六)——接口、命名空间、预处理指令、正则表达式、异常处理、文件
    接口、命名空间、预处理指令、正则表达式、异常处理、文件的输入与输出接口(interface)......
  • win10:你需要来自XXXX的权限才能对此文件夹进行更改
    转载请注明来源:https://www.cnblogs.com/Sherlock-L/p/16769720.html起因软件运行失败,看报错信息是删除某个文件夹失败了,行吧,我自己来删。找到目标文件夹后,发现管理员的......
  • axios流上传文件
    //音频文件上传exportconstuploadAudio=(params,callback)=>{constformData=newFormData();//用formData转换formData.append('file',params.file)......
  • Cadence怎么对比文件差异?
    Cadence作为一流的电子设计自动化(EDA)的软件公司,其EDA工具绝对是大部分公司的首选。我们常用的两个组件为Orcad和Allegro,一个是原理图设计,一个是PCB设计。在我们日常使用时,经......
  • net中c#教程 file文件的常用操作
    net中C#的File文件类操作,涉及的功能点其实不多,就是读取和写入文件,而且一般是txt文本文件居多。如果想对其他文件操作,就要用到第三方类库,微软原生的类效果都不好,这个放到后......
  • spring boot整合maybatis plus 的 文件生成代码
    /***代码生成*/publicclassAutoGenerator_{publicstaticvoidmain(String[]args){AutoGeneratorgenerator=newAutoGenerator();//数据......
  • 【bug】不在 sudoers 文件中。此事将被报告
    问题描述操作系统:centos7.3场景说明:采用userdel-r用户名,删除一个用户后,又重新新建一个用户。使用sudops时,出现警告“不在sudoers文件中。此事将被报告”,被要求......
  • 新手到站长的必经之路(三)—— 服务器上的文件结构
    前言从无序到有序,从无规律到有规律,我们一直在学习如何总结规律、加强认知,然后简化操作、提升效率。作为一个服务器上的服务,为了能达到最后的可以一键部署的效果,我们也需要......