当前位置:   article > 正文

Centos 配置rsync远程同步及使用inotify+rsync实时备份

centos 实时同步备份

博文目录
一、rsync概述
1、rsync命令的基本用法
二、配置rsync
1、配置同步身份验证的rsync
2、rsync定期同步
3、配置inotify+rsync实时同步

一、rsync概述

rsync(Remote Sync,远程同步)是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。rsync的官方站点是http://rsync.samba.org/ 作为一种常用的文件备份工具,rsync往往是Linux和UNIX系统默认安装的基本组件之一。

  1. [root@centos01 ~]# rpm -q rsync
  2. rsync-3.0.9-18.el7.x86_64

在远程同步任务中,负责发起rsync同步 操作的客户机称为发起端,而负责响应来自客户机的rsync同步操作的服务器称为同步源。在同步过程中,同步源负责提供文档的原始位置,发起端应对该位置具有读取权限。rsync作为同步源时以守护进程运行,为其他客户机提供备份源。配置rsync同步源需要建立配置文件rsync.conf,创建备份账号,然后将rsync程序以守护进程(“--daemon”选项)方式运行。
Centos 配置rsync远程同步及使用inotify+rsync实时备份

1、rsync命令的基本用法

绝大多数的备份程序要求指定原始位置、目标位置,rsync命令也一样。最简单的rsync用法类似于cp命令。例如,可以将文件/etc/fstab、目录/boot/grub同步备份到/opt目录下,其中,“-r”选项表示递归整个目录树,“-l”选项用来备份链接文件。

备份的基本格式为“rsync [选项] 原始位置 目标位置”,其中常用的一些命令选项如下:

  • -r:递归模式,包含目录及子目录中的所有文件;
  • -l:对于符号链接文件仍然复制为符号链接文件;
  • -v:显示同步过程的详细信息;
  • -a:归档模式,保留文件的权限、属性等信息,等同于组合选项“-rlptgoD”;
  • -z:在传输文件时进行压缩;
  • -p:保留文件的权限标记;
  • -t:保留文件的时间标记;
  • -g:保留文件的属组标记(仅超级用户使用);
  • -o:保留文件的属主标记(仅超级用户使用);
  • -H:保留硬连接文件;
  • -A:保留ACL属性信息;
  • -D:保留设备文件及其他特殊文件;
  • --delete:删除目标位置有而原始位置没有的文件;
  • --checksum:根据校验和(而不是文件大小、修改时间)来决定是否跳过文件;

二、配置rsync

  1. [root@centos01 ~]# cp /etc/rsyncd.conf /etc/rsyncd.conf.bak <!--备份rsync主配置文件-->
  2. [root@centos01 ~]# vim /etc/rsyncd.conf <!--编辑主配置文件-->
  3. uid = nobody <!--管理rsync的用户-->
  4. gid = nobody <!--管理rsync的组-->
  5. port 873 <!--rsync的端口号-->
  6. pid file = /var/run/rsyncd.pid <!--rsync进程id位置-->
  7. dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 <!--同步在压缩的文件类型-->
  8. auth users = bob <!--验证账户-->
  9. secrest file = /etc/rsync_user.db <!--密码数据库-->
  10. address = 192.168.100.10 <!--rsync服务监听的ip地址-->
  11. hosts allow = 192.168.100.0/24 <!--允许192.168.100.0网段访问-->
  12. read only = yes <!--允许读取权限-->
  13. [root@centos01 ~]# rsync --daemon <!--启动rsync服务-->
  14. [root@centos01 ~]# netstat -anptu | grep rsync <!--监听rsync服务是否正常启动-->
  15. tcp 0 0 192.168.100.10:873 0.0.0.0:* LISTEN 1422/rsync
  16. [root@centos01 ~]# kill 1422 <!--停止服务使用kill结束进程-->
  17. [root@centos01 ~]# vim /etc/rc.d/rc.local <!--设置开机自动启动rsync服务-->
  18. /usr/bin/rsync --daemon <!--rsync启动服务添加到配置文件中-->
  19. [root@centos01 ~]# chmod +x /etc/rc.d/rc.local <!--添加执行权限-->
  20. [root@centos01 ~]# mkdir centos7 <!--创建centos7目录-->
  21. [root@centos01 ~]# rsync -alv /mnt/* ./centos7/
  22. <!--将mnt目录下的文件复制到centos7目录里-->
  23. [root@centos01 ~]# mkdir benet <!--创建目录-->
  24. [root@centos01 ~]# mkdir xsh <!--创建目录-->
  25. [root@centos01 ~]# echo "11111" > ./benet/1.txt <!--写入数据-->
  26. [root@centos01 ~]# echo "22222" > ./xsh/2.txt <!--写入数据-->
  27. [root@centos01 ~]# rsync -av --delete ./benet/ ./xsh
  28. <!--将源benet目录中数据同步到目录xsh目录,删除xsh目录中的历史数据-->
  29. sending incremental file list
  30. ./
  31. deleting 2.txt
  32. 1.txt
  33. sent 92 bytes received 34 bytes 252.00 bytes/sec
  34. total size is 6 speedup is 0.05
  35. [root@centos01 ~]# cd xsh <!--进入xsh目录-->
  36. [root@centos01 xsh]# ls <!--查看是否同步成功-->
  37. 1.txt
  38. [root@centos01 ~]# rsync -av ./xsh/ root@192.168.100.20:/
  39. <!--将本地xsh目录中的数据,同步到远程主机192.168.100.20的根目录中-->
  40. The authenticity of host '192.168.100.20 (192.168.100.20)' can't be established.
  41. ECDSA key fingerprint is SHA256:PUueT9fU9QbsyNB5NC5hbSXzaWxxQavBxXmfoknXl4I.
  42. ECDSA key fingerprint is MD5:6d:f7:95:0e:51:1a:d8:9e:7b:b6:3f:58:51:51:4b:3b.
  43. Are you sure you want to continue connecting (yes/no)? yes <!--输入yes-->
  44. Warning: Permanently added '192.168.100.20' (ECDSA) to the list of known hosts.
  45. root@192.168.100.20's password: <!--输入密码-->
  46. sending incremental file list
  47. ./
  48. 1.txt
  49. sent 92 bytes received 34 bytes 19.38 bytes/sec
  50. total size is 6 speedup is 0.05
  51. [root@centos02 ~]# cd / <!--进入根目录-->
  52. [root@centos02 /]# ls <!--查看目录下文件-->
  53. 1.txt boot etc lib media opt root sbin sys usr
  54. bin dev home lib64 mnt proc run srv tmp var

1、配置同步身份验证的rsync

  1. [root@centos01 ~]# vim /etc/rsync_user.db
  2. <!--创建rsync验证数据库,账户是bob,密码是pwd@123-->
  3. bob:pwd@123
  4. [root@centos01 ~]# chmod 600 /etc/rsync_user.db <!--验证数据库文件添加600权限-->
  5. [root@centos01 ~]# vim /etc/rsyncd.conf <!--修改rsync主配置文件创建共享-->
  6. [accp] <!--同步共享模块名字-->
  7. path = /accp <!--同步物理目录-->
  8. comment = test <!--描述-->
  9. auth users bob <!--验证账户-->
  10. secrets file = /etc/rsync_user.db <!--验证的数据库-->
  11. read only = yes <!--允许只读权限-->
  12. [root@centos01 ~]# mkdir /accp <!--创建同步物理目录-->
  13. [root@centos01 ~]# echo "accp.com" > /accp/qq.txt <!--写入测试数据-->
  14. [root@centos01 ~]# rsync -av bob@192.168.100.10::accp ./xsh/
  15. <!--客户端同步数据,将远程服务器192.168.100.10的accp数据同步到当前位置的xsh目录-->
  16. receiving incremental file list
  17. ./
  18. aa.txt
  19. sent 48 bytes received 118 bytes 332.00 bytes/sec
  20. total size is 4 speedup is 0.02
  21. [root@centos01 ~]# rsync -av rsync://bob@192.168.100.10/accp ./xsh/ <!--第二种方式同步-->
  22. receiving incremental file list
  23. ./
  24. aa.txt
  25. sent 48 bytes received 118 bytes 332.00 bytes/sec
  26. total size is 4 speedup is 0.02
  27. [root@centos01 ~]# cd xsh/ <!--验证是否同步成功-->
  28. [root@centos01 xsh]# ls
  29. aa.txt

