目录
静态文件容灾_定时增量同步
1. 环境
服务器 | IP地址 | 用户名 | 密码 | 端口 | 文件路径 |
目标服务器ECS | ECS(公) ECS (私) | my | 7022 | /data/rec/ | |
本地服务器 | root | chinazxt@123 | 22 | /data/rec/ |
2. sshpass
https://www.cnblogs.com/kaishirenshi/p/7921308.html
2.1. 应用范围
可以在命令行直接使用密码来进行远程连接和远程拉取文件。
2.2. 安装
本地服务器安装
# vim /etc/ssh/ssh_config
# 新增或修改如果配置
StrictHostKeyChecking no
# vim /etc/ssh/sshd_config
# 新增或修改如果配置
GSSAPIAuthentication no
UseDNS no
# service sshd restart
sshpass 命令的安装:
# yum -y install sshpass
3. rsync
3.1. 应用范围
rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。
3.2. 安装
目标服务器和本地服务器都装
# yum -y install rsync
启动rsync服务
# systemctl start rsyncd.service
# systemctl enable rsyncd.service
#检查是否已经成功启动
# netstat -lnp|grep 873
4. crontab
4.1. 应用范围
用于设置周期性被执行的指令
4.2. 安装
linux应该都有crontab,没有的话可以安装一下
安装依赖
# yum install vixie-cron
安装crontab服务
# yum install crontabs
安装完以后开启crontab服务
# service crond start
查看crontab服务状态
# service crond status
加入开机自动启动:
# chkconfig –level 35 crond on
也可以用设置开机自动启动crond服务:
# chkconfig crond on
查看crontab服务是否已设置为开机启动
# ntsysv
4.3. 定时任务表达式
https://www.howtoing.com/crontab-in-linux-with-20-examples-of-cron-schedule/
4.4. 相关命令
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
/sbin/service crond status //服务状态
5. 同步录音文件脚本
本地服务器:
创建备份的文件夹/data/rec/
创建脚本/data/shell/taskBackupMp3.sh,编写内容:
# vim taskBackupMp3.sh
#!/bin/bash
DIR=/data
LOGDIR=logs
LOGNAME=taskBackupMp3.log
# 打印日志到/data/logs/taskBackupMp3.log
echo `date '+%Y-%m-%d'`"-----------------" >> $DIR/$LOGDIR/$LOGNAME | sudo sh;
# 记录开始时间
echo `date '+%Y-%m-%d %H:%M:%S'`" 备份音频文件开始!" >> $DIR/$LOGDIR/$LOGNAME | sudo sh;
# 备份任务
sshpass -p password rsync -avz --compress --recursive --bwlimit=3000 '-e ssh -p 7022' user@ECS外网ip:/data/rec/ /data/rec/
# 记录结束时间
echo `date '+%Y-%m-%d %H:%M:%S'`" 备份音频文件完成!" >> $DIR/$LOGDIR/$LOGNAME | sudo sh;
exit 0
给脚本加权限
# chmod 777 /data/shell/taskBackupMp3.sh
5.1. 命令详解
sshpass -p password rsync -avz --compress --recursive --bwlimit=3000 '-e ssh -p 7022' user@***:/data/rec/ /data/rec/
命令 | 解释 |
-p password | 目标服务器密码,特殊字符需要转译 |
rsync -avz | 增量同步 |
--compress | 在传输文件时进行压缩处理 |
--recursive | 对子目录以递归模式处理 |
--bwlimit=3000 | 限制带宽,3000*8=24m |
'-e ssh -p 7022' | 指定端口号7022 |
user@ECS外网ip:/data/rec/ /data/rec/ | 用户名@ip:目标路径 本地路径 |
6. 停止同步脚本
本地服务器:
创建脚本/data/shell/ k-taskBackupMp3.sh,编写内容:
# vim k-taskBackupMp3.sh
#!/bin/bash
processname="rsync"
# 查rsync进程
for i in `ps -ef |grep rsync |grep -v grep |awk {'print $2'}`
do
# 循环杀掉所有进程
kill -9 $i
echo "Kill $i successed."
done
给脚本加权限
# chmod 777 /data/shell/ k-taskBackupMp3.sh
7. 创建定时任务
输入命令
# crontab -e
编写需要执行的文件,文件设权限
#晚上8:30执行备份任务
30 20 * * * /bin/sh /data/shell/taskBackupMp3.sh
#早晨6:00杀rsync进程
0 6 * * * /bin/sh /data/shell/k-taskBackupMp3.sh
重启服务
/sbin/service crond restart
8. 运维方案
本地服务器
脚本存放位置
/data/shell/
录音文件位置
/data/rec/
rds数据存活位置
/data/rdsBackup/
同步录音文件脚本
/data/shell/taskBackupMp3.sh
停止同步录音文件脚本
/data/shell/k-taskBackupMp3.sh
日志文件:
同步录音文件日志:/data/logs/taskBackupMp3.log
定时任务:
#每天20:30执行录音文件备份任务
30 20 * * * /bin/sh /data/shell/taskBackupMp3.sh
#每天6:00杀rsync进程
0 6 * * * /bin/sh /data/shell/k-taskBackupMp3.sh
运维
- 每周一查看本地服务器磁盘空间是否充足,达到80%时,建议增加磁盘,或将备份文件迁到新的挂载点
- 定时查看cpu,保证free充足,rsync同步会消耗大量内存,如free占满,清理buff/cache
- 查看日志文件,根据日志判断任务是否正常执行