【自动化备份全网服务器数据项目】

自动化备份全网服务器数据平台

自动化备份全网服务器数据平台

项目说明

概述

  • 该项目共分为2个子项目,由环境搭建和实施备份两部分组成
  • 该项目旨在复习巩固系统服务部署使用、shell编程等知识,旨在让学生增加知识面,提高项目实习经历,充实简历

项目组织方式及时间

  • 时间:建议一周内完成所有的项目搭建、压力测试、问题总结
  • 方式:通过VmWare17虚拟机实现平台搭建

项目背景知识

总体需求

  • 企业里有一台Web服务器,里面的数据很重要,但是如果硬盘坏了数据就会丢失,现在领导要求把数据做备份,这样Web服务器数据丢失在可以进行恢复
  • 要求如下:
    • 每天00点整在Web服务器上按日期打包备份系统配置文件、网站程序目录及访问日志文件
    • 通过rsync命令推送到备份服务器上保存
    • 备份服务器定时清除旧记录
    • 搭建邮件告警平台

备份需求

  • 所有服务器的备份目录必须都为/backup。

  • 要备份的系统配置文件包括但不限于:

    • 定时任务服务的配置文件(/var/spool/cron/root) (适合Web和NFS服务器)。

    • 开机自启动的配置文件(/etc/rc.local) (适合Web和NFS服务器)。

    • 日常脚本的目录 (/server/scripts)。

  • Web服务器要求

    • Web站点目录假定为/var/html/www,如果没有,可以先模拟创建。
    • Web服务器访问日志路径假定为/app/logs,如果没有,可以先模拟创建。
    • Web服务器本地保留打包后的7天备份数据即可(本地留存不能多于7天,因为数据太多硬盘会满)。
  • 备份服务器要求

    • 保留最近7天所有备份数据,保留6个月内每周一的所有数据副本。
    • 要按照备份数据服务器内网IP为目录名称,备份的文件按照时间、名称为文件名称。
    • 需要确保备份的数据尽量完整准确,在备份服务器上对备份的数据是否完整进行检查。
    • 备份服务器每天早晨8:00把备份成功或失败结果信息发送到系统管理员邮箱里。
服务器说明 备份目录 目录说明 备注
all server /backup 备份目录 统一服务器本地备份目录,便于管理
all server /var/spool/cron/root 定时任务服务配置文件 系统配置文件
all server /etc/rc.local 开机自启动配置文件 系统配置文件
all server /server/scripts 日常脚本目录 统一服务器本地脚本目录,便于管理
Web server /var/www/html web服务器站点目录 mkdir -p /var/www/html
Web server /app/logs web服务器访问日志路径 mkdir -p /app/logs

项目环境

项目拓扑结构

软硬件环境清单

  • 已知3台服务器主机名分别为web01、backup、nfs01,主机信息建下表。
主机名 IP地址 硬件 软件
web01 192.168.83.200 cpu:1颗2核 内 存:2GB HDD:20GB 网 络:NAT VmWare17 Centos7.9 nginx1.20 rsync3.1.2
nfs01 192.168.83.201 cpu:1颗2核 内 存:2GB HDD:20GB 网 络:NAT VmWare17 Centos7.9 nfs rpcbind rsync3.1.2
backup 192.168.83.202 cpu:1颗2核 内 存:2GB HDD:20GB 网 络:NAT VmWare17 Centos7.9 mailx12.5 rsync3.1.2

实施步骤

第一步:环境搭建

1、web01服务器环境搭建

1.1 关闭防火墙和selinux,设置主机名

bash 复制代码
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@localhost ~]# hostnamectl set-hostname web01
[root@localhost ~]# reboot

1.2 设置静态ip

bash 复制代码
[root@web01 ~]# nmtui
编辑连接 -> ens32 -> 修改内容 -> 确定 -> 返回 -> 退出
[root@web01 ~]# nmcli c up ens32     # 连接网络
[root@web01 ~]# nmcli c reload       # 登录网络连接

# 安装所有软件
[root@web01 ~]# yum install vim  tree tar net-tools rsync nfs-utils -y

1.3 安装所有软件

bash 复制代码
# 安装所有软件
[root@web01 ~]# yum install vim  tree tar net-tools rsync nfs-utils -y