2、rsync定期同步

  1. [root@centos01 ~]# mount /dev/cdrom /mnt/ <!--切换Linux光盘安装inotify-->
  2. mount: /dev/sr0 写保护,将以只读方式挂载
  3. [root@centos01 ~]# tar zxvf /mnt/inotify-tools-3.14.tar.gz -C /usr/src/ <!--解压缩inotify-->
  4. [root@centos01 ~]# cd /usr/src/inotify-tools-3.14/ <!--进入inotify目录-->
  5. [root@centos01 inotify-tools-3.14]# ./configure <!--配置inotify-->
  6. [root@centos01 inotify-tools-3.14]# make && make install <!--编译安装inotify-->
  7. [root@centos01 ~]# cat /proc/sys/fs/inotify/max_queued_events
  8. <!--查看inotify监控事件队列-->
  9. 16384
  10. [root@centos01 ~]# cat /proc/sys/fs/inotify/max_user_instances <!--查看最多监控实例数-->
  11. 128
  12. [root@centos01 ~]# cat /proc/sys/fs/inotify/max_user_watches <!--查看每个实例最多监控文件数-->
  13. 8192
  14. [root@centos01 ~]# vim /etc/sysctl.conf <!--修改inotify配置文件,加大三个参数的值-->
  15. fs.inotify.max_queued_events = 16384
  16. fs.inotify.max_user_instances = 1024
  17. fs.inotify.max_user_watches = 1048576
  18. [root@centos01 ~]# sysctl -p <!--更新内核参数-->
  19. fs.inotify.max_queued_events = 16384
  20. fs.inotify.max_user_instances = 1024
  21. fs.inotify.max_user_watches = 1048576
  22. [root@centos01 ~]# inotifywait -mrq -e modify,create,delete,move,attrib /
  23. accp/
  24. <!--配置一次性监控,监控/accp目录发生的变化-->
  25. [root@centos01 ~]# cd /accp/
  26. <!--进入accp目录,修改、删除、创建数据测试是否监控成功-->
  27. [root@centos01 accp]# ls
  28. aa.txt
  29. [root@centos01 accp]# touch 11.txt
  30. [root@centos01 accp]# echo "111" > 1.txt
  31. [root@centos01 accp]# rm -rf 11.txt
  32. [root@centos01 ~]# inotifywait -mrq -e modify,create,delete,move,attrib /
  33. accp/
  34. <!--查看监控状态-->
  35. /accp/ CREATE 11.txt
  36. /accp/ ATTRIB 11.txt
  37. /accp/ CREATE 1.txt
  38. /accp/ MODIFY 1.txt
  39. /accp/ DELETE 11.txt

3、配置inotify+rsync实时同步

  1. [root@centos01 ~]# vim rsync.sh <!--创建编写实时同步脚本-->
  2. #!/bin/bash
  3. INW="inotifywait -mrq -e modify,create,delete,move,attrib /accp/"
  4. RSYNC="rsync -avzH /accp/ root@192.168.100.20:/baidu/ --delete"
  5. $INW | while read DIRECTORY EVENT FILE;do
  6. $RSYNC &> /dev/null
  7. done
  8. [root@centos01 ~]# chmod +x rsync.sh <!--脚本添加执行权限-->
  9. [root@centos01 ~]# ssh-keygen -t rsa <!--配置密钥对-->
  10. [root@centos01 ~]# ssh-copy-id -i ./.ssh/id_rsa.pub root@192.168.100.20
  11. <!--上传ssh客户端的公钥到ssh服务器端-->
  12. [root@centos01 ~]# netstat -anptu | grep rsync <!--停止rsync服务重新启动-->
  13. tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 7657
  14. tcp6 0 0 :::873 :::* LISTEN 765
  15. [root@centos01 ~]# kill 7657 <!--停止rsync服务-->
  16. [root@centos01 ~]# rsync --daemon <!--重新启动-->
  17. [root@centos02 ~]# mkdir baidu <!--服务器端创建baidu目录-->
  18. [root@centos02 ~]# cd baidu/ <!--进入baidu目录-->
  19. [root@centos02 baidu]# echo "111" > 333.txt <!--插入数据-->
  20. [root@centos02 baidu]# ls <!--查看-->
  21. 333.txt
  22. [root@centos01 ~]# ./rsync.sh & <!--执行脚本-->
  23. [3] 11160
  24. [root@centos02 ~]# cd /baidu/
  25. <!--服务器端查看baidu目录是否删除历史数据插入客户端accp目录下的数据-->
  26. [root@centos02 baidu]# ls
  27. w.txt
  28. [root@centos01 ~]# vim /etc/rc.d/rc.local
  29. <!--将rsync实时同步的脚本添加到开机自动启动配置文件中-->
  30. /root/rsync.sh & <!--执行脚本的路径添加进来-->
  31. [root@centos02 ~]# kill 7984 <!--停止rsync服务-->
  32. [root@centos02 ~]# rsync --daemon <!--重新启动-->
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/145859
推荐阅读
相关标签
  

闽ICP备14008679号