【Linux】(9)curl-压缩文件的命令(zip、gzip、xz、bzig2、tar)

目录

一、知识补充

        1.1 find

        1.2 curl

二、压缩文件的命令

        2.1 四个问题

        2.1.1 回答

        2.2 zip

        2.3 gzip

        2.4 xz

        2.5 bzig2

        2.6 查看压缩文件的内容

        2.6.1 zcat

        2.6.2 xzcat

        2.7 ⭐⭐⭐tar

        2.7.1 常用命令选项

        2.7.2 czvf选项

        2.7.3 cJvf选项

        2.7.4 排除功能

        2.7.5 简单总结

        2.7.6 补充

三、时间相关的命令

        3.1 time

        3.2 date

        3.3 timedatectl

        3.4 Linux时间如何与互联网上时间服务器同步(ntpdate)

四、练习

        4.1 练习1

         4.2 练习2

        4.3 ❗练习3:备份脚本

五、重定向的补充

一、知识补充

        1.1 find

[root@localhost lianxi]# ls
backup  cali.txt  cmd  hosts  LIHUA.txt  secure
[root@localhost lianxi]# find . -name c*
find: 路径必须在表达式之前: cmd
用法: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

表达式:expression 一些字符串和特殊的符号组合成一个公式,用来表达某个意思

        c* -->表达需要查找文件名字里包含c的文件

find . -name c* ==>shell会去解释(分析),判断谁是命令,谁是参数,谁是选项

        因为当前文件夹下,含有c开头的文件夹cmd,所以此时shell解释器将c*识别成了路径

【解决】 用双引号以防止产生解释错误

[root@localhost lianxi]# find . -name "c*"
./cali.txt
./cmd
./cmd/aa/bb/cc

        1.2 curl

是Linux里的字符界面的浏览器

-O:下载的选项

【下载文件】curl -O + 链接地址