1.4 部署网站示例

bash 复制代码
[root@web01 ~]# wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
[root@web01 ~]# yum  makecac
[root@web01 ~]# yum  install  nginx  -y
[root@web01 ~]# mkdir  -p  /www/sczl
[root@web01 ~]# cd  /www/sczl
# 使用xftp将web源文件上传至/www/sczl,如图:

1.5 修改nginx配置文件

bash 复制代码
# 修改nginx配置文件

[root@web01 ~]# vim  /etc/nginx/nginx.conf     # 修改第42行之后的路径
42         root         /www/sczl;
[root@web01 ~]# systemctl start nginx 
[root@web01 ~]# systemctl enable nginx 

# 测试:打开windows端浏览器输入服务端IP地址

2、nfs服务器环境搭建

2.1 关闭防火墙和selinux,设置主机名

bash 复制代码
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# vi /etc/selinux/config
SELINUX=disabled
[root@localhost ~]# hostnamectl set-hostname nfs01
[root@localhost ~]# reboot

2.2 设置静态ip

bash 复制代码
[root@nfs01 ~]# vi  /etc/sysconfig/network-scripts/ifcfg-ens32
# Generated by dracut initrd
NAME="ens32"
DEVICE="ens32"
ONBOOT=yes
NETBOOT=yes
UUID="42fc4d6c-82c6-4cea-b683-1ad03460b5fe"
IPV6INIT=yes
BOOTPROTO=none
IPADDR="192.168.83.201"    # ip
NETMASK="255.255.255.0"
GATEWAY="192.168.83.2"
DNS1="114.114.114.114"
TYPE=Ethernet

[root@nfs01 ~]# systemctl restart network

[root@nfs01 ~]# yum install vim  tree tar net-tools rsync -y

2.3 安装所需软件

bash 复制代码
[root@nfs01 ~]# yum install vim  tree tar net-tools rsync -y

2.4 部署共享存储,nfs01为服务端,web01为客户端

bash 复制代码
# nfs01服务端操作
[root@nfs01 ~]# yum  install  rpcbind  -y
[root@nfs01 ~]# yum  install  nfs-utils  -y
[root@nfs01 ~]# mkdir  /nfsfile
[root@nfs01 ~]# echo  "welcome to www.dyy.com" > /nfsfile/readme
[root@nfs01 ~]# chmod  -Rf  777  /nfsfile
[root@nfs01 ~]# vim  /etc/exports    # 编辑nfs配置文件,添加如下内容
/nfsfile        192.168.83.0/24(rw,sync,all_squash)

[root@nfs01 ~]# systemctl start  rpcbind
[root@nfs01 ~]# systemctl enable  rpcbind
[root@nfs01 ~]# systemctl start  nfs-server
[root@nfs01 ~]# systemctl enable  nfs-server
bash 复制代码
# web01客户端操作:
[root@web01 ~]# showmount  -e  192.168.83.201	 # 检测
Export list for 192.168.83.201:
/nfsfile 192.168.83.0/24
[root@web01 ~]# mkdir  /web_nfs
[root@web01 ~]# mount -t nfs  192.168.83.201:/nfsfile  /web_nfs
[root@web01 ~]# cd  /web_nfs
[root@web01 web_nfs]# ls
readme
[root@web01 web_nfs]# cd  ~
[root@web01 web_nfs]# vim  /etc/fstab       # 永久挂载
192.168.83.201:/nfsfile   /web_nfs   nfs    defaults    0    0

[root@web01 web_nfs]# mount  -a
[root@web01 web_nfs]# df  -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 900M     0  900M   0% /dev
tmpfs                    910M     0  910M   0% /dev/shm
tmpfs                    910M  9.4M  901M   2% /run
tmpfs                    910M     0  910M   0% /sys/fs/cgroup
/dev/sda3                 17G  1.9G   16G  12% /
/dev/sda1               1014M  144M  871M  15% /boot
tmpfs                    182M     0  182M   0% /run/user/0
192.168.83.201:/nfsfile   17G  1.6G   16G   9% /web_nfs

3、backup服务器环境搭建

3.1 关闭防火墙和selinux,设置主机名

