欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用rsync增量备份ECS服务器静态文件,实现容灾

程序员文章站 2022-04-09 22:50:21
...

 

目录

静态文件容灾_定时增量同步

1. 环境

2. sshpass

2.1. 应用范围

2.2. 安装

3. rsync

3.1. 应用范围

3.2. 安装

4. crontab

4.1. 应用范围

4.2. 安装

4.3. 定时任务表达式

4.4. 相关命令

5. 同步录音文件脚本

5.1. 命令详解

6. 停止同步脚本

7. 创建定时任务

8. 运维方案

运维


静态文件容灾_定时增量同步

1. 环境

服务器

IP地址

用户名

密码

端口

文件路径

目标服务器ECS

ECS(公)

ECS (私)

my

MYcomm

7022

/data/rec/

本地服务器

 

root

aaa@qq.com

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' aaa@qq.com外网ip:/data/rec/ /data/rec/

# 记录结束时间
echo `date '+%Y-%m-%d %H:%M:%S'`" 备份音频文件完成!" >> $DIR/$LOGDIR/$LOGNAME | sudo sh;

exit 0

 

使用rsync增量备份ECS服务器静态文件,实现容灾

 

给脚本加权限

# chmod 777 /data/shell/taskBackupMp3.sh

5.1. 命令详解

sshpass -p password rsync -avz --compress --recursive --bwlimit=3000  '-e ssh -p 7022' aaa@qq.com***:/data/rec/ /data/rec/

 

命令

解释

-p password

目标服务器密码,特殊字符需要转译

rsync -avz

增量同步

--compress

在传输文件时进行压缩处理

--recursive

对子目录以递归模式处理

--bwlimit=3000

限制带宽,3000*8=24m

'-e ssh -p 7022'

指定端口号7022

aaa@qq.com外网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

使用rsync增量备份ECS服务器静态文件,实现容灾

 

给脚本加权限

# 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

 

使用rsync增量备份ECS服务器静态文件,实现容灾

重启服务

/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

 

运维

  1. 每周一查看本地服务器磁盘空间是否充足,达到80%时,建议增加磁盘,或将备份文件迁到新的挂载点
  2. 定时查看cpu,保证free充足,rsync同步会消耗大量内存,如free占满,清理buff/cache
  3. 查看日志文件,根据日志判断任务是否正常执行