Day10-Linux系统打包和时间命令及案例精讲

1. tar 打包压缩

1.1 【打包】 为什么要打包,压缩?

-zcvf 打包组合 zcf
z 压缩(gzip压缩)
c 创建
v 显示过程
f 针对文件

语法:

命令 选项

tar zcf 【压缩包的名字.tar.gz】 【要打包的东西】

装东西的筐 苹果

练习1:把/etc/目录打包到/opt下面。

ls -d /etc #检查有没有要打包的目录
cd /       #切换到打包目录的上一级
tar zcf /opt/etc.tar.gz ./etc

执行过程:

[root@oldboy ~]# cd /
[root@oldboy /]# tar zcvf /opt/etc.tar.gz ./etc/
[root@oldboy /]# ls /opt/
etc  etc.tar.gz  services

练习2:把/usr/local目录打包到/tmp下面。

[root@oldboy /]# ls -ld /usr/local/
drwxr-xr-x. 12 root root 131 Dec  1  2023 /usr/local/
[root@oldboy /]# cd /usr/
[root@oldboy usr]# tar zcf /tmp/local.tar.gz ./local/
[root@oldboy usr]# ls /tmp/
local.tar.gz  services

v 显示过程 工作中和领导汇报工作。

关键:

  1. 结果:赚100万。

  2. 过程:怎么赚的100万?

1.2 【查看包里内容】

t 查看包里内容

tar tf 包名

[root@oldboy usr]# tar tf /tmp/local.tar.gz
./local/
./local/bin/
./local/etc/
./local/games/
./local/include/
./local/lib/
./local/lib64/
./local/libexec/
./local/sbin/
./local/share/
./local/share/applications/
./local/share/info/
./local/share/man/
./local/share/man/man1/
......

1.3 【解包】

组合zxvf,缩写xf

x 解压

[root@oldboy opt]# cd /opt
[root@oldboy opt]# tar zxvf etc.tar.gz  #解压到了当前目录
[root@oldboy opt]# tar zxf etc.tar.gz
[root@oldboy opt]# tar xf etc.tar.gz

-C 指定路径解压

[root@oldboy opt]# tar xf etc.tar.gz -C /home/oldboy/
[root@oldboy opt]# ls /home/oldboy/

-p 保持属性(zcfp)

-j 通过bzip2命令压缩或解压(非常少了)

tar jcvf 包名.tar.bz2 包名

[root@oldboy opt]# tar jcvf /tmp/a.tar.bz2 /etc/hosts #打包实践
tar: 从成员名中删除开头的“/”
/etc/hosts
[root@oldboy opt]# ls /tmp/
a.hosts  a.tar.bz2  etc  local.tar.gz  services
[root@oldboy opt]# cd /tmp/
[root@oldboy tmp]# tar zxvf a.tar.bz2 

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now

两种解压方法:
[root@oldboy tmp]# tar jxvf a.tar.bz2 
etc/hosts
[root@oldboy tmp]# tar xf a.tar.bz2 #gzip,bzip统一解压方法。

1.4 排除打包 --exclude=

tar zcvf /tmp/pai.tar.gz ./oldboy/ --exclude=file1

命令 参数 包名 目录 排除的文件

环境准备

[root@oldboy tmp]# mkdir /oldboy -p
[root@oldboy tmp]# cd /oldboy/
[root@oldboy oldboy]# ls
[root@oldboy tmp]# mkdir /oldboy -p
[root@oldboy tmp]# cd /oldboy/
[root@oldboy oldboy]# ls
[root@oldboy oldboy]# touch file{1..5}
[root@oldboy oldboy]# ls
file1  file2  file3  file4  file5
[root@oldboy oldboy]# cd ../

练习排除打包

排除file1

[root@oldboy /]# tar zcvf /tmp/pai.tar.gz ./oldboy/ --exclude=file1
./oldboy/
./oldboy/file2
./oldboy/file3
./oldboy/file4
./oldboy/file5

排除file1到file3 ###–exclude=file{1…3}

[root@oldboy /]# tar zcvf /tmp/pai.tar.gz ./oldboy/ --exclude=file{1..3}
./oldboy/
./oldboy/file4
./oldboy/file5

指定要排除的文件 ### --exclude=file{1,3,5}

[root@oldboy /]# tar zcvf /tmp/pai.tar.gz ./oldboy/ --exclude=file{1,3,5}
./oldboy/
./oldboy/file2
./oldboy/file4

###--exclude=file1 --exclude=file2
[root@oldboy /]# tar zcvf /tmp/pai.tar.gz ./oldboy/ --exclude=file1 --exclude=file2
./oldboy/
./oldboy/file3
./oldboy/file4
./oldboy/file5

从文件中排除打包 --exclude-from(-X)

建立排除的文件paichu.log,内容就是排除的文件名

cat >paichu.log<<EOF
file1
file5
EOF

[root@oldboy /]# cat paichu.log 
file1
file5
[root@oldboy /]# tar zcvfX /tmp/pai.tar.gz paichu.log ./oldboy/
./oldboy/
./oldboy/file2
./oldboy/file3
./oldboy/file4

tar zcvfX /tmp/pai.tar.gz paichu.log ./oldboy/

​ 存储排除文件名的文件

-h 打包软链接

/etc/rc.local是软链接文件,指向真实路径/etc/rc.d/rc.local
默认打包的时候,只打包了软链接文件。

tar zcvf /backup/rc.local_1.tar.gz /etc/rc.local

