一、原理和说明
lsyncd官网
(一)软件说明
目的是每次只把新修改的同步,而不是全量备份。
Rsync(同步):将一个服务器的一个文件夹的内容提交到另外一个服务器的文件夹
lsyncd(差异检测并调用rsync):把差异的找出来,然后运行脚本
(二)本方法说明
采用的是推送模式,即需要备份文件的服务器(客户端)向备份服务器(服务端)推送
客户端:客户端的文件需要被备份
服务端:接收客户端的文件并保存的
(三)演示说明
以下的演示中,两台设备信息如下
注意,下面的备份目录根据自己情况调整客户端(文件需要被备份)
局域网ip:192.168.0.188
系统:debian11
备份文件夹:/aaa
服务端(存放备份文件的)
局域网ip:192.168.0.199
系统:debian11
备份文件夹:/cloud/bf_1
(四)其它说明
需要先开放对应端口,默认是873。另外注意selinux,如果搞不定就关了selinx
二、服务端配置(接收备份文件的)
服务端只需要安装rsync
1.安装rsync
apt-get install rsync
2.创建接收备份后保存的目录
目录不要直接抄
mkdir /cloud/bf_1
mkdir /cloud/bf_2
3.创建同步的账号密码
使用下面的命令直接写入,也可以vi打开后编辑
echo "rsync_backup:123456" >/etc/rsync.password && chmod 600 /etc/rsync.password
账号为:rsync_backup
密码为:123456
4.配置rsync
vi /etc/rsyncd.conf
内容如下
uid = root # linux的用户
gid = root # linux的用户组
use chroot = yes
max connections = 1024
timeout = 600
port=873 # 指定rsync端口。默认873
[backup] #备份的项目模块,如果有多个,也是这样设置
path = /cloud/bf_1/ # 备份保存的位置
read only = no
secrets file =/etc/rsync.password
auth users = rsync_backup
list = no
pid file =/var/run/rsyncd.pid
lock file =/var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors = yes
hosts allow = 192.168.0.188 #如果允许所有的IP,则使用*
5.测试并开机启动
systemctl daemon-reload && systemctl start rsync
systemctl status rsync
开机启动
systemctl enable rsync
三、客户端配置(文件需要被备份的)
需要安装rsync和sersync
(一)安装配置rsync
1.包安装
apt-get install rsync
2.配置
vi /etc/rsyncd.conf
内容如下
uid = root
gid = root
use chroot = no
max connections = 3600
pid file =/var/run/rsyncd.pid
lock file =/var/run/rsync.lock
log file = /var/log/rsyncd.log
保存后退出
3.创建访问服务端的密码(服务端那也设置过一次,这里相同,但是没有前面的账户名了)
echo "123456" >/etc/rsync.password && chmod 600 /etc/rsync.password
4.调整系统配置
echo 81920 >/proc/sys/fs/inotify/max_user_watches
echo 327678 >/proc/sys/fs/inotify/max_queued_events
5.测试(可以省略,这个是手动的命令)
如果有初始文件,手动运行一下建立初始文件
将/aaa目录下的文件保存到192.168.0.199,用rsync_backup账户登录,存到模块为backup的地方
rsync -avzP /aaa/ rsync_backup@192.168.0.199::backup --password-file=/etc/rsync.password
如果测试成功,说明rsync已经配置好了,可以手动备份了。
6.启动并开机启动或者关掉
注意,如果不是为了双向同步,客户端的这个rsync可以关掉,我这里还是设置开启。
但是不能不安装rsync,因为lsyncd也要调用rsync命令
systemctl daemon-reload && systemctl restart rsync && systemctl enable rsync
如果要关掉
systemctl daemon-reload
systemctl stop rsync && systemctl disable rsync
(二)安装配置sersync
封装了inotify-tools,所以无需再安装
1.安装lsyncd
apt-get -y install lsyncd
2.配置文件
mkdir /etc/lsyncd
vi /etc/lsyncd/lsyncd.conf
内容如下
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status",
insist = true,
statusInterval = 10
}
sync {
default.rsync,
source="/aaa",
target="rsync_backup@192.168.0.199::backup",
rsync = {
binary = "/usr/bin/rsync",
archive = true,
compress = true,
verbose = true,
--delete = true,
_extra = {"--password-file=/etc/rsync.password"}
}
}
创建日志文件
mkdir /var/log/lsyncd
vi /var/log/lsyncd/lsyncd.log
直接空白保存退出,防止程序没有权限无法新建文件
3.修改启动脚本文件
通过脚本执行状态查询具体位置(可能不同系统不一样,但是这种方法肯定能找到)
systemctl status lsyncd
装好后是这里
vi /etc/init.d/lsyncd
找到并修改这一行为上面配置的文件的地址,修改如下,保存退出
4.测试启动
刷新systemctl脚本并重新启动
systemctl daemon-reload && systemctl restart lsyncd
注意:只有在该运行之后的改动文件才会自动备份,如果有初始文件,手动同步一次即可
此时正常运行,注意:文件同步会有几秒的延迟,这也是避免不必要的资源浪费
四、其它说明
(一)一个服务端,多个客户端服务器怎么配置
服务端无需多个实例,只需要在配置文件
vi /etc/rsyncd.conf
最后添加形如如下的内容(里面的目录只是演示),保存后重启服务即可
[backup]
path = /cloud/edp_bf/
read only = no
secrets file =/etc/rsync.password
auth users = rsync_backup
list = no
pid file =/var/run/rsyncd.pid
lock file =/var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors = no
hosts allow = 192.168.0.188
[doc]
path = /var/www
read only = no
secrets file =/etc/rsync.password
auth users = rsync_backup
list = no
pid file =/var/run/rsyncd.pid
lock file =/var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors = no
hosts allow = 192.168.0.166
systemctl restart rsync
客户端的配置和上面的一致,这里不再多写一遍了,注意模块名称(就是上面的[ ]中的名称)
(二)客户端或服务端掉线
如果服务端掉线,客户端会不断访问并记录错误日志,注意排查问题
(三)报错
如果报错,在服务端
systemctl status rsync
查看具体的报错内容,这里是详细内容,然后复制错误代码查询即可
1.rsync error: error starting client-server protocol (code 5) at main.c [sender=3.1.2]
服务端需要添加客户端的ip白名单。在服务端
文章来源:https://www.toymoban.com/news/detail-491301.html
vi /etc/rsyncd.conf
在“hosts allow =”这里加上客户端ip ,然后重启软件接口文章来源地址https://www.toymoban.com/news/detail-491301.html
systemctl restart rsync
到了这里,关于Linux 文件实时备份 rsync+lsyncd的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!