Linux 文件实时备份 rsync+lsyncd

news/2024/11/15 0:38:28/

一、原理和说明

lsyncd官网

(一)软件说明

目的是每次只把新修改的同步,而不是全量备份。
Rsync(同步):将一个服务器的一个文件夹的内容提交到另外一个服务器的文件夹
lsyncd(差异检测并调用rsync):把差异的找出来,然后运行脚本

(二)本方法说明

采用的是推送模式,即需要备份文件的服务器(客户端)向备份服务器(服务端)推送
客户端:客户端的文件需要被备份
服务端:接收客户端的文件并保存的

(三)演示说明

以下的演示中,两台设备信息如下
注意,下面的备份目录根据自己情况调整
客户端

局域网ip:192.168.0.188
系统:debian11
备份文件夹:/edp

服务端

局域网ip:192.168.0.199
系统:debian11
备份文件夹:/cloud/edp_bf

(四)其它说明

需要先开放对应端口,默认是873。另外注意selinux,如果搞不定就关了selinx

二、服务端配置(接收备份文件的)

服务端只需要安装rsync

1.安装rsync

apt-get install rsync

2.创建接收备份后保存的目录

目录不要直接抄

mkdir /cloud/edp_bf

3.创建同步的账号密码

echo "rsync_backup:123456" >/etc/rsync.password && chmod 600 /etc/rsync.password

账号为:rsync_backup
密码为:123456

4.配置reync

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(倒数第二行,这个在客户端也用的到)

5.测试并开机启动

systemctl daemon-reload && systemctl restart 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 = 36000
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.测试(可以省略,这个是手动的命令)

rsync -avzP /edp/ 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 install lsyncd

2.配置文件

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="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

此时正常运行,注意:文件同步会有几秒的延迟,这也是避免不必要的资源浪费


http://www.ppmy.cn/news/419384.html

相关文章

vue中后台管理中使用水印

先安装水印插件 npm install --save watermark-dom 然后在全部页面应用 AppMain.vue <script> import { mapGetters } from "vuex"; import watermark from "watermark-dom"; export default { name: "AppMain", computed: { key() { re…

Minio下载与安装及其多驱多节点部署 + Nginx做负载均衡

Minio下载与安装及其多驱多节点部署 Nginx做负载均衡 1、Minio概述 MinIO是一个开源的分布式对象存储服务器&#xff0c;它兼容Amazon S3服务接口。它是一个轻量级、高性能、高可用性的存储解决方案&#xff0c;可用于存储和检索大规模数据对象。 以下是MinIO的一些关键特点…

监听关闭浏览器触发事件

关闭和刷新页面都会触发&#xff0c;一般都不用来做弹窗提示&#xff0c;一般用来做数据操作 // 监听页面关闭 清除本地缓存 window.onbeforeunload function (e) { localStorage.removeItem("statement"); }; // 监听页面关闭 提醒是否关闭 现在不允许自定义内容了…

排序算法的奇妙冒险

排序算法的奇妙冒险 一.排序的概念1.1 排序的定义1.2 排序的稳定性1.3 排序的内排序和外排序 二.插入排序2.1 直接插入排序2.2 希尔排序 三.选择排序3.1直接选择排序3.2 堆排序 四.交换排序4.1 冒泡排序4.2 快速排序**选取基准值的方法**快速排序的优化非递归实现快速排序 五.归…

Openwrt开发笔记(1)—— 开发环境

OpenWrt简介 OpenWrt 是一个嵌入式设备的 Linux 发行版&#xff0c;以 GPL 许可协议发行 其主要特点有如下几个&#xff1a; ● 代码里不含第三方开源包&#xff0c;只包含开源包地址链接。在编译的时候下载。 ● 编译时自动下载源代码、打补丁来满足指定平台要求&#xff0…

Android Studio 调试的时候出现 Access denied finding property “ro.serialno“

我虚拟机和物理机都安装了Android Studio&#xff0c;发现虚拟机中调试不是那么方便&#xff0c;然后想使用物理机开发&#xff0c;使用的小米MI4 系统是安卓11&#xff0c;在物理机中一直提示&#xff1a;libc:Access denied finding property “ro.serialno”&#xff0c;物理…

实现记事本的新建,保存,打开,另存为等功能

/** java实现记事本功能 */ import java.awt.*; import java.awt.event.*; import java.io.*; public class Java {private Frame fr;private TextArea ta;private MenuBar bar;private Menu m;private MenuItem mi1,mi2,mi3,mi4,mi5;private Font font;private Dialog dia;pri…

umi4使用

umi4使用小tips umi4控权 umi4提供了控权的方法&#xff0c;但是大多数博客都说直接创建access.ts文件就可以使用&#xff0c;而官网文档又加了这么一段配置 但如果直接配置&#xff0c;可能会报错&#xff0c;项目会直接停掉。 【解决办法】: 出现这种问题可能是因为没有引…