bash 复制代码
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# vi /etc/selinux/config
SELINUX=disabled
[root@localhost ~]# hostnamectl set-hostname backup
[root@localhost ~]# reboot

3.2 设置静态ip

bash 复制代码
[root@backup ~]# vi  /etc/sysconfig/network-scripts/ifcfg-ens32
# Generated by dracut initrd
NAME="ens32"
DEVICE="ens32"
ONBOOT=yes
NETBOOT=yes
UUID="2deb6621-2f08-4460-a97b-15b50c47221d"
IPV6INIT=yes
BOOTPROTO=none
IPADDR="192.168.83.202"     # ip
NETMASK="255.255.255.0"
GATEWAY="192.168.83.2"
DNS1="114.114.114.114"
TYPE=Ethernet

[root@backup ~]# systemctl restart network

[root@backup ~]# yum install vim  tree tar net-tools rsync mailx -y

3.3 安装所需软件

bash 复制代码
[root@backup ~]# yum install vim  tree tar net-tools rsync mailx -y

3.4 修改rsync配置文件

bash 复制代码
# 注意:配置文件中下列注释要删除 
[root@backup ~]# vim /etc/rsyncd.conf
uid = rsync							# 用户
gid = rsync							# 组
use chroot = no						# 程序安全设置
max connections = 200				# 客户端连接数
timeout = 300						# 超时时间
pid file = /var/run/rsyncd.pid		# 进程号文件位置
lock file = /var/run/rsync.lock		# 进程锁
log file = /var/log/rsyncd.log		# 日志文件
fake super = yes 					# 无需rsync以root身份运行,允许接受数据

[backup]
        path = /backup						# 目录
        ignore errors						# 有错误时忽略
        read only = false					# 可读可写
        list = false			            # 阻止远程列表
        hosts allow = 192.168.83.0/24		# 允许IP
        hosts deny = 0.0.0.0/32				# 禁止IP
        auth users = rsync					# 用于认证的账户
        secrets file = /etc/rsync.password	# 存放用户和密码的文件

3.5 根据配置文件设置

bash 复制代码
# 创建rsync账户及共享目录并修改目录属主为rsync
[root@backup ~]# useradd -M -s /sbin/nologin rsync
[root@backup ~]# mkdir /backup
[root@backup ~]# chown -R rsync /backup

# 开机并启动服务
[root@backup ~]# systemctl enable --now rsyncd
[root@backup ~]# ps -ef | grep rsync
root  1333   1  0 15:09 ?      00:00:00 /usr/bin/rsync --daemon --no-detach
root  1335   1261  0 15:09 pts/0  00:00:00 grep --color=auto rsync

# 创建rsync虚拟账户名和密码,并赋予密码文件600权限
[root@backup ~]# echo "rsync:rsync123" > /etc/rsync.password
[root@backup ~]# chmod 600 /etc/rsync.password

第二步:配置备份脚本

1、配置web01客户端本地备份脚本

1.1 web01客户端主机需要打包备份的内容:

bash 复制代码
[root@web01 nginx]# tree  /var/log/nginx   # 日志
/var/log/nginx
├── access.log
└── error.log
0 directories, 2 files

[root@web01 nginx]# tree /www      # 网站主数据
/www
├── sczl
│   ├── css
│   │   ├── animate.min.css
│   │   ├── common.min.css
....................................

# 以及定时任务和备份脚本源文件 :/var/spool/cron/root、/etc/rc.local、/server/scripts

1.2 编写备份web01服务器的脚本

bash 复制代码
[root@web01 ~]# mkdir  /backup
[root@web01 ~]# mkdir -p  /server/scripts
bash 复制代码
[root@web01 ~]# vim  /server/scripts/backup.sh

#!/bin/bash
# Date:2025-8-12
# Author:xiaoxiong
# Mail:110@qq.com
# Function: 备份web01服务器/var/log/nginx,/www 
# Version: V1.0

# 定义时间方式  
Date=$(date +%F_Week0%w)            
# 获取IP
Host_IP=$(ifconfig ens32 | awk '/inet / {print $2}')  
# 本地备份路径
Backup_Dir="/backup/"             
# 备份服务器的IP
Backup_Server_IP=192.168.83.202   

