• rsync远程同步


    rsync远程同步

    rsync远程同步: 是一个开源的快速备份工具。可以在不同主机之间同步整个目录
    在远程,一个是源端,一个是发起端。
    源端负责文件原始位置,发起端和源端文件同步。
    拷贝文件,连接文件,设备
    可以保持源文件或者目录的权限不变 时间、软连接、所有者,所有组等均可以保持不变
    可以实现增量同步。只同步发生变化的数据,数据传输效率很高支持匿名认证。
    适合同步大文件,可与数据库同步

    同步方式

    1、完整备份,第一次同步都是完整备份
    2、往后的同步,都是增量备份(差异备份),只同步变化的数据。


    rsync的命令选项

    -r 递归模式,目录包含子目录里免得所有内容。
    -l 复制链接文件,软连接
    -v 显示同步过程中的详细信息
    -z 文件传输,进行压缩
    -a 归档模式,可以保留文件按的权限、属性等待
    -p 保留文件的权限标记(所有者、所有组)
    -t 保留时间标记(时间戳)
    -g 保留文件的所在组(管理员)
    -o 保留文件的所在者(管理员)
    -H 保留硬链接
    -D: 保留设备文件和其他特殊文件
    --delete: 删除目标位置有,但是原始位置没有的文件

    下行同步:
    从源端同步到客户端
    上行同步
    从客户端同步到源端

    test1 源端                        192.168.10.102
    test2 客户端                     192.168.10.101

    下行同步

    test1

    1. systemctl stop firewalld
    2. setenforce 0
    3. vim /etc/rsyncd.conf
    4. ***************************************
    5. uid = root
    6. gid = root
    7. use chroot = yes
    8. #禁锢在源文件
    9. address = 192.168.10.10 #
    10. #监听地址
    11. port = 873
    12. #监听端口
    13. log file = /var/log/rsync.log
    14. pid file = /var/run/rsyncd.pid
    15. hosts allow = 192.168.10.0/24
    16. #指定可以访问服务端的地址
    17. dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
    18. 取消注释:以上述后缀名的,同步时不进行压缩
    19. 配置共享模块和目录、账户、密码
    20. [test]
    21. path = /opt/test 指定共享目录
    22. comment = test
    23. read only = no
    24. auth users = backuper
    25. secrets file = /etc/rsyncd_users.db
    26. ******************************************
    27. vim /etc/rsyncd_users.db
    28. ***************************************
    29. backuper:123456
    30. ***************************************
    31. 赋权 chmod 600 /rsyncd_users.db
    32. 创建共享文件夹
    33. mkdir -p /opt/test
    34. chmod 777 /opt/test
    35. rsync --daemon 重启
    36. netstat -antp | grep rsync 查看服务是否启动,是否正常运行
    37. kill $(cat /var/run/rsyncd.pid) 关闭服务

    验证

    1. test1
    2. **********************
    3. cd /opt/test
    4. 创建文件到/opt/test
    5. **********************
    6. test2
    7. rsync -avz backuper@192.168.10.102::test /opt/
    8. *************************************
    9. rsync 发起同步的命令
    10. -avz a保留文件权限 v显示详细过程 z同步过程中对文件进行压缩
    11. :test 模块名称
    12. /opt/ 存放路径
    13. *************************************

    免密交互

    1. 免密交换
    2. test2
    3. echo"123456"> /etc/server.pass
    4. chmod 600 /etc/server.pass
    5. rsync -avz --password-file=/etc/server.pass backuper@192.168.10.10::test /opt

    上行同步

    inotifv通知接口,可以用来监控文件系统的各种变化情况,文件存取,删除,移动,修改都可以被监控
    inotifv机制和rsync配合使用。既可以通知变化,也可以实现同步

    tar -xf inotify-tools-3.14,tar.gz

    监控事件队列

    最多监控的实例

    每个实例最多监控的文件

    1. test2
    2. vim /etc/sysctl.conf
    3. ********************************
    4. fs.inotify.max_queued_events = 16384
    5. fs.inotify.max_user_instances = 1024
    6. fs.inotify.max_user_watches = 1048576
    7. ********************************
    8. sysctl -p
    9. ./configure
    10. make && make install
    11. test1
    12. vim /etc/rsyncd.conf
    13. ********************************
    14. read only = no
    15. ********************************

    test2监控

    1. test2
    2. inotifywait -mrq -e modify,create,move,delete /opt/test/
    3. -m 持续监控
    4. -r 递归整个目录
    5. -q 简化的输出信息,信息提示
    6. -e 指定监控的事件,多个事件用逗号隔开

    写脚本,功能:既可以上行同步,也可以监控

    1. vim /opt/inotifg
    2. ***********************************************************************
    3. CMD="inotifywait -mrq -e modify,create,move,delete /opt/data/"
    4. rsync_cmd="rsync -avz --password-file=/etc/server.pass /opt/data backuper@192.168.10.10::test"
    5. $CMD | while read DIRECTORY EVENT FILE
    6. do
    7. if[ $(pgrep rsync | wc -l) -le 0 ]
    8. then
    9. $rsync_cmd
    10. fi
    11. done
    12. ***********************************************************************
    13. 给脚本777权限
    14. chmod 777 /opt/inotifg
    15. 在系统启动期间自动运行用户自定义的命令或脚本
    16. chmod +x /etc/rc.d/rc.local
    17. echo '/opt/inotify.sh' >> /etc/rc.d/rc.local
    18. crontab -e -u root
    19. * * */2 * * /opt/inotify.sh

    rsync同步数据

    1. /home/blank/ 创建blank文件夹,在其内部多个创建文件,写入内容
    2. 将此文件夹/opt/test1/ 下的内容与/home/blank/同步
    3. rsync --delete-before -a -H -v --progress --stats /home/blank/ /opt/test1
    4. --delete-before 在传输的过程中进行删除
    5. -a 归档
    6. -H 硬链接
    7. -v 输出过程信息
    8. --progress 显示传输过程
    9. --stats 给出文件的传输状态
    10. 执行完后:test1文件夹更新到与blank相同
    11. test1blank两个内的文件一样

  • 相关阅读:
    zookeeper核心源码分析
    东郊到家app小程序公众号软件开发预约同城服务系统成品源码部署
    浅谈JVM(面试常考)
    详解Leetcode中关于malloc模拟开辟二维数组问题,涉及二维数组的题目所给函数中的各个参数的解读
    怎么有效准备下个月的“金九银十”?
    Torch.nn模块学习-池化
    洗衣行业在线预约小程序+前后端完整搭建教程
    家具vr虚拟交互展示外包制作
    Mac上使用M1或M2芯片的设备安装Node.js时遇到一些问题,比如卡顿或性能问题
    操作系统复习【面试】
  • 原文地址:https://blog.csdn.net/qq_61843057/article/details/134445763