目录
3.4 Linux时间如何与互联网上时间服务器同步(ntpdate)
一、知识补充
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 四个问题
- Windows里有哪些压缩软件?压缩文件的格式有哪些
- 为什么要压缩?
- Windows里的压缩文件传到Linux里是否可以解压
- Linux里的压缩文件传到Windows里是否可以解压
- 如何在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,也叫归档文件(可以把归档理解为把很多内容放到一个文件或文件夹里,这个文件叫做归档文件)
【用途】用于制作归档文件、释放归档文件
【作用】
-
- 可以把很多文件做成一个压缩包文件
- 可以把很多文件和目录作为一个压缩包文件
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]#
五、重定向的补充
&> 不管正确的还是错误的输出重定向 ==》正确的和错误的会一起,覆盖原来的内容,如果文件不存在会新建
&>> 追加正确和错误的输出重定向 ==》正确的和错误的一起,不会覆盖原来的内容,如果文件不存在会新建