# 创建指定目录和IP的目录
[ ! -d $Backup_Dir/$Host_IP ] && mkdir -p $Backup_Dir/$Host_IP

# 输出提示信息
echo ${Date} ${Host_IP} start backup ......

# 按要求打包备份所有本地重要文件
cd / &&\
tar cf ${Backup_Dir}${Host_IP}/sys_file_bak_${Date}_tar.gz var/spool/cron &&\
tar rf ${Backup_Dir}${Host_IP}/sys_file_bak_${Date}_tar.gz etc/rc.d/rc.local &&\
tar rf ${Backup_Dir}${Host_IP}/sys_file_bak_${Date}_tar.gz server/scripts/ &&\
tar zcf $Backup_Dir$Host_IP/www_${Date}_tar.gz www/ &&\
tar zcf $Backup_Dir$Host_IP/nginx_logs_${Date}_tar.gz var/log/nginx/ &&\

# 给所有备份的压缩文件建立指纹,放入指纹库flag,后面会验证完整性
find ${Backup_Dir:-/tmp} -type f -name "*${Date}_tar.gz" |xargs md5sum >$Backup_Dir/$Host_IP/${Date}.flag

# 把备份推送到备份服务器
rsync -az $Backup_Dir rsync@${Backup_Server_IP}::backup --password-file=/etc/rsync.password

# 删除7天以前的所有本地备份数据
find ${Backup_Dir:-/tmp} -type f -name "*.tar.gz" -a -name "*flag*" -mtime +7|xargs rm -f

echo "Local backup successful, the backup files have been pushed to the backup server"
bash 复制代码
[root@web01 ~]# vim /etc/rsync.password     # 客户端建立认证的文件密码如下:
rsync123                                    # 注意:只写密码

[root@web01 ~]# chmod 600 /etc/rsync.password   # 密码认证文件必须为600

1.3 测试

bash 复制代码
[root@web01 ~]# bash  /server/scripts/backup.sh 
2025-08-12_Week03 192.168.83.200 start backup ......
Local backup successful, the backup files have been pushed to the backup server

# 在backup服务器中可以看到推送的数据
[root@backup ~]# ls  /backup/192.168.83.200/
2025-08-12_Week03.flag  nginx_logs_2025-08-12_Week03_tar.gz  sys_file_bak_2025-08-12_Week03_tar.gz  www_2025-08-12_Week03_tar.gz
bash 复制代码
@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1656) [sender=3.1.2]

2、配置nfs01客户端本地备份脚本

1.1 nfs01客户端主机需要打包备份的内容:

bash 复制代码
[root@nfs01 ~]# tree  /nfsfile/       # 共享目录数据
/nfsfile/
└── readme

# 以及/var/log/message文件、mount  -l  挂载信息

1.2 编写备份nfs01服务器的脚本

bash 复制代码
[root@nfs01 ~]# mkdir  /backup
[root@nfs01 ~]# mkdir -p  /server/scripts
bash 复制代码
[root@nfs01 ~]# vim  /server/scripts/backup.sh

#!/bin/bash
# Date:2025-8-12
# Author:xiaoxiong
# Mail:120@qq.com
# Function: 配置nfs01客户端本地备份/nfsfile/,/var/log/message,mount  -l  挂载信息
# Version: V1.0

# 定义时间方式
Date=$(date +%F_Week0%w)            
# 获取IP
Host_IP=$(ifconfig ens32 | awk '/inet / {print $2}')  
# 本地备份路径
Backup_Dir="/backup/"             
# 备份服务器的IP
Backup_Server_IP=192.168.83.202   
# 挂载日志
mount -l > /var/log/mount.log     

# 创建指定目录和IP的目录
[ ! -d $Backup_Dir/$Host_IP ] && mkdir -p $Backup_Dir/$Host_IP

# 输出提示信息
echo ${Date} ${Host_IP} start backup ......

