rsync+inotify实现数据的实时备份

网友投稿 833 2022-05-29

rsync主要用于做备份,其工作方式如下

1.本地文件系统实现同步(类似于cp)

2.本地与远程主机实现同步(类似scp),两台主机都要安装rsync

借用ssh加密

3.以守护进程方式运行。本地主机与远程主机通过网络套接字进行数据传输; 端口:873

部署rsync

首先服务端和客户端均安装rsync包:yum -y install rsync

在s端root家目录下创建目录dir1、dir2:mkdir dir1 dir2

在在dir1下放置1.txt文件,dir2下放置1.txt 2.txt 3.txt 4.txt四个文件。在客户端根目录下创建test目录:mkdir /test

我们把服务端dir1目录下的内容传到客户端/test目录下:rsync -r dir1/

root@192.168.1.21:/test

rsync选项:

-r 递归

-v 显示信息信息

-P(大) 显示传输进度

-t  保持mtime不变

-o 保持文件的用户

-g 保持文件的用户组

-p 保持文件权限

-l 如果文件是链接文件,则复制链接文件,而不复制源文件

-D 复制特殊的设备文件

rsync+inotify实现数据的实时备份

主要记住  -avz(rsync -avz )

-a = -rtopgDl

-z 传输时进行压缩,提高传输效率

--delete  无差异备份,删除源位置没有但目标位置有的文件

--exclude  排除,指定某个文件不进行复制

如果我们想把dir1连同目录都复制过来,我们需要去掉dir1后面的“/”:rsync -r dir1

root@192.168.1.21:/test

注意:rsync在复制时,目录后有“/”代表的是复制目录下的内容,如果没有,表示复制整个目录

rsync的服务配置文件是/etc/rsyncd.conf,配置内容如下

以守护进程方式(一种后台工作模式)运行rsync:rsync --daemon

查看rsync监听端口号以及pid:ss -lnpt|grep rsync

将远端主机dir1目录中的内容(已在配置文件中设置标签为“test”)拉到本地主机/test目录下,格式rsync -avz 源文件路径  目标文件路径:rsync -avz  root@192.168.1.20::test /test

如何实现本机文件推送到远程呢?首先修改远程主机配置文件:vim /etc/rsyncd.conf,修改内容如下:

将用户名backuper以及密码,写入rsync_passwd文件中:echo "backuper:123456" > /etc/rsync_passwd

修改rsync_passwd文件权限为600:chmod 600 /etc/rsync_passwd

重启服务端rsync服务:systemctl restart rsyncd

修改服务端(远端主机)目录dir1的用户和属组,使其与/etc/rsyncd.conf文件中UID、PID保持一致,此处我们以nobody为例:chown nobody:nobody dir1

客户端(本地主机)执行命令:

rsync -avz /test/

backuper@192.168.1.20::test

完成客户端(本地主机)到服务端(远程主机)的推送。

免密传输文件:客户端执行命令,生成pass文件存放密码echo“123456”> /etc/server.pass

更改密码文件权限:chmod 600 /etc/server.pass

客户端执行命令:

rsync -az --password-file=/etc/server.pass /test/

backuper@192.168.1.20::test

--password-file=:指定在传输过程中去/etc/server.pass文件中寻找密码,自动填充

利用rsync+inotify实现数据的实时备份

结合周期性计划任务可以做定时备份。假设每天晚上11点备份一次,在接近11点时,硬盘损坏;所以如果发现数据变化,就执行一次rsync,rsync本身执行不了此项操作,需要结合inotify(对目录进行一个持续的监控)

上传inotify-tools包到客户端家目录下。

解包:tar xf inotify-tools-3.14.tar.gz

cd进解好的包中去

编译安装,执行命令:./configure && make && make install

客户端复制会话窗口,然后执行命令inotifywait -mrq -e create /test(监听test目录下创建文件的情况),然后再复制的另一个会话窗口中在test目录下创建一个文件,则会有以下显示:

inotify监听成功

inotifywait

-r  递归

-q  安静模式,仅打印监控事件的信息

-m  处于始终监听状态

-d  放到后台运行

-e 指定监听的事件

常用组合:-mrqe

第二参数:create,modify(调整,指对文件内容进行增删改),move,delete,attrib(修改或显示文件属性)

监控test目录下创建、移动、删除、调整(文件)的情况

inotifywait -mrq -e create,delete,move,modify, /test

附件: 利用rsync+inotifiy实现数据的实时备份.docx 139.59KB 下载次数:4次

CentOS Linux 云计算 任务调度

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:驱云驾长风 —— 华为GPU加速云服务器让“硬用”上云
下一篇:《云计算与虚拟化技术丛书 深入浅出Serverless:技术原理与应用实践》—1Serverless基础
相关文章