概述
本来想用压缩后传输的逻辑,后来觉得数据量有点大,所以就用rsync每次传差异的值就可以了。这里统一备份到集中备份服务器上。
1、服务器初始化(自动部署rsync)
这里基于蓝鲸来做服务器初始化。
2、环境准备
2.1、在fastdfs服务器部署rsync服务后配置fastdfs数据存储路径
2.2、在集中备份服务器配置rsync密码
设置权限为600。
3、rsync异地备份脚本(/data/scripts/fastdfs/rsync_fastdfs.sh)
同时设置定时任务:00 23 * * * /bin/bash /data/scripts/fastdfs/rsync_fastdfs.sh &>/dev/null
脚本如下:
#!/bin/bash
################################
#copyright by hwb
#date:2020-02-08
################################
#调用函数库
[ -f /etc/init.d/functions ] && source /etc/init.d/functions
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
#注释消息:You have mail in /var/spool/mail/root
echo "unset MAILCHECK" >> /etc/profile
source /etc/profile
#Require root to run this script.
[ $(id -u) -gt 0 ] && echo "请用root用户执行此脚本!" && exit 1
#参数定义
date=`date +"%Y-%m-%d-%H:%M:%S"`
fastdfs_ip="xx.142"
webhook='https://oapi.dingtalk.com/robot/send?access_token=18b060d781xxb30'
#报错日志记录
[ -f /tmp/install_error.log ] || touch /tmp/install_error.log
function SendMsgToDingding() {
curl $webhook -H 'Content-Type: application/json' -d "
{
'msgtype': 'text',
'text': {
'content': ' [通知] $fastdfs_ip \n $message \n 时间:$date \n '
},
'at': {
'atMobiles': [
"18825144300",
"18822212312"
],
"isAtAll": false
}
}"
}
function rsync_fastdfs(){
echo ""
echo -e "\033[33m****************************************************备份fastdfs文件*****************************************************\033[0m"
action "****开始进行fastdfs备份****" /bin/true
rsync --port=8888 -vzrtopg --progress --timeout 600 --password-file=/data/auth/.rsync.auth --delete rsync@${fastdfs_ip}::fastdfs/* /data/fastdfs/
if [ $? -eq 0 ];then
action "fastdfs备份成功!" /bin/true
message="fastdfs数据备份成功!"
SendMsgToDingding
else
action "fastdfs备份失败!" /bin/false
message="fastdfs数据备份失败,请检查!"
SendMsgToDingding
fi
echo ""
echo -e "\033[33m*************************************************已完成fastdfs文件备份**************************************************\033[0m"
echo ""
sleep 1
}
rsync_fastdfs
4、测试脚本
备份过程如下:
1)备份失败时:
钉钉消息提示如下:
2)备份成功时:
钉钉消息成功提示: