• Rsync远程同步


            Rsync 简介

            rsync(Remote Sync,远程同步) 是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。

            在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客户机的rsync同步操作的服务器称为同步源。在同步过程中,同步源负责提供文件的原始位置,发起端应对该位置具有读取权限。

            Rsync 是 Linux 系统下的数据镜像备份工具,使用快速增量备份工具 Remote Sync 可以远程同步, 可以在不同主机之间进行同步,可实现全量备份与增量备份,保持链接和权限,且采用优化的同步算法, 传输前执行压缩,因此非常适合用于架构集中式备份或异地备份等应用。同时Rsync支持本地复制,或者与其他 SSH、rsync 主机同步
     

    rsync 既可以做本地复制化,也可也远程同步

    1. 首先将源文件和目标位置的文件做对比,找出差异部分
    2. 根据目录的位置的文件与源文件差异的部分,进行一致性的备份

    同步方式:

    1. 完整备份:每次备份都是从备份源将所有的文件或目录备份到目的地。 
    2. 差量备份:备份上次完全备份以后有变化的数据(他针对的上次的完全备份,他备份过程中不清除存档属性)
    3. 增量备份:备份上次备份以后有变化的数据(他才不管是那种类型的备份,有变化的数据就备份,他会清除存档属性)


    备份的方式:

    1. 发起端:负责rsync  同步操作的客户机叫做发起端,通知服务器我要备份你的数据
    2. 备份源:负责响应来自客户机rsync   同步操作的服务器叫做备份源,需要备份的服务器
    3. 服务端:运行rsyncd服务,一般来说,需要备份的服务器
    4. 客户端:存放备份数据

    rsync命令

    1. 基本格式 : rsync 【选项 】 原始位置 目标位置
    2. 常用选项:
    3. -z:在传输文件时进行压缩 (compress)
    4. -v:对于符号链接文件仍然复制为符号链接文件
    5. -a:归档模式,保留文件的权限、属性等信息,等同于组合选项”-rlptgoD”
    6. -r:递归模式,包含目录及子目录中的所有文件
    7. -l:对于符号链接文件仍然复制为符号链接文件
    8. -p:保留文件的权限标记
    9. -t:保留文件的时间标记
    10. -g:保留文件的属组标记(仅超级用户使用)
    11. -o:保留文件的属主标记(仅超级用户使用)
    12. -D:保留设备文件及其他特殊文件
    13. --delete: 删除目标位置有而原始位置没有的文件
    14. 配置源的两种表达方法
    15. 格式一:
    16. 用户名@主机地址::共享模块名
    17. rsync -avz backuper@192.168.86.11::wwwroot /opt/
    18. 格式二:
    19. rsync://用户名@主机地址/共享模块名
    20. rsync -avz rsync://backuper@192.168.86.11/wwwroot /opt/

    配置服务端与客户端的实验

    1. 192.168.86.11 服务端
    2. 192.168.86.22 客户端
    3. 关闭防火墙和增强功能
    4. systemctl stop firewalld
    5. setenforce 0

    配置rsync源服务器(192.168.86.11)

    1. rpm -q rsync #一般系统已默认安装rsync
    2. #建立/etc/rsyncd.conf 配置文件
    3. vim /etc/rsyncd.conf #添加以下配置项
    4. uid = root
    5. gid = root
    6. use chroot = yes #禁锢在源目录
    7. address = 192.168.86.11 #监听地址
    8. port 873 #监听端口 tcp/udp 873,可通过cat /etc/services | grep rsync查看
    9. log file = /var/log/rsyncd.log #日志文件位置
    10. pid file = /var/run/rsyncd.pid #存放进程 ID 的文件位置
    11. hosts allow = 192.168.86.0/24 #允许访问的客户机地址
    12. dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z #同步时不再压缩的文件类型
    13. [wwwroot] #共享模块名称
    14. path = /var/www/html #源目录的实际路径
    15. comment = Document Root of www.kgc.com
    16. read only = yes #是否为只读
    17. auth users = backuper #授权账户,多个账号以空格分隔
    18. secrets file = /etc/rsyncd_users.db #存放账户信息的数据文件
    19. wq!
    20. chmod 600 /etc/rsyncd_users.db
    21. #保证所有用户对源目录/var/www/html 都有读取权限
    22. chmod +r /var/www/html/
    23. ls -ld /var/www/html/
    24. #启动 rsync 服务程序
    25. rsync --daemon #启动 rsync 服务,以独立监听服务的方式(守护进程)运行
    26. netstat -anpt | grep rsync
    27. #关闭 rsync 服务
    28. kill $(cat /var/run/rsyncd.pid)
    29. rm -rf /var/run/rsyncd.pid

    发起端(192.168.86.22)

    1. 将指定的资源下载到本地/opt 目录下进行备份。
    2. 格式一:
    3. rsync -avz backuper@192.168.86.11::wwwroot /opt/
    4. 格式二:
    5. rsync -avz rsync://backuper@192.168.86.11/wwwroot /opt/
    6. 免交互格式配置:
    7. echo "123456" > /etc/server.pass
    8. chmod 600 /etc/server.pass
    9. crontab -e
    10. 30 22 * * * /usr/bin/rsync -az --delete --password-file=/etc/server.pass backuper@192.168.86.11::wwwroot /opt/
    11. #为了在同步过程中不用输入密码,需要创建一个密码文件,保存 backuper 用户的密码,如 /etc/server.pass。在执行 rsync 同步时使用选项 “--password-file=/etc/server.pass” 指定即可。
    12. systemctl restart crond
    13. systemctl enable crond

    发起端(客户端)配置 rsync+inotify

    1. 1.修改rsync源服务器配置文件
    2. vim /etc/rsyncd.conf
    3. ......
    4. read only = no #关闭只读,上行同步需要可以写
    5. kill $(cat /var/run/rsyncd.pid)
    6. rm -rf /var/run/rsyncd.pid
    7. rsync --daemon
    8. netstat -anpt | grep rsync
    9. chmod 777 /var/www/html/
    10. 2.调整 inotify 内核参数
    11. 在Linux内核中,默认的inotify机制提供了三个调控参数:
    12. max_queue_events(监控事件队列,默认值为16384)、
    13. max_user_instances(最多监控实例数,默认值为128)、
    14. max_user_watches(每个实例最多监控文件数,默认值为8192)。当要监控的目录、文件数量较多或者变化较频繁时,建议加大这三个参数的值。
    15. vim /etc/sysctl.conf
    16. fs.inotify.max_queued_events = 16384
    17. fs.inotify.max_user_instances = 1024
    18. fs.inotify.max_user_watches = 1048576
    19. sysctl -p
    20. 3.安装 inotify-tools
    21. 用 inotify 机制还需要安装 inotify-tools,以便提供 inotifywait、inotifywatch 辅助工具程序,用来监控、汇总改动情况。
    22. inotifywait:可监控modify(修改)、create(创建)、move(移动)、delete(删除)、attrib(属性更改)等各种事件,一有变动立即输出结果。
    23. inotifywatch:可用来收集文件系统变动情况,并在运行结束后输出汇总的变化情况。
    24. tar zxvf inotify-tools-3.14.tar.gz -C /opt/
    25. cd /opt/inotify-tools-3.14
    26. ./configure
    27. make && make install
    28. #可以先执行“inotifywait”命令,然后另外再开启一个新终端向 /var/www/html 目录下添加文件、移动文件,在原来的终端中跟踪屏幕输出结果。
    29. inotifywait -mrq -e modify,create,move,delete /var/www/html
    30. 4.在另外一个终端编写触发式同步脚本(注意,脚本名不可包含 rsync 字符串,否则脚本不生效)
    31. vim /opt/inotify.sh
    32. #!/bin/bash
    33. INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"
    34. RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ backuper@192.168.86.11::wwwroot/"
    35. $INOTIFY_CMD | while read DIRECTORY EVENT FILE
    36. ##while判断是否接收到监控记录
    37. do
    38. if [ $(pgrep rsync | wc -l) -le 0 ] ; then
    39. $RSYNC_CMD
    40. fi
    41. done
    42. wq!
    43. chmod +x /opt/inotify.sh
    44. chmod 777 /var/www/html/
    45. chmod +x /etc/rc.d/rc.local
    46. echo '/opt/inotify.sh' >> /etc/rc.d/rc.local #加入开机自动执行
    1. 上述脚本用来检测本机/var/www/html 目录的变动情况,一旦有更新触发 rsync 同步操作,上传备份至服务器 192.168.86.11 的 wwwroot 共享目录下。
    2. 触发式上行同步的验证过程如下:
    3. 1)在本机运行 /opt/inotify.sh 脚本程序。
    4. 2)切换到本机的 /var/www/html 目录,执行增加、删除、修改文件等操作。
    5. 3)查看远端服务器中的 wwwroot 目录下的变化情况
  • 相关阅读:
    ECharts的基本使用
    机器学习笔记之线性回归——从概率密度函数角度认识最小二乘法
    Leetcode168. Excel表列名称
    m基于matlab的wcdma软切换算法的研究分析和仿真
    应用播放器构建相关回调
    怎么开发基于springboot的配音交流系统(语言-java)
    第6章 数据库事务 & 第7章 DAO及相关实现类
    Workbench环境中常见问题
    基于布谷鸟灰狼算法、灰狼算法求解复杂地形下三维无人机路径规划问题研究附matlab代码
    分析网上的一篇“浪漫烟花“程序<VS-C++>
  • 原文地址:https://blog.csdn.net/2301_78069073/article/details/132845932