>[success] # 压缩和解压
~~~
1.最早的linux 备份介质是磁带,使用的命令是tar
2.一般需要先打包后的磁带文件进行压缩储存,压缩名利是gzip 和 bzip2,当然也可以直接使用tar
3.常用的扩展名是'.tar.gz','tar.baz2' ,'.tgz'
~~~
>[danger] ##### 知道压缩之前要了解的
~~~
1.压缩指令有 'tar' ,'gzip','zip',其中'zip' 需要自己安装,这三种压缩的各自特点
1.1.'zip' 可以压缩文件或者文件目录,本质是压缩文件或目录,是一种压缩格式
1.2.'gzip' 压缩比'zip'的高,采用 LZ77 无损压缩算法,压缩后的文件一般使用 .gz 后缀。gzip 不
仅可以用来压缩大的、较少使用的文件以节省磁盘空间,减少文件大小有两个明显的好处,
一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。'问题是',gzip命令
不支持目录压缩
1.3.'tar',打包命令,只打包并不压缩,举个例子tar 可以把一个文件夹打包成一个文件,没有压缩
的功能 之前大小为100 打包后大于等于100,这样就可以和gzip 配置,gzip 只能打包文件就可以
先tar 在gzip,'tar -czf /tmp/etc-backup.tar.gz /etc' 压缩成'gz'的格式,加后缀方便使用的人知道
格式
~~~
[参考链接](https://cloud.tencent.com/developer/article/1584446?from=article.detail.1376090)
>[info] ## tar
~~~
使用: '语法tar(选项)(参数)'
1.A或-- catenate:新增文件到以存在的备份文件;
2.B:设置区块大小;
3.c或-- create:建立新的备份文件;
4.C<目录>:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。
5.d:记录文件的差别;
6.x或- extract或--get:从备份文件中还原文件
7.t或--list:列出备份文件的内容
8.z或-gzip或- unzip:通过gzip指令处理备份文件
9.Z或- compress!或- un compress:通过 compress指令处理备份文件
10.f<备份文件>或--file=<备份文件>:指定备份文件
11.v或-- verbose:显示指令执行过程;
12.r添加文件到已经压缩的文件u:添加改变了和现有的文件到已经存在的压缩文件;支持bzip2解压文件;
13u:添加改变了和现有的文件到已经存在的压缩文件
14.j:支持bzip2解压文件;
15.l:文件系统边界设置
16.k:保留原有文件不覆盖;
17.m:保留文件不被覆盖;
18.w:确认压缩文件的正确性p或--same- permIssIons:用原来的文件权限还原文件
19.P或-- absolute- names:文件名使用绝对名称,不移除文件名称前的“/〃号;不建议使用
20.N<日期格式>或-- newer三<日期时间>:只将较指定日期更新的文件保存到备份文件里;
exclude<范本样式>:排除符合范本样式的文件。
21.h,-- dereference跟踪符号链接;将它们所指向的文件归档并输出
~~~
>[danger] ##### 打包 -cvf
1. 打包理解成将衣服放到袋子里
2. 一般使用tar 打包后的文件我们最好以 **.tar** 结尾 注意后缀在linux 是无意义的并且也只是一个文件类型
3. 打包命令格式
| 命令 | 英文 |含义|
| --- | --- |--- |
| c | create | 生成档案文件, 创建打包文件|
| v | verbosely | 报告进度|
| f | file | 指定档案的文件名称, f后面一定是 .tar 文件, 所以必须放到最后 |
~~~
# 将 一系列文件 打包成 一个大文件
tar -cvf 打包名.tar 被打包的目录
tar -cvf 打包名.tar 被打包的文件1 被打包的文件2 被打包的文件3
~~~
4. 案例
~~~
'tar -cvf all.tar ./' -- 将当前目录文件打包到 all.tar
~~~
>[danger] ##### 解包-- xvf
1. 衣服从袋子里取出来过程理解成解包
2. 解包命令格式
|命令| 英文 |含义|
| --- | --- |--- |
|x |extract (提取) |解包|
|C (大写C)|directory (目 录)|默认保存到当前目录, 通过 -C 更改解压目录, 注意: 解压目录必须存在|
~~~
# 将一个打包后的 分解成 一系列小文件, 分解位置为 当前目录
tar -xvf 打包名.tar
# 将一个打包后的 分解成 一系列小文件, 分解位置为 指定目录
tar -xvf 打包名.tar -C 解包路径位置
~~~
3. 案例
~~~
1.例子'tar -xf /tmp/etc-backup.tar -C /root' 将'tmp 下的打包文件,解包到 /root'下,记得解包到哪里用-C,
2.'tar -xf /tmp/etc-backup.tar' 表示将解包的内容放到当前目录下
~~~
>[danger] ##### 打包压缩
1. 类衣服放到压缩袋, 再抽取里面的空气,在 Linux 中, 最常用的压缩文件格式是**xxx.tar.gz**在 tar 命令中有一个选项 -z 可以调用 gzip , 从而可以方便的实现压缩和解压缩的功能
2. 指令格式
* gz 压缩
~~~
# 压缩文件
tar -zcvf 打包压缩文件名.tar.gz 被压缩的文件/目录
# 解压缩文件
tar -zxvf 打包文件.tar.gz
# 解压缩到指定路径
tar -zxvf 打包文件.tar.gz -C 目录路径
~~~
* bz 压缩
~~~
# 压缩文件
tar -jcvf 打包压缩文件名.tar.bz2 被压缩的文件/目录
# 解压缩文件
tar -jxvf 打包文件.tar.bz2
# 解压缩到指定路径
tar -jxvf 打包文件.tar.bz2 -C 目录路径
~~~
3. 常用参数
~~~
1.-z 是压缩成 gz 压缩格式
2.-j 是压缩成 bz2 的压缩格式
3.例子 :
3.1.'tar -czf /tmp/etc-backup.tar.gz /etc' 压缩成'gz'的格式,加后缀方便使用的人知道格式
3.2. 'tar -cjf /tmp/etc-backup.tar.bz2 /etc' 压缩成'bz2'的格式
4.bz2 格式压缩时间长但是体积小,'gz' 压缩时间短体积大
注: 上面的指令解释为把 /ect 下的文件打包并且压缩到 /tmp/etc-backup.*.*,这里命名方式也是为了告诉
其他人他们是被压缩了那种格式,并且被tar打包
~~~
>[danger] ##### 列出备份文件的内容 -- t
~~~
1.'tar -tvf all.tar' -- 针对打包文件显示里面的内容只要'tf' 配合
2.' tar -ztvf all.tar.gz' -- 针对指定压缩类型需要配置对应的类型参数例如这里配合'ztf'
~~~
>[danger] ##### 解压缩
~~~
1.tar -xjf all.tar.bz2 #解压.bz2的文件
2.和压缩同理有'z'和‘j' 两种格式。想指定文件目录就'-C',否则就是当前
~~~
>[danger] ##### 解压或者解包中单某一条
~~~
1.' tar -zxvf all.tar.gz ./cutTest.txt' -- all.tar.gz 对应解压的包 ./cutTest.txt 对应包中的文件
~~~
>[danger] ##### 排除某个不解压
~~~
注意-- exclude跟着文件名或是文件夹,不得加斜杠,排除多个文件,就写多个-- exclude
tar -zXVf ./alltmp2. tar. gz --exclude data
~~~
>[danger] ##### 总结
1. 需要先打包在压缩,或者先解压在解包
~~~
'打包压缩': tar -jcvf 打包之后的文件名.tar.bz2 被打包压缩的目录或文件名
'解包解压缩': tar -jxvf 打包之后的文件名.tar.bz2 [ -C 指定解包位置 ]
~~~
>[info] ## 其他压缩命令
~~~
1gzip 和 zip 命令
~~~
>[danger] ##### zip 格式
* 压缩文件或目录,是一种压缩格式
| 功能 | 命令 |
| --- | --- |
| 压缩文件 | zip 压缩文件名.zip 源文件 |
| 压缩目录 | zip -r 压缩目录名.zip 源目录 |
| 解压 | unzip 压缩目录名.zip |
~~~
yum install -y unzip zip
mkdir book
touch book/1.txt
touch book/2.txt
zip -r book.zip book -- 将book 文件夹 压缩为book.zip
rm -rf book/ rmdir book
unzip book.zip
~~~
* 常用命令
~~~
unzip test.zip ->将test.zip解压到当前文件下
unzip -n test.zip -d /tmp ->将test.zip解压到/tmp目录下,并且不要覆盖已有文件
unzip -v test.zip ->查看test.zip内容,但不解压
unzip -o test.zip -d tmp/ ->将test.zip解压到/tmp目录下,并且覆盖已有文件
~~~
|选项 |描述|
| --- | --- |
|-c |将解压缩的结果显示到屏幕上,并对字符做适当的转换; |
|-f |更新现有的文件; |
|-l |显示压缩文件内所包含的文件; |
|-p |与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换; |
|-t | 检查压缩文件是否正确; |
|-u |与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中; |
|-v | 执行时显示详细的信息; |
|-z |仅显示压缩文件的备注文字; |
|-a | 对文本文件进行必要的字符转换; |
|-b | 不要对文本文件进行字符转换; |
|-C | 压缩文件中的文件名称区分大小写; |
|-j | 不处理压缩文件中原有的目录路径; |
|-L |将压缩文件中的全部文件名改为小写; |
|-M | 将输出结果送到more程序处理; |
|-n |解压缩时不要覆盖原有的文件; |
|-o |不必先询问用户,unzip执行后覆盖原有的文件; |
|-P |<密码> 使用zip的密码选项; |
|-q |执行时不显示任何信息; |
|-s | 将文件名中的空白字符转换为底线字符; |
|-V | 保留VMS的文件版本信息; |
|-X | 解压缩时同时回存文件原来的UID/GID; |
|-d<目录> | 指定文件解压缩后所要存储的目录; |
|-x<文件> |指定不要处理.zip压缩文件中的哪些文件; |
|-Z |unzip-Z等于执行zipinfo指令。 |
* 备注解释关于压缩文件和目录
现在有一个下面目录的结构a文件下有a.txt 和 b文件,b下有b.txt
a
├── a.txt
└── b
└── b.txt
压缩文件效果是压缩后的包只有 a b 文件夹 并不存在 a.txt b.txt 这类非文件夹
压缩目录是所有内容都会存在
>[danger] ##### gzip
* gzip为高压,可以把文件压缩得更小
* gzip命令不支持目录
| 命令 | 示例 | 含义 |
| --- | --- | --- |
| gzip 源文件 | gzip book.txt | 压缩为.gz格式的压缩文件,源文件会消失 |
| gzip -c 源文件 > 压缩文件 | gzip -c book.txt > book.txt.gz | 压缩为.gz格式的压缩文件,源文件不会消失 |
| gzip -r 目录 | gzip -r book | 把目录下的每个子文件都变成压缩包,并删除原文件,当前目录无变化 |
| gzip -d 压缩文件名 | gzip -d 1.txt.gz | 解压缩文件,不保留压缩包 |
| gunzip 压缩文件 | gunzip 2.txt.gz | 解压缩文件,也不保留压缩包 |
* 压缩是压缩目录下的文件
~~~
touch book.txt
mkdir book
touch book/1.txt
touch book/2.txt
gzip book.txt //源文件会消失
gzip -c 1.txt > 1.txt.gz //源文件不消失
gzip book.txt //压缩为.gz格式文件,源文件会消失
gzip -r book //把目录下的每个子文件都变成压缩包
cd book
gzip -d 1.txt.gz //解压缩文件,不保留压缩包
gunzip 2.txt.gz
~~~
- 安装-VMware 虚拟机
- 远程连接
- Windows -- wsl
- Linux -- 认识 Linux 和操作系统
- Linux -- Linux 和 windows 对比
- Linux -- 命令提示符
- Linux -- 文件目录
- Linux -- 文件类型
- Linux -- 绝对和相对路径
- Linux -- 常用快捷键
- Linux -- 三种帮助命令
- 帮助命令 -- man
- 帮助命令 -- help
- 帮助命令 -- info
- Linux -- 指令
- alias -- 设置别名
- history -- 查看历史命令
- cd -- 更改目录(切换文件夹)
- pwd -- 打印目录
- ls -- 列出文件内容
- mkdir -- 创建文件夹
- rmdir -- 删除一个空的目录
- touch -- 创建普通文件/修改时间
- cp -- 复制粘贴
- mv -- 移动和重名
- rm -- 删除
- cat/tac -- 查看纯文本文件
- more/less -- 分页读取信息
- head -- 从文本开头查看
- tail -- 从文本结尾查看
- cut -- 提取片段
- sort -- 排序
- uniq -- 去重
- wc -- 统计文件的行数、单词、字节数
- tr -- 替换、缩减或删除字符
- find -- 文件查找
- grep -- 文件当中匹配字符
- 管道 -- |
- locate -- 第三方文件查找
- whereis -- 查找二进制/源代码文件 路径
- which -- 查找环境变量
- 压缩和解压
- ln -- 链接
- wget -- 下载指定的url资源
- 重定向 -- << /< />/> >
- 逻辑控制 -- &&
- echo -- 输出指定内容
- date/cal -- 查看日期和日历
- Linux -- 进程管理
- Linux-- ps 指令
- vi/vim - 文本编辑器
- 更多
- Linux-- 开关机命令
- Liunx -- 退出登录
- Linux-- 查看登录用户信息
- Linux -- 环境变量
- Linux -- 用户
- Linux -- 文件管理
- 文件权限设置 -- chmod
- 更改文件的拥有者 -- chown
- 默认权限 -- umask
- Linux -- 用户
- 新建/删除用户 -- useradd/userdel
- 修改用户属性 -- usermod/chage
- 新建/删除用户组 -- groupadd/groupdel
- 用户切换 -- su/sudo
- 用户/用户组的配置文件
- 用户家目录被删除解决
- last、 lastlog命令查看用户详细的登录信息
- Linux -- shell
- Linux -- 管道符号
- shell -- 执行
- shell -- 变量
- shell -- 字符串
- shell -- 数组
- Shell -- declare 设置变量属性
- shell -- 数学计算
- shell -- 变量作用域
- shell -- 位置参数变量
- shell -- read
- shell - if 语句
- shell -- test
- shell -- case
- Linux -- 循环
- Linux -- 软件包管理