06_Linux基础-NGINX和浏览器、网页的关系-压缩命令-配置NGINX支持下载功能-备份脚本
一. NGINX和浏览器、网页的关系
1 | nginx是一个web服务器 |
1 | 思考: |
1 | web:网站 |
1 | 如何判断nginx是否运行? |
1 | 项目组: |
1 | cd /usr/local/nginx/html/ 放网页 |
二. 云服务器ssh登陆-安装NGINX-上传网页
1 | 自己的虚拟机的linux系统里呢?(如何上传自己的网页到linux系统呢) |
1 | (注)脚本: |
1 | ip add 看的是私网IP |
1 | 搞一个自己的网站 |
1 | cat /etc/centos-release 查看centos版本 |
三. 压缩命令-xz-gzip-bzip2-zip-tar-配置NGINX服务器支持下载功能
主要内容:压缩命令-tar(重点) 对文件和文件夹进行压缩
tar -czf -->.tar.gz
tar cjf -->.tar.bz2
tar cJf -->.tar.xz
==tar tf \*.tar.\*==
tar xf *.tar.*
# tar xf boot_log_passwd.tar.gz -C /zhanghuayou/
压缩命令-xz-gzip-bzip2-zip:都只能对文件进行压缩
zip -->.zip
gzip -->.gz
xz —>.xz
bzip2 -->.bz2
zip yum install zip unzip -y
zip chenpeng.txt.zip chenpeng.txt
unzip passwd.zip
gzip
gzip hosts
gunzip hosts.gz
zcat messages.gz
xz
xz hosts
unxz hosts.xz
xzcat messages.xz
bzip2 yum install bzip2 -y
bzip2 passwd
bunzip2 passwd.bz2
bzcat passwd.bz2
配置nginx服务器支持下载功能
压缩命令-xz-gzip-bzip2-zip-tar
1 | 为什么要打压缩包? |
1 | windows里有哪些解压缩软件? |
1 | windows里的.rar压缩文件传递到linux里,是否能打开 |
1 | nginx-1.19.2.tar.gz linux里的压缩文件 |
zip
zip
zip只能对文件进行压缩,不能对文件夹进行压缩
yum install zip unzip -y (注:zip需要安装)
zip 打压缩包
unzip 解压的
# zip chenpeng.txt.zip chenpeng.txt (注:用法)
压缩后的文件 源文件
[root@sanchuang-linux lianxi]# zip passwd.zip passwd
adding: passwd (deflated 61%) (注:deflated压缩,泄气)
ll -h 看大小
passwd.zip
# unzip passwd.zip 解压
Archive: passwd.zip
inflating: passwd
# ls
passwd passwd.zip
zip的缺点:有源文件和新文件
gzip
gzip
gzip可以直接在源文件上压缩,后缀名是.gz (注:与zip的区别,理解为zip的升级版)
(注:gzip不需要安装)
hosts passwd passwd.zip
# gzip hosts (用法) gzip + 源文件
# ls
hosts.gz passwd passwd.zip
# gunzip hosts.gz (解压)
# zcat messages.gz (查看压缩文件)
xz
xz (注:xz不需要安装)
https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.8.11.tar.xz
# xz hosts (用法)
# ls
hosts.xz passwd passwd.zip
# unxz hosts.xz (解压)
# ls
hosts passwd passwd.zip
# xzcat messages.xz (查看压缩文件)
gz与xz 比较,xz效果好
推荐使用xz
bzip2
bzip2 (注:bzip2需要安装)
yum install bzip2 -y
# bzip2 passwd (用法)
passwd.bz2
# bunzip2 passwd.bz2 (解压)
passwd
# bzcat passwd.bz2 (查看压缩文件)
zip -->.zip
gzip -->.gz
xz —>.xz
bzip2 -->.bz2
tar
1 | tar -->兼并了gzip,xz,bzip2 |
配置NGINX服务器支持下载功能
(autoindex auto 自动 index索引)
# cd /usr/local/nginx/conf/ (注:配置目录)
#
# vim nginx.conf (注2:修改配置文件)即加上autoindex on;这一行
location / {
root html; (注4:指定nginx的存放网页的目录为html–》网页根目录)
index index.html index.htm; (注5:配置nginx服务器支持的首页为index.html 或者index.htm index.html的优先级要高,没有index.html的时候,就会去查找index.htm)
autoindex on; (注3:添加配置,让nginx支持显示文件夹里的内容)
}
# /usr/local/nginx/sbin/nginx -s reload 重新加载nginx
压缩包上传
四. tar命令
tar命令
用途:制作归档文件、释放归档文件
格式:tar [选项]… 归档文件名 源文件或目录
tar [选项]… 归档文件名 [-C 目标目录]
常用命令选项
-c:创建 .tar 格式的包文件 create
-x:解开.tar格式的包文件 extract提取
-v:输出详细信息 verbose冗余的
-f:表示使用归档文件 file
-t:列表查看包内的文件 list
常用命令选项
-C:解包时进入指定的目标文件夹
-z:调用gzip程序进行压缩或解压
-j:调用bzip2程序进行压缩或解
-J:调用xz程序进行压缩或解压
=== (经典组合)
创建压缩包
tar -czf -->.tar.gz
tar cjf -->.tar.bz2
tar cJf -->.tar.xz
创建压缩包到指定的路径 使用绝对路径
# tar czf /zhanghuayou/passwd.tar.gz /etc/passwd
tar: 从成员名中删除开头的“/”
查看压缩包里的内容
==tar tf \*.tar.\*==
解压–》默认解压到当前目录
tar xf *.tar.*
-C 解压到指定的路径
# tar xf boot_log_passwd.tar.gz -C /zhanghuayou/
# mkdir tar
# cd tar
# ls
# tar czf passwd.tar.gz /etc/passwd
tar: 从成员名中删除开头的“/”
# ls
passwd.tar.gz
# tar tf passwd.tar.gz
etc/passwd (注:/ 没有了)
[root@sanchuang-linux tar]# ls
passwd.tar.gz
# tar xf passwd.tar.gz
# ls
etc passwd.tar.gz (注2:解压后是文件夹etc,没有“/”)
# cd etc/
# ls
passwd
#
给文件夹打压缩包
# tar cJf boot.tar.xz /boot
# tar czf boot.tar.gz /boot
# tar cjf boot.tar.bz2 /boot
# time tar czf boot.tar.gz /boot (注:压缩命令前接 time 可以看时间)
tar: 从成员名中删除开头的“/”
real 0m8.467s
user 0m6.851s
sys 0m2.226s
#
(注:↓接v可以看过程,信息输出。一般写脚本不接v)
# tar czvf boot_log_passwd.tar.gz /boot /var/log /etc/passwd (注:文件和目录)
# tar czf boot_log_passwd.tar.gz /boot /var/log /etc/passwd
tar: 从成员名中删除开头的“/”
tar: 从硬连接目标中删除开头的“/”
#
后面打包的文件如果压缩文件的名字一样,会覆盖
五. 压缩练习-备份脚本
主要内容:
排错多个文件 exclude 排除 (难点)
# tar –exclude=/boot/{grub2,efi,loader} -czvf no_grub_boot.tar.gz /boot
# date +%Y%m%d%H%M%S
20200924170954
当前的日期往后面推10天
# date -d “10 days”
如何得到命令的执行结果赋值给变量
方法1:
ctime=$(date +%F)
方法2:反引号
ctime=`date +%F`
命令的嵌套
设置时间 -s
# date -s ‘2020-10-10’ (注:调时间)
# date -s ‘2020-10-10 9:53:00’ (注:指定小时分钟秒)
# cal 看日历 calendar(日历)
# cal 2020 看2020年日历
1 | 压缩练习: |
练习8:
1.创建一个目录在/lianxi下叫tar
# mkdir /lianxi/tar
2.进入tar目录,复制/etc/hosts文件和/etc/passwd到tar目录下
# cd /lianxi/tar # cp /etc/hosts . # cp /etc/passwd .
3.复制/boot目录到tar目录下
# cp /boot . -r
4.将当前目录下的boot目录打包放在/lianxi/tar目录下叫boot.tar.gz
# tar czf boot.tar.gz boot
5.查看boot.tar.gz文件里的内容
# tar tf boot.tar.gz
6.将hosts文件和passwd文件打包放到host_passwd.tar.bz2文件
# tar cjf host_passwd.tar.bz2 hosts passwd
7.查看host_passwd.tar.bz2文件里的内容
# tar tf host_passwd.tar.bz2
8.将/boot/目录和/etc/passwd、/var/log目录备份到/lianxi目录下叫boot_pw_log.tar.xz
# tar cJf /lianxi/boot_pw_log.tar.xz /boot /etc/passwd /var/log
9.新建/bak目录,然后将/lianxi目录下的boot_pw_log.tar.xz解压到/bak目录下
# mkdir -p /bak # tar xf boot_pw_log.tar.xz -C /bak
10.将/boot目录下的除grub2目录以外的所有文件都备份到/bak目录下叫no-grub.tar.gz
tar czvf --exclude (难点)
# tar –exclude=/boot/grub2 -czvf no_grub_boot.tar.gz /boot
centos8里的 (注:–exclude=/boot/grub2 -czvf 前后不能错,grub2不能接/,-czvf -不能省略)
# tar –exclude=/boot/grub2 -czvf no_grub_boot.tar.gz /boot
centos7里的
# tar czvf no_grub2_boot.tar.gz /boot –exclude=/boot/grub2
排错多个文件 exclude 排除 (难点)
# tar –exclude=/boot/{grub2,efi,loader} -czvf no_grub_boot.tar.gz /boot
(注:目录结构 {} 表示多个)
1 | 练习: |
需求分析:
年月日小时分钟秒
时间戳:年月日小时分钟秒
获得当前的日期 date
%Y year (注:年)
%m month (01…12) (注:月)
%M minute (00..59) ==(注:分钟)==
%d day of month (e.g., 01) (注:日)
%H hour (00…23) (注:小时)
%S second (00…60) (注:秒)
%F full date; same as %Y-%m-%d (注:年月日)
# date +%Y%m%d%H%M%S
20200924170954
# date +%Y-%m-%d%H%M%S
2020-09-24171008
# date +%Y-%m-%d_%H_%M_%S
2020-09-24_17_10_31
#
当前的日期往后面推10天 (推迟时间)
# date -d “10 days”
2020年 10月 04日 星期日 17:21:27 CST
# date -d 10days
2020年 10月 04日 星期日 17:21:37 CST
#
# date -d 10hours
2020年 09月 25日 星期五 03:22:13 CST
#
如何得到命令的执行结果赋值给变量
方法1:$( ) (更好,因为可以嵌套)
ctime=$(date +%F)
方法2:反引号 (不能嵌套)
ctime=`date +%F`
# ctime=$(date +%F)
# echo $ctime
2020-09-24
# sctime=`date +%F`
# echo $sctime
2020-09-24
#
# touch $(date +%F).txt
# sg=zhanghuayou
# echo $sg
zhanghuayou
# echo $sg1
(注:该行输出为空)
# echo ==${sg}==1
zhanghuayou1
#
删除/bak目录下七天前的备份文件
find /bak -type f -mtime +7 -name “*.tar.gz” -exec rm -rf {} ;
脚本名字:
backup_log.sh
命令的嵌套
# which mkdir
/usr/bin/mkdir
# rpm -qf /usr/bin/mkdir
coreutils-8.30-6.el8_1.1.x86_64
# softname=$(rpm -qf( ) 好,可以嵌套)
# echo $softname
coreutils-8.30-6.el8_1.1.x86_64
# softname2=`rpm -qf `which mkdir``
rpm:未给出要查询的参数
mkdir: 缺少操作数
请尝试执行 “mkdir --help” 来获取更多信息。
#
编写一个脚本实现备份/var/log目录下的所有文件到/bak目录下,要求文件名是包含当天日期,精确到秒,文件名例如:2013-6-6-2_30_20-log==.tar.gz==。同时要求删除/bak目录下七天前的备份文件,只保留最近7天的文件。
通过文件名知道使用tar命令,而不是cp
# mkdir /lianxi/9_25
# cd /lianxi/9_25
# vim backup_log.sh
#!/bin/bash
#获得当前的时间,精确到秒
ctime=$(date +%Y%m%d%H%M%S)
#备份
mkdir -p /bak
tar czf /bak/${ctime}-log.tar.gz /var/log
#删除7天前的备份文件,只保留最近的7天内的文件
find /bak -type f -mtime +7 -name “*log.tar.gz” -exec rm -rf {} ;
怎么验证删除7天前的文件?
答:调时间
设置时间 -s
# date
2020年 09月 25日 星期五 09:53:18 CST
# date -s ‘2020-10-10’ (注:调时间)
2020年 10月 10日 星期六 00:00:00 CST
#
# date -s ‘2020-10-10 9:53:00’ (注:指定小时分钟秒)
2020年 10月 10日 星期六 09:53:00 CST
#
# date -s ‘2020-9-25 9:55:00’
2020年 09月 25日 星期五 09:55:00 CST
#
# cal 看日历 calendar(日历)
# cal 2020 看2020年日历
- 感谢你赐予我前进的力量