Ubuntu20.04通过rsync和inotify实现定时备份与实时备份

通过rsync和inotify实现定时备份与实时备份。

为了避免主服务单点故障,可以将数据备份到远程备份机器。可以使用rsync工具同步Jenkins home到远程,可以利用rsync工具的 “–exclude-from=FILE”功能,定制一个exclude文件,过滤掉无需备份的数据。

实例拓扑图

在这里插入图片描述

基础配置:(两台都要做 更改源为阿里源)

cat > /etc/apt/sources.list <<'EOF'
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted   #优先检索focal的main和restricted组件。
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted
deb http://mirrors.aliyun.com/ubuntu/ focal universe
deb http://mirrors.aliyun.com/ubuntu/ focal-updates universe
deb http://mirrors.aliyun.com/ubuntu/ focal multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu focal-security main restricted
deb http://mirrors.aliyun.com/ubuntu focal-security universe
deb http://mirrors.aliyun.com/ubuntu focal-security multiverse
EOF

更新源

apt-get update

一、备份服务器操作(backup服务器)(10.10.201.156上)

备份服务器:主服务器或主机文件将需要备份的文件同步到此服务器上,即从WEB服务器上同步过来进行备份。

1.1安装rsync
sudo apt-get install rsync

ubuntu 20.04 默认已经安装

1.2修改/etc/dault/rsync文件
sudo vim /etc/default/rsync

修改如下部分:

RSYNC_ENABLE=true(默认为false)
1.3方便管理rsync配置文件,新建文件夹rsync
sudo mkdir -p /etc/rsync/
1.4建立密码文件rsync.secrets

密码文件是双机同步时认证的关键,两机密码需要相同。

1.建立密码文件
vim /etc/rsync/rsyncd.secrets

如下ubuntu是用户名 123456是密码

ubuntu:123456

保存退出

2.赋予权限
chmod 600 /etc/rsync/rsyncd.secrets
1.5建立文件存储的目录

