Linux文件自动备份和监控
目录
一、概述
Linux文件自动备份和监控,更好统一监控管理,使用cronsun+rsync+BT面板,适用于多节点统一管理。
二、功能
- Cronsun:统一调度,功能类似crontab
- rsync:用于同步文件(可以是其它命令scp,ftp等工具)
- bt面板:用于硬件资源监控和文件管理,在备份服务器上部署
三、准备工作
- 生产环境建议Cronsun和BT面板分开部署,系统版本Centos7.6 或者Centos7以上版本
- cronsun相关下载https://pan.baidu.com/s/1BxPbJxQHB_xDU-P4LzcqjQ 提取码: 89mu
四、部署Cronsun
部署Cronsun时,按以下安装顺序
4.1 安装mongodb数据库
4.1.1 解压mongodb
# 解压mongodb-linux-x86_64-4.0.2.tgz到/usr/local/目录下
tar -zxvf mongodb-linux-x86_64-4.0.2.tgz -C /usr/local/
4.1.2 mongodb配置
# 创建数据目录和日志目录
mkdir /usr/local/mongodb/{data,log}
# 创建配置文件
vim /etc/mongodb.conf (添加以下内容)
# mongodb config
dbpath=/usr/local/mongodb/data/db
logpath=/usr/local/mongodb/logs/mongo.log
bind_ip=0.0.0.0
logappend=true
fork=true
4.1.3 启动mongodb服务
nohup /usr/local/mongodb/bin/mongod -f /etc/mongodb.conf > /dev/null 2>&1 &
执行netstat -antp |grep mongod 显示如下图,表示mongodb服务启动成功
4.1.4 配置mongodb服务开机自启
# 给rc.local 加执行权限
chmod +x /etc/rc.local
# 添加mongodb服务启动
vim /etc/rc.local
nohup /usr/local/mongodb/bin/mongod -f /etc/mongodb.conf > /dev/null 2>&1 &
4.2 安装etcd
4.2.1 解压etcd
# 解压etcd-v3.3.13-linux-amd64.tar.gz到/usr/local/目录下
tar -zxvf etcd-v3.3.13-linux-amd64.tar.gz -C /usr/local/
4.2.2 etcd配置
# 复制etcd目录下两个可执行文件etcd和etcdctl到/usr/bin/目录下
cp /usr/local/etcd/etcd /usr/bin/
cp /usr/local/etcd/etcdctl /usr/bin/
# 创建工作目录
mkdir -p /var/lib/etcd
mkdir -p /etc/etcd
vim /etc/etcd/etcd.conf (添加以下内容)
#[member]
ETCD_NAME=default
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"
4.2.3 启动etcd服务
# 配置服务
vim /usr/lib/systemd/system/etcd.service (添加以下内容)
[Unit]
Description=Etcd Server
After=network.target
[Service]
Type=simple
WorkingDirectory=/var/lib/etcd/
EnvironmentFile=/etc/etcd/etcd.conf
ExecStart=/usr/bin/etcd
[Install]
WantedBy=multi-user.target
# 启动服务
systemctl daemon-reload
systemctl enable etcd.service
systemctl start etcd.service
4.2.4 etcd服务测试
etcdctl cluster-health
出现如下结果,表示成功
4.3 安装cronsun
4.3.1 解压cronsun
# 解压cronsun-v0.3.5-linux-amd64.zip到/usr/local/目录下
unzip -d /usr/local/cronsun-v0.3.5-linux-amd64.zip
4.3.2 启动cronsun服务
# 启动cronsun web 服务
nohup /usr/local/cronsun/cronweb -conf /usr/local/cronsun/conf/base.json > /dev/null 2>&1 &
# 启动cronsun web 服务
nohup /usr/local/cronsun/cronnode -conf /usr/local/cronsun/conf/base.json > /dev/null 2>&1 &
显示如下结果,表示服务启动成功
http://x.x.x.x:7079/ui/ 默认用户密码: admin@admin.com / admin
4.4 cronsun节点服务安装
在需要被管理的服务器上执行如下操作
4.4.1 解压cronsun
# 解压cronsun-v0.3.5-linux-amd64.zip到/usr/local/目录下
unzip -d /usr/local/cronsun-v0.3.5-linux-amd64.zip
4.4.2 cronsun配置
# 配置db.json
vim /usr/local/cronsun/conf/db.json
"Hosts": [
"192.168.0.119:27017" # 改为mongodb监听的ip和端口
# 配置etcd.json
"Endpoints":[
"http://192.168.0.119:2379" # 改为etcd监听的ip和端口
],
4.4.3 启动cronsun节点服务
nohup /usr/local/cronsun/cronnode -conf /usr/local/cronsun/conf/base.json > /dev/null 2>&1 &
4.5 部署cronsun结束
后期再写cronsun的管理
五、部署BT面板
部署说明:https://www.bt.cn/bbs/thread-19376-1-1.html
六、参考备份脚本
#!/bin/bash
#
#--------------------------------------------------------
# Filename: test-data-backup.sh
# Date: 2020-10-20
# Fun: backup test data
#--------------------------------------------------------
#
work_dir="/storage/test"
log_dir="${work_dir}/script/logs"
src_ip1="192.168.1.3"
#jenkins
src_ip2="192.168.1.2"
src_user="root"
savenum=2
# rsync svn
function rsyncd-svn(){
src_dir="/opt/backup/svn/"
dst_dir="${work_dir}/svn/"
log="${log_dir}/svn-rsync.log"
__echo_info "start rsync svn data." >>$log
rsync -auzv --delete -e ssh root@$src_ip1:$src_dir $dst_dir >>$log || __echo_fail "rsync svn failed!"
__echo_info "end rsync svn data." >>$log
}
# rsync gitlab
function rsyncd-gitlab(){
src_dir="/backup/gitlab/"
dst_dir="${work_dir}/gitlab/"
log="${log_dir}/gitlab-rsync.log"
__echo_info "start rsync gitlab data." >>$log
rsync -auzv --delete -e ssh root@$src_ip1:$src_dir $dst_dir >>$log || __echo_fail "rsync gitlab failed!"
__echo_info "end rsync gitlab data." >>$log
}
#fun echo log
function __echo_fail(){
echo "`date +'%F %T'` - [fail]: $*"
exit 1
}
function __echo_warn(){
echo "`date +'%F %T'` - [warn]: $*"
}
function __echo_info(){
echo "`date +'%F %T'` - [info]: $*"
}
# main
function main(){
case "$1" in
rsvn)
rsyncd-svn
;;
rgitlab)
rsyncd-gitlab
;;
all)
rsyncd-svn
sleep 3
rsyncd-gitlab
;;
*)
echo $"Usage: $0 {rsvn|rgitlab|all}"
exit 1
;;
esac
}
#
main $@