【打开网页】curl + 网页地址 (如:curl https://www.baidu.com)

二、压缩文件的命令

        2.1 四个问题

  1. Windows里有哪些压缩软件?压缩文件的格式有哪些
  2. 为什么要压缩?
  3. Windows里的压缩文件传到Linux里是否可以解压
  4. Linux里的压缩文件传到Windows里是否可以解压
  5. 如何在Linux和Windows之间传递文件

        2.1.1 回答

1. 软件:WinRar 快压 7-Zip

        格式:zip rar

        zip是Windows默认的压缩格式

2. 压缩是为了便于我们备份:备份需要占用磁盘空间,压缩后占用的磁盘空间小

        QQ传输文件:不支持传输文件夹,但是可以传输压缩包

        压缩文件小:在网络上传输更快

3. .rar传递到Linux中,默认不能解压,因为Linux不支持.rar的压缩格式,默认没有安装Linux版的WinRAR软件

        .zip文件可以在Linux里解压

        Linux下默认支持.zip格式的压缩文件

        Linux还支持.tar.gz .tar.bz2 .tar.xz .zip

4. Windows里的WinRAR可以解压Linux里所有压缩格式的文件

5. 方法一:xftp

        xshell ==》Windows远程连接到Linux里的工具,控制Linux

        xftp ==》Windows和Linux之间传输文件的工具

        2.2 zip

Windows和Linux里都支持的压缩格式

安装zip和unzip(zip:压缩,unzip:解压)

[root@localhost ~]# yum install unzip zip -y

【使用】

        unzip + 文件名:解压

        2.3 gzip

Linux中的压缩格式

只能压缩文件,不能压缩文件夹,是直接在文件上进行操作,后缀名为.gz

[root@localhost junhao]# ls
cali  junhao.txt  passwd
[root@localhost junhao]# gzip passwd
[root@localhost junhao]# ls
cali  junhao.txt  passwd.gz

【解压】gunzip

[root@localhost junhao]# gunzip passwd.gz
[root@localhost junhao]# ls
cali  junhao.txt  passwd

        2.4 xz

只能压缩文件,不能压缩文件夹,是直接在文件上进行操作,后缀名为.xz

【解压】unxz


[root@localhost junhao]# xz passwd
[root@localhost junhao]# ls
cali  junhao.txt  passwd.xz
[root@localhost junhao]# unxz passwd.xz
[root@localhost junhao]# ls
cali  junhao.txt  passwd

        2.5 bzig2

已经被淘汰了,后缀名为.bz2

        2.6 查看压缩文件的内容

cat查看会乱码

        2.6.1 zcat

查看.gz的压缩文件内容

[root@localhost junhao]# echo 1234 >>junhao.txt
[root@localhost junhao]# cat junhao.txt
1234
[root@localhost junhao]# gzip junhao.txt
[root@localhost junhao]# ls
cali  junhao.txt.gz  passwd
[root@localhost junhao]# cat junhao.txt.gz                                     I▒$bjunhao.txt3426▒!▒}[root@localhost junhao]# xterm-256color
-bash: xterm-256color: 未找到命令
[root@localhost junhao]# zcat junhao.txt.gz
1234

        2.6.2 xzcat

[root@localhost junhao]# ls
cali  junhao.txt  passwd
[root@localhost junhao]# xz junhao.txt
[root@localhost junhao]# ls
cali  junhao.txt.xz  passwd
[root@localhost junhao]# xzcat junhao.txt.xz
1234

        2.7 ⭐⭐⭐tar

《本身不具备压缩功能,是调用其他其他压缩工具进行压缩》

tar命令打包的文件称为tarball,也叫归档文件(可以把归档理解为把很多内容放到一个文件或文件夹里,这个文件叫做归档文件)

【用途】用于制作归档文件、释放归档文件

【作用】

    1. 可以把很多文件做成一个压缩包文件
    2. 可以把很多文件和目录作为一个压缩包文件

        2.7.1 常用命令选项

-c:创建.tar格式的包文件 creat

-x:解开.tar格式的包文件 extract

-v:输出详细信息 verbose

-f:表示使用归档文件 file

-t:列表查看包内的文件

-z:调用gzip对归档文件进行压缩

-J:调用xz对归档文件进行压缩

【示例】tar cf boot.tar boot

创建boot.tar归档文件,不进行压缩

【补充】xz的压缩效果更好,需要的时间更长

【补充2】查看tarball文件里的内容

        tar tf boot.tar.gz

        打压缩包和解压缩包都会替换原来的文件

        指定路径

【解压】默认情况下,tar解压是存放到当前目录

        -C 解压时指定目录

【生成】生成时,指定路径是使用的是绝对路径的方法

        如:tar czf /root/lianxi/压缩文件名 需要压缩的文件 ==》生成压缩文件到/root/lianxi目录下

        2.7.2 czvf选项

【示例】将系统/etc/passwd /var/log/messages /etc/hosts这三个文件打包到lianxi目录下叫pwd_ms_hosts.tar.gz

tar czvf /root/lianxi/pwd_ms_hosts.tar.gz /etc/passwd /etc/hosts /var/messages

        生成的tarball压缩文件(目的文件) 要打包的文件(源文件)

[root@localhost lianxi]#  tar czvf /root/lianxi/pwd_ms_hosts.tar.gz /etc/passwd /etc/hosts /var/messages
tar: 从成员名中删除开头的“/”
/etc/passwd
/etc/hosts
tar: /var/messages:无法 stat: 没有那个文件或目录
tar: 由于前次错误,将以上次的错误状态退出
[root@localhost lianxi]# ls
pwd_ms_hosts.tar.gz

【注】2到6行的提醒是正常的,因为备份文件里使用相对命令较好,后面解压时,默认会解压到当前

        tar命令防止解压的时候会替换原来文件,所以在打包时,去掉绝对路径前的/

        (只要使用相对路径就不会有这种提醒)

        2.7.3 cJvf选项

【示例】将/boot目录复制到lianxi目录下,打包为boot.tar.xz

        tar cJvf boot.tar.xz boot

        (也可以写成tar -cJvf boot.tar.xz boot)(-就是说明这个是选项,可不写)

        -v选项的作用:就是可以看到整个压缩过程

【不要-v】tar cJf boot.tar.gz boot

        2.7.4 排除功能

--exclude

【示例】 将/boot目录下的除了grub2目录以外的所有的文件都备份到/bak目录下叫no-grub2.tar.gz

# 单独排除某个文件
[root@localhost lianxi]# tar czf /bak/no_grub2.tar.gz --exclude=/boot/grub2 /boot
tar: 从成员名中删除开头的“/”
[root@localhost lianxi]# ls /bak
boot  etc  no_grub2.tar.gz  var
# 排除多个文件
[root@localhost lianxi]# tar czf /bak/no_4.tar.gz --exclude=/boot/{grub2,efi,loader,lost+found} /boot
tar: 从成员名中删除开头的“/”
[root@localhost lianxi]# ls /bak
boot  etc  no_4.tar.gz  no_grub2.tar.gz  var

        2.7.5 简单总结

1. 创建压缩文件

        tar czvf

        tar cJvf

2. 查看压缩文件

        tar tf

3. 解压文件

        tar xf

        2.7.6 补充

tar czf /root/lianxi/log.tar.gz /var/log ==》对/var/log目录进行打包

tar czf /root/lianxi/log.tar.gz /var/log/* ==》对/var/log目录进行打包

先cd /var/log

再tar czf /root/lianxi/log.tar.gz * ==》对/var/log目录下所有的文件和文件夹进行打包(解压后是散的文件)

三、时间相关的命令

        3.1 time

放在命令前,可以查看命令执行的时长

[root@localhost lianxi]# time tar czf boot.tar.gz /boot
tar: 从成员名中删除开头的“/”

real    0m4.084s
user    0m3.115s
sys     0m0.929s
[root@localhost lianxi]# time tar cJf boot.tar.xz /boot
tar: 从成员名中删除开头的“/”

real    0m47.675s
user    0m43.711s
sys     0m3.762s
[root@localhost lianxi]# ll -h
总用量 189M

-rw-r--r--. 1 root root  96M 3月  13 11:25 boot.tar.gz
-rw-r--r--. 1 root root  94M 3月  13 11:26 boot.tar.xz

        3.2 date

1. 查看当前时间

[root@localhost ~]# date
2022年 03月 13日 星期日 14:55:39 CST

2. 修改系统当前时间

[root@localhost lianxi]# date -s "2022-04-01"
2022年 04月 01日 星期五 00:00:00 CST

        3.3 timedatectl

查看时间以及时区


[root@localhost lianxi]# timedatectl
      Local time: 五 2022-04-01 00:12:07 CST
  Universal time: 四 2022-03-31 16:12:07 UTC
        RTC time: 日 2022-03-13 08:13:01
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

        3.4 Linux时间如何与互联网上时间服务器同步(ntpdate)

注:centos8中没有ntpdate了

[root@localhost ~]# yum install ntpdate
[root@localhost ~]# date
2022年 04月 01日 星期五 00:23:10 CST
[root@localhost ~]# ntpdate time.windows.com
13 Mar 16:25:23 ntpdate[91424]: step time server 20.189.79.72 offset -1583885.781246 sec
[root@localhost ~]# date
2022年 03月 13日 星期日 16:25:37 CST

四、练习

        4.1 练习1

         4.2 练习2

 10. 将/boot目录下的除了grub2目录以外的所有的文件都备份到/bak目录下叫no-grub2.tar.gz

[root@localhost /]# cd lianxi
[root@localhost lianxi]# ls
# 第一题 创建文件夹
[root@localhost lianxi]# mkdir tar
[root@localhost lianxi]# ls
tar
[root@localhost lianxi]# pwd
/lianxi
[root@localhost lianxi]# cd tar
[root@localhost tar]# pwd
/lianxi/tar
[root@localhost tar]# ls
# 第二题 复制
[root@localhost tar]# cp /etc/hosts /etc/passwd .
[root@localhost tar]# ls
hosts  passwd
# 3.复制boot文件夹(复制文件夹要加选项-r)
[root@localhost tar]# cp /boot -r .
[root@localhost tar]# ls
boot  hosts  passwd
# 4.打包
[root@localhost tar]# tar czf boot.tar.gz boot
[root@localhost tar]# ls
boot  boot.tar.gz  hosts  passwd
# 5.查看压缩文件内容
[root@localhost tar]# tar tf boot.tar.gz
# 6.将hosts和passwd文件打包
[root@localhost tar]# tar cJvf host_passwd.tar.xz hosts passwd
hosts
passwd

[root@localhost tar]# ls
boot  boot.tar.gz  host_passwd.tar.xz  hosts  passwd
# 8.
[root@localhost tar]# tar cJf /lianxi/boot_pw_log.tar.xz /boot /etc/passwd /var/log
[root@localhost tar]# ls /lianxi
boot_pw_log.tar.xz  tar
# 9.解压到指定路径/bak
[root@localhost lianxi]# tar xf boot_pw_log.tar.xz -C /bak
[root@localhost lianxi]# ls /bak
boot  etc  var
# 补充:解压到当前
[root@localhost lianxi]# tar xf boot_pw_log.tar.xz
# 10.单独排除某个文件
[root@localhost lianxi]# tar czf /bak/no_grub2.tar.gz --exclude=/boot/grub2 /boot
tar: 从成员名中删除开头的“/”
[root@localhost lianxi]# ls /bak
boot  etc  no_grub2.tar.gz  var
# 排除多个文件
[root@localhost lianxi]# tar czf /bak/no_4.tar.gz --exclude=/boot/{grub2,efi,loader,lost+found} /boot
tar: 从成员名中删除开头的“/”
[root@localhost lianxi]# ls /bak
boot  etc  no_4.tar.gz  no_grub2.tar.gz  var

        4.3 ❗练习3:备份脚本

 1.需求分析

        名字:backup_log.sh

        备份:tar ==》.tar.gz ==》czf

        文件名里有时间:date,使用变量

 

 

 变量混淆的解释

         删除/backup目录下7天前的文件:find /backup -mtime

【答案】

[root@localhost lianxi]#vim backup_log.sh
[root@localhost lianxi]# cat backup_log.sh
#!/usr/bin/bash

# 用ctime表示当天日期,精确到秒
ctime=$(date +%Y_%m_%d_%H_%M_%S)

# 确保backup目录一定存在
mkdir -p /root/lianxi/backup

# 使用tar命令进行备份
tar czf /root/lianxi/backup/${ctime}-log.tar.gz /var/log &>/dev/null





# 找到七天前的文件并删除
find /root/lianxi/backup -type f -mtime +7 -name "*log.tar.gz" -exec rm -rf {} \;

echo "##################备份完成################"

【验证】


[root@localhost lianxi]# date
2022年 03月 13日 星期日 15:59:36 CST
# 修改当前时间
[root@localhost lianxi]# date -s "2022-04-01"
2022年 04月 01日 星期五 00:00:00 CST
[root@localhost lianxi]# date
2022年 04月 01日 星期五 00:00:04 CST
[root@localhost lianxi]# ls
backup  backup_log.sh  boot  boot.tar.gz  boot.tar.xz  pwd_ms_hosts.tar.gz

[root@localhost lianxi]# ls backup
2022-03-13_10_39_10-log.tar.gz  2022-03-13_15_55_53-log.tar.gz
2022_03_13_15_55_53-log.tar.gz

[root@localhost lianxi]# bash backup_log.sh
tar: 从成员名中删除开头的“/”
##################备份完成################
[root@localhost lianxi]# ls backup
2022_04_01_00_02_47-log.tar.gz
[root@localhost lianxi]#

五、重定向的补充

&> 不管正确的还是错误的输出重定向 ==》正确的和错误的会一起,覆盖原来的内容,如果文件不存在会新建

&>> 追加正确和错误的输出重定向 ==》正确的和错误的一起,不会覆盖原来的内容,如果文件不存在会新建

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值