# 按要求打包备份所有本地重要文件
cd / &&\
tar cf ${Backup_Dir}${Host_IP}/sys_file_bak_${Date}_tar.gz var/spool/cron &&\
tar rf ${Backup_Dir}${Host_IP}/sys_file_bak_${Date}_tar.gz etc/rc.d/rc.local &&\
tar rf ${Backup_Dir}${Host_IP}/sys_file_bak_${Date}_tar.gz server/scripts/ &&\
tar zcf $Backup_Dir$Host_IP/nfs_${Date}_tar.gz nfsfile/ &&\
tar zcf $Backup_Dir$Host_IP/mount_logs_${Date}_tar.gz var/log/mount.log/ &&\

# 给所有备份的压缩文件建立指纹,放入指纹库flag,后面会验证完整性
find ${Backup_Dir:-/tmp} -type f -name "*${Date}_tar.gz" |xargs md5sum >$Backup_Dir/$Host_IP/${Date}.flag

# 把备份推送到备份服务器
rsync -az $Backup_Dir rsync@${Backup_Server_IP}::backup --password-file=/etc/rsync.password

# 删除7天以前的所有本地备份数据
find ${Backup_Dir:-/tmp} -type f -name "*.tar.gz" -a -name "*flag*" -mtime +7|xargs rm -f

echo "Local backup successful, the backup files have been pushed to the backup server"
bash 复制代码
[root@nfs01 ~]# vim /etc/rsync.password     # 客户端建立认证的文件密码如下:
rsync123                                    # 注意:只写密码

[root@nfs01 ~]# chmod 600 /etc/rsync.password   # 密码认证文件必须为600
[root@nfs01 ~]# ls -ld  /etc/rsync.password 
-rw-r--r-- 1 root root 9 Feb 19 16:40 /etc/rsync.password

1.3 测试

bash 复制代码
[root@nfs01 ~]# bash  /server/scripts/backup.sh 

# 在backup服务器中可以看到推送的数据
[root@backup ~]# ls  /backup/
192.168.83.200  192.168.83.201

第三步:配置定时任务

1、web01服务器配置

  • web01服务器编辑定时任务,实现每天00:00定时备份本地数据,并推送到Rsync服务器上
bash 复制代码
# 查看crond服务状态,默认已安装
[root@web01 ~]# systemctl status  crond
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2025-8-12 09:00:05 CST; 11min ago
 Main PID: 1119 (crond)
   CGroup: /system.slice/crond.service
           └─1119 /usr/sbin/crond -n
..................................................................

# 注意若未安装可执行:
[root@web01 ~]# yum  install  crontabs
bash 复制代码
# 编辑定时任务

[root@web01 ~]# crontab  -e    				# 添加:

# 实现每天00:00定时备份本地数据,并推送到Rsync服务器上
00 00 * * * /bin/sh /server/scripts/backup.sh >/dev/null 2>&1

# 若出现定时任务如下信息不用处理:
no crontab for root - using an empty one
crontab: installing new crontab

2、nfs01服务器配置

  • nfs01服务器编辑定时任务,实现每天00:00定时备份本地数据,并推送到Rsync服务器上
bash 复制代码
# 查看crond服务状态,默认已安装
[root@nfs01 ~]# systemctl status  crond
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2025-8-12 09:00:05 CST; 11min ago
 Main PID: 1119 (crond)
   CGroup: /system.slice/crond.service
           └─1119 /usr/sbin/crond -n
..................................................................

# 注意若未安装可执行:
[root@web01 ~]# yum  install  crontabs
bash 复制代码
# 编辑定时任务

[root@nfs01 ~]# crontab  -e    				# 添加:

# 实现每天00:00定时备份本地数据,并推送到Rsync服务器上
00 00 * * * /bin/sh /server/scripts/backup.sh >/dev/null 2>&1

# 若出现定时任务如下信息不用处理:
no crontab for root - using an empty one
crontab: installing new crontab

3、backup服务器配置

  • backup服务器编写脚本,实现删除180天前的所有备份数据,但保存每周一的
shell 复制代码
[root@backup ~]# mkdir -p /server/scripts
[root@backup ~]# cd /server/scripts/
[root@backup scripts]# vim /server/scripts/del_bak_data.sh

#!/bin/bash
# Date:2025-8-12
# Author:xiaoxiong
# Mail:120qq.com# Function: 删除180天前的所有备份数据,但保存每周一的
# Version: V1.0