【而加上-h打包,可以打包软链接对应的真实文件】

[root@oldboy etc]# tar zcvfh  /backup/rc.local_1.tar.gz /etc/rc.local
tar: 从成员名中删除开头的“/”
/etc/rc.local
[root@oldboy etc]# cd /backup/
[root@oldboy backup]# tar xf rc.local_1.tar.gz 
[root@oldboy backup]# cat etc/rc.local 
#!/bin/bash
touch /var/lock/subsys/local

2. date 时间命令

日期 时间命令 date,别和data搞混这是数据。

date -s "2030/5/14"                #修改日期
date -s "2030/5/14 23:45:12"       #修改时间
clock -w                           #写到bios永久生效。

学习一下。。。

工作中服务器的时间是定时和互联网时间同步的。

自己配置定时同步(设置搭建时间服务器) NTPD服务和chronyd

CentOS6中,默认使用ntpd时间服务

CentOS7中,默认使用chrony时间服务

练习:

[root@oldboy backup]# date -s "2030/5/14"
2030年 05月 14日 星期二 00:00:00 CST
[root@oldboy backup]# date
2030年 05月 14日 星期二 00:00:07 CST
[root@oldboy backup]# date -s "2030/5/14 23:45:12"
2030年 05月 14日 星期二 23:45:12 CST
[root@oldboy backup]# clock -w

当下时间,特定格式时间显示

[root@oldboy ~]# date +%F
2030-05-15
[root@oldboy ~]# date +%Y
2030
[root@oldboy ~]# date +%m
05
[root@oldboy ~]# date +%d
15
[root@oldboy ~]# date +%Y-%m-%d
2030-05-15
[root@oldboy ~]# date +%H
00
[root@oldboy ~]# date +%M
07
[root@oldboy ~]# date +%S
31
[root@oldboy ~]# date +%H:%M:%S
00:07:51
[root@oldboy ~]# date +%Y-%m-%d\ %H:%M:%S
2030-05-15 00:08:16
[root@oldboy ~]# date +%Y-%m-%d %H:%M:%S  #空格要转义,否则报错。
date: 额外的操作数 "%H:%M:%S"
Try 'date --help' for more information.
[root@oldboy ~]# date +%F\ %T
2030-05-15 00:09:08
[root@oldboy opt]# date +%w
3

-d 显示时间

过去的时间(- 表示过去)

[root@oldboy opt]# date +%F -d "-3day"
2030-05-12
[root@oldboy opt]# date +%F -d "-3month"
2030-02-15
[root@oldboy opt]# date +%F -d "-3year"
2027-05-15
[root@oldboy opt]# date +%F -d "-24hour"
2030-05-14
[root@oldboy opt]# date +%F -d "-1440min"
2030-05-14
[root@oldboy opt]# date +%F -d "-86400sec"
2030-05-14

未来的时间(+ 表示未来)

[root@oldboy opt]# date +%F -d "+3day"
2030-05-18

企业级打包案例

案例1:每天打包/etc/目录,到/backup目录,要求压缩包的名字按照每天的日期命名。

1)知识点:

$( )和` `反引号,里面都是放命令,可以作为路径,文件名的一部分

2)测试

[root@oldboy ~]# echo $(date +%F)
2030-05-15
[root@oldboy ~]# echo `date +%F`
2030-05-15

3)练习

[root@oldboy ~]# tar zcf /tmp/etc_$(date +%F).tar.gz /etc/
tar: Removing leading `/' from member names
[root@oldboy ~]# ls /tmp/
etc_2030-05-15.tar.gz  local.tar.gz  services  #压缩包的名字还有当天的日期

4)解答·

[root@oldboy ~]# mkdir /backup -p    #创建存储备份数据的目录
[root@oldboy ~]# ls -ld /backup/     #检查待备份的目录/etc
drwxr-xr-x. 2 root root 6 May 15 00:40 /backup/
[root@oldboy ~]# tar zcf /backup/bak_etc_$(date +%F).tar.gz /etc/    #打包备份
tar: Removing leading `/' from member names
[root@oldboy ~]# ls /backup/
bak_etc_2030-05-15.tar.gz

案例2:查找/etc下,扩展名是.conf的所有文件,打包备份到/backup,文件名含有日期

find+tar组合

1)查找/etc下扩展名是.conf的所有文件

[root@oldboy ~]# find /etc/ -name "*.conf"

2)解答:

方法一:

[root@oldboy ~]# tar zcf /backup/conf_bak_$(date +%F) $(find /etc/ -name "*.conf")
tar: Removing leading `/' from member names
[root@oldboy ~]# ls /backup/
bak_etc_2030-05-15.tar.gz  conf_bak_2030-05-15
[root@oldboy ~]# tar zcf /backup/conf_bak_$(date +%F).tar.gz $(find /etc/ -name "*.conf")
tar: Removing leading `/' from member names
[root@oldboy ~]# ls /backup/
bak_etc_2030-05-15.tar.gz  conf_bak_2030-05-15  conf_bak_2030-05-15.tar.gz
[root@oldboy ~]#

方法二:

[root@oldboy ~]# find /etc/ -name "*.conf"|xargs tar zcf /backup/conf_bak_$(date +%F)
tar: Removing leading `/' from member names
[root@oldboy ~]# ls /backup/
bak_etc_2030-05-15.tar.gz  conf_bak_2030-05-15  conf_bak_2030-05-15.tar.gz
  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值