lsyncd官网
目的是每次只把新修改的同步,而不是全量备份。
Rsync(同步):将一个服务器的一个文件夹的内容提交到另外一个服务器的文件夹
lsyncd(差异检测并调用rsync):把差异的找出来,然后运行脚本
采用的是推送模式,即需要备份文件的服务器(客户端)向备份服务器(服务端)推送
客户端:客户端的文件需要被备份
服务端:接收客户端的文件并保存的
以下的演示中,两台设备信息如下
注意,下面的备份目录根据自己情况调整
客户端
局域网ip:192.168.0.188
系统:debian11
备份文件夹:/edp
服务端
局域网ip:192.168.0.199
系统:debian11
备份文件夹:/cloud/edp_bf
需要先开放对应端口,默认是873。另外注意selinux,如果搞不定就关了selinx
服务端只需要安装rsync
apt-get install rsync
目录不要直接抄
mkdir /cloud/edp_bf
echo "rsync_backup:123456" >/etc/rsync.password && chmod 600 /etc/rsync.password
账号为:rsync_backup
密码为:123456
vi /etc/rsyncd.conf
内容如下
uid = root
gid = root
use chroot = no
max connections = 36000
timeout = 600
pid file =/var/run/rsyncd.pid
lock file =/var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors = no
read only = no
list = no
hosts allow = 192.168.0.188
auth users = rsync_backup
secrets file =/etc/rsync.password
[backup]
path = /cloud/edp_bf/
说明:
uid和gid可以自己新建一个linux用户并修改,我这里直接用root账户了
hosts allow我这里直接限定了只允许一个,如果全部放开,就是填*
用户名为rsync_backup
自己配置的密码文件为/etc/rsync.password
接收备份的应用名为backup(倒数第二行,这个在客户端也用的到)
systemctl daemon-reload && systemctl restart rsync
systemctl status rsync
开机启动
systemctl enable rsync
需要安装rsync和sersync
apt-get install rsync
vi /etc/rsyncd.conf
内容如下
uid = root
gid = root
use chroot = no
max connections = 36000
pid file =/var/run/rsyncd.pid
lock file =/var/run/rsync.lock
log file = /var/log/rsyncd.log
保存后退出
echo "123456" >/etc/rsync.password && chmod 600 /etc/rsync.password
echo 81920 >/proc/sys/fs/inotify/max_user_watches
echo 327678 >/proc/sys/fs/inotify/max_queued_events
rsync -avzP /edp/ [email protected]::backup --password-file=/etc/rsync.password
如果测试成功,说明rsync已经配置好了,可以手动备份了。
注意,如果不是为了双向同步,客户端的这个rsync可以关掉,我这里还是设置开启。
但是不能不安装rsync,因为lsyncd也要调用rsync命令
systemctl daemon-reload && systemctl restart rsync
systemctl enable rsync
如果要关掉
systemctl daemon-reload
systemctl stop rsync && systemctl disable rsync
封装了inotify-tools,所以无需再安装
apt-get install lsyncd
vi /etc/lsyncd.conf
内容如下
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status",
insist = true,
statusInterval = 10
}
sync {
default.rsync,
source="/edp",
target="[email protected]::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
通过脚本执行状态查询具体位置(可能不同系统不一样,但是这种方法肯定能找到)
systemctl status lsyncd
装好后是这里
vi /etc/init.d/lsyncd
刷新systemctl脚本并重新启动
systemctl daemon-reload
systemctl restart lsyncd
此时正常运行,注意:文件同步会有几秒的延迟,这也是避免不必要的资源浪费