Backup_Dir="/backup/"
# 删除7天前的压缩包和flag文件,但是每周一的不删
find ${Backup_Dir:-/tmp} -type f  -name "*tar.gz*" ! -name "*Week01*" -o -name "*flag*" -mtime +7|xargs rm -f

# 删除180天前的所有压缩包和flag文件
find ${Backup_Dir:-/tmp} -type f -name "*tar.gz*" -name "*flag*" -mtime +180|xargs rm -f

# 注意:Backup_Dir:-/tmp表示检查环境变量 Backup_Dir 是否已设置。如果设置了,就使用其值;如果没有设置,就使用默认值 /tmp
  • backup服务器配置定时任务,实现服务端180天前数据自动删除
bash 复制代码
[root@backup ~]# crontab -e

# crond-id-003:data backup
00 00 * * * /bin/sh /server/scripts/del_bak_data.sh >/dev/null 2>&1

第四步:数据传输完整性验证与监控告警

1、验证数据完整性

  • backup服务端针对客户端备份时的md5指纹数据,利用MD5命令进行验证,完成数据传输过程完整性验证。
shell 复制代码
[root@backup scripts]# vim send_mail.sh 

#!/bin/bash
# Date:2025-8-12
# Author:xiaoxiong
# Mail:119@qq.com
# Function: Verify the integrity of backup files
# Version: V1.0


Date=$(date +%F_Week0%w)
Backup_Dir="/backup/"
# 定时检查备份结果的文件
Check_Log="/tmp/bak.log_$(date +%F)"    
# 管理员邮箱
Admin_Mail=11972*****@qq.com    

find $Backup_Dir -type f -name "${Date}.flag"|xargs md5sum -c >> $Check_Log


if [ -n "cat $Check_Log" ]
then
    mail -s "$Date backup data info" $Admin_Mail < $Check_Log
else
   # 如果结果文件不存在,日志信息变化,报错
    echo "$Date backup data error,pls check it." > $Check_Log 
    mail -s "$Date backup data info" $Admin_Mail < $Check_Log
fi
cp $Check_Log{,.ori} && > $Check_Log

2、配置邮件告警

2.1 安装邮件服务

bash 复制代码
[root@backup ~]# yum  install  mailx  -y

2.2 配置qq邮箱

2.2.1 ssl证书

bash 复制代码
[root@backup ~]# mkdir -p /root/.certs
[root@backup ~]# cd  /root/.certs

[root@backup .certs]# echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt

[root@backup .certs]# certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt

[root@backup .certs]# certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt

[root@backup .certs]# certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qq.crt
Notice: Trust flag u is set automatically if the private key is present.

2.2.2 配置邮件服务

bash 复制代码
[root@backup .certs]# vim  /etc/mail.rc
# 最后一行后添加以下内容:

set from=1197******7@qq.com
set smtp=smtps://smtp.qq.com:465         # ssl端口默认465
set smtp-auth-user=1197******7@qq.com
set smtp-auth-password=gqb******bbach  # 授权码
set smtp-auth=login
set nss-config-dir=/root/.certs/     # 设置证书路径
set ssl-verify=ignore                # 启用加密ssl传输in

2.3 测试邮件服务

bash 复制代码
[root@backup ~]# echo  "我是小熊"  |  mail  -s  "testmail"  1197******7@qq.com

[root@backup ~]# bash /server/scripts/send_mail.sh
相关推荐
笨鸟要努力38 分钟前
Ubuntu 全盘备份
linux·运维·ubuntu
ChironW41 分钟前
Ubuntu 22.04 离线环境下完整安装 Anaconda、CUDA 12.1、NVIDIA 驱动及 cuDNN 8.9.3 教程
linux·运维·人工智能·深度学习·yolo·ubuntu
你无法关注此用户1 小时前
CentOS7搭建安全FTP服务器指南
运维·服务器
轻松Ai享生活2 小时前
linux 日志详解
linux
小白的代码日记2 小时前
Linux常用指令
linux·运维·服务器
用户7227868123442 小时前
iptables服务详解
服务器
月舞之剑3 小时前
linux离线安装nodejs
linux·node.js
维尔切3 小时前
Linux中Https配置与私有CA部署指南
linux·运维·https
key_Go4 小时前
18.WEB 服务器
服务器·前端·firefox