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

举报
当她睡着时 发表于 2021/04/10 18:13:57 2021/04/10
【摘要】 rsync主要用于做备份,其工作方式如下 1.本地文件系统实现同步(类似于cp) 2.本地与远程主机实现同步(类似scp),两台主机都要安装rsync 借用ssh加密 3.以守护进程方式运行。本地主机与远程主机通过网络套接字进行数据传输; 端口:873 因图片丢失或不全,已经上传全部流程文档,欢迎查看下载交流指正。

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

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

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

借用ssh加密

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

 

  • 部署rsync
  1. 首先服务端和客户端均安装rsync包:yum -y install rsync
  2. s端root家目录下创建目录dir1、dir2:mkdir dir1 dir2
  3. 在在dir1下放置1.txt文件,dir2下放置1.txt 2.txt 3.txt 4.txt四个文件。在客户端根目录下创建test目录:mkdir /test
  4. 我们把服务端dir1目录下的内容传到客户端/test目录下:rsync -r dir1/ root@192.168.1.21:/test
  5. rsync选项:

-r 递归

-v 显示信息信息

-P(大) 显示传输进度

-t  保持mtime不变

-o 保持文件的用户

-g 保持文件的用户组

-p 保持文件权限

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

-D 复制特殊的设备文件

主要记住  -avz(rsync -avz )

-a = -rtopgDl

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

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

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

 

  1. 如果我们想把dir1连同目录都复制过来,我们需要去掉dir1后面的“/”:rsync -r dir1 root@192.168.1.21:/test
  2. 注意:rsync在复制时,目录后有“/”代表的是复制目录下的内容,如果没有,表示复制整个目录
  3. rsync的服务配置文件是/etc/rsyncd.conf,配置内容如下

 

 

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

 

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

 

  1. 将远端主机dir1目录中的内容(已在配置文件中设置标签为“test”)拉到本地主机/test目录下,格式rsync -avz 源文件路径  目标文件路径:rsync -avz  root@192.168.1.20::test /test
  2. 如何实现本机文件推送到远程呢?首先修改远程主机配置文件:vim /etc/rsyncd.conf,修改内容如下:

 

  1. 将用户名backuper以及密码,写入rsync_passwd文件中:echo "backuper:123456" > /etc/rsync_passwd
  2. 修改rsync_passwd文件权限为600:chmod 600 /etc/rsync_passwd
  3. 重启服务端rsync服务:systemctl restart rsyncd
  4. 修改服务端(远端主机)目录dir1的用户和属组,使其与/etc/rsyncd.conf文件中UID、PID保持一致,此处我们以nobody为例:chown nobody:nobody dir1
  5. 客户端(本地主机)执行命令:

rsync -avz /test/ backuper@192.168.1.20::test

  1. 完成客户端(本地主机)到服务端(远程主机)的推送。
  2. 免密传输文件:客户端执行命令,生成pass文件存放密码echo“123456”> /etc/server.pass
  3. 更改密码文件权限:chmod 600 /etc/server.pass
  4. 客户端执行命令:

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(对目录进行一个持续的监控)

  1. 上传inotify-tools包到客户端家目录下。
  2. 解包:tar xf inotify-tools-3.14.tar.gz
  3. cd进解好的包中去
  4. 编译安装,执行命令:./configure && make && make install
  5. 客户端复制会话窗口,然后执行命令inotifywait -mrq -e create /test(监听test目录下创建文件的情况),然后再复制的另一个会话窗口中在test目录下创建一个文件,则会有以下显示:

 

  1. inotify监听成功
  2. inotifywait

-r  递归

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

-m  处于始终监听状态

-d  放到后台运行

-e 指定监听的事件

常用组合:-mrqe

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

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

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

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。