备份到备份服务器的文件 存储的目录 (路径要和下面配置文件中定义的一样 我的存储位置是/var/www/pub

mkdir -p /var/www/pub
1.6拷贝文件rsyncd.conf,并自定义修改内容
1.拷贝rsyncd.conf 模板文件到/etc/rsyncd.conf
cp /usr/share/doc/rsync/examples/rsyncd.conf /etc/rsyncd.conf
2.编辑配置文件
vim /etc/rsyncd.conf

如下

# 日志文件路径
log file=/var/log/rsyncd
# pid文件
pid file=/var/run/rsyncd.pid
# 模块名称(重要)
[www-data]
comment = public archive
# 备份文件的存储路径,需要确保存在(重要) 和上面1.5建立的一样
path = /var/www/pub
use chroot = yes
# 最大连接数10个
# max connections=10
# lock文件
lock file = /var/lock/rsyncd
# 不仅读也要写权限
read only = no
list = yes
# uid与pid非必要情况可设置为www-data
uid = root
pid = root
# 用户名称
auth users = ubuntu
# 指定同步校验用户时的密码文件
fake super = yes
# 密码文件
secrets file = /etc/rsync/rsyncd.secrets
strict modes = yes
# 指定主服务器ip
hosts allow = 10.10.201.155
# 是否忽略错误
ignore errors = no
# 是否忽略非可读的
ignore nonreadable = yes
# 日志转移
transfer logging = yes
# 日志输出格式
log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.
# 最大响应时间
timeout = 600
refuse options = checksum dry-run
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
1.7启动服务

从源文件启动服务

/etc/init.d/rsync restart

查看服务状态

/etc/init.d/rsync status

或者
从系统服务启动服务

systemctl restart rsync

查看服务状态

systemctl status rsync

二、主服务器配置(WEB服务器)(10.10.201.155上)

主服务器:指重要文件的原件在该服务器上。

2.1安装rsync

sudo apt-get install rsync

2.2修改/etc/dault/rsync文件

sudo vim /etc/default/rsync

修改如下部分:

RSYNC_ENABLE=true(默认为false)

2.3方便管理rsync配置文件,新建文件夹rsync

sudo mkdir -p /etc/rsync/

2.4建立密码文件rsync.secrets

密码文件是双机同步时认证的关键,两机密码需要相同(这里只需要密码就行)

1.创建密码文件
vi /etc/rsync/rsyncd.secrets

如下

123456

保存退出

2.赋予权限
chmod 600 /etc/rsync/rsyncd.secrets
2.5验证主从服务器的连接状态
rsync -vzrtopg --progress ubuntu@10.10.201.156::www-data --password-file=/etc/rsync/rsyncd.secrets

解释一下各个参数的含义:
ubuntu : 在备份服务器上设置的用户名
10.10.201.156 : 备份服务器ip www-data : 备份服务器10.10.201.156中rsyncd.conf中模块名称

2.6测试数据备份效果

将WEB服务器(10.10.201.155)上的文件备份到备份服务器(10.10.201.156)上

1.建立测试用的目录(需要备份的文件 例如nginx的配置文件)
mkdir -p /etc/nginx
2.建立一些文件
touch /etc/nginx/{1,2,3,4}
3.执行备份文件的操作
rsync -avzPt --delete /etc/nginx/ ubuntu@10.10.201.156::www-data --password-file=/etc/rsync/rsyncd.secrets

解释一下各个参数的含义:
/etc/nginx/ : 需要备份的文件的存储路径
ubuntu: 在备份服务器上设置的用户名
10.10.201.156 : 备份服务器ip
www-data : 备份服务器中rsyncd.conf中模块名称

总结来说:通过rsync将主web服务器/etc/nginx/路径下的所有文件备份到用户名为ubuntu
ip地址为10.10.201.156的备份服务器,里面的rsyncd.conf文件中的www-data模块下的path
(也就是/var/www/pub)指向路径里面。
如果/etc/nginx后面不加 / 就会将nginx文件夹整个保存到/var/www/pub下。如下

rsync -avzPt --delete /etc/nginx www-data@10.10.201.156::www-data --password-file=/etc/rsync/rsyncd.secrets

三、定时备份

3.1选择命令编辑方式

crontab -e

选择3

3.2输入定时命令

在最后一行添加如下 后 保存提出

0 5 * * * rsync -avzPt --delete /etc/nginx/ www-data@10.10.201.156::www-data --password-file=/etc/rsync/rsyncd.secrets

解释一下各个参数的含义:
0 :指分钟 5 :指小时 即在每天5点00分执行该备份命令。
下面为每5分钟运行一次
*/5 * * * * rsync -avzPt --delete /etc/nginx/ ubuntu@10.10.201.156::www-data --password-file=/etc/rsync/rsyncd.secrets

四、实时备份

(只要WEB服务器上监控的目录 /etc/nginx 有变化 就同步到backup备份服务器上 包括添加 修改 删除等)

4.1安装inotify web服务器上(10.10.201.155上)

安装

apt-get install inotify-tools

安装完成后,inotifywait默认路径为/usr/bin/inotifywait

4.2创建脚本

vim /etc/rsync/rsync.init.sh

#!/bin/bash
/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib /etc/rsync/temp/ | while read files
do
rsync -avzPt --delete --password-file=/etc/rsync/rsyncd.secrets /etc/rsync/temp/ www-data@192.168.27.131::www-data
echo "{files} was rsynced" >> /temp/rsync.log 2>&1
 done
EOF

解释一下各个参数的含义:
#!/bin/bash : 脚本文件必备
/usr/bin/inotifywait : inotifywait默认路径
modify,delete,create,attrib : 修改,删除,新建,更改格式(对文件操作)
/etc/nginx/ : 监听的文件路径
while read files : 文件被读取时
echo “{files} was rsynced” >> /temp/rsync.log 2>&1 : 日志信息保存

4.3修改脚本权限

chmod 755 /etc/rsync/rsync.init.sh

4.4设置脚本开机自启

1.先查看rc-local 是否启动
systemctl status rc-local.service
2. 启动服务
systemctl start rc-local.service
3.重启服务
systemctl restart rc-local 
4.添加开启启动 rc-local.service
systemctl enable  rc-local.service
4.添加rc-local.service软连接
ln -sf /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service
5.编辑rc-local.service
vim /etc/systemd/system/rc-local.service

最后一行 添加如下

[Install]
WantedBy=multi-user.target
Alias=rc-local.service

保存退出

4.5创建rc.local文件并赋权

1.编辑文件
vim /etc/rc.local

如下

#!/bin/bash
/bin/bash /etc/rsync/rsync.init.sh > /dev/null 2>&1 &
exit 0
2.赋予权限
chmod 755 /etc/rc.local

4.6重新加载服务

1.刷新
systemctl daemon-reload
2.查看服务状态
systemctl status rc-local.service

4.7测试

web服务器(10.10.201.155)建立几个文件如下

1.进入WEB服务器的监控的目录
cd /etc/nginx
2.建立文件
touch 1
touch 12
touch 123
touch 1234

备份服务器(10.10.201.156)去查看

1.进入备份文件的目录
cd /var/www/pub

2.查看文件 (已经实时备份过来了)

ls
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值