• rsync 远程同步


    目录

    Rsync远程同步

    上行同步于下行同步

    Rsync功能特点

    同步方式

    Rsync命令的选项

    实验

    上行同步


    rsync远程同步

    是一个开源的快速备份工具,可以在不同主机之间同步整个目录,

    在远程同步中,一个是源端,还有一个是发起端

    源端负责文件的原始位置,发起端和源端的文件同步

    rsync同步速度很快,适合大文件,可以结合数据库同步使用。

    上行同步于下行同步

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

    Rsync功能特点

    1拷贝文件,链接文件,拷贝设备
    2保持源文件或者目录的权限不变,如时间,软硬链接,所有者,所在组等均可以保持不变
    3可以实现增量同步,只同步发生变化的数据,数据传输效率很高
    4支持匿名认证登录

    同步方式

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

    Rsync命令的选项

    -r递归模式,目录包含子目录里面的所有文件
    -l复制链接文件,软链接
    -v显示同步过程中的详细信息
    -z传输文件时对文件进行压缩

    -a

    归档模式,可以保留文件的权限,属性等等
    -p保留文件的权限标记(所有者,所在组)
    -t保留时间标记(时间戳)
    -g保留文件的所在组(需要管理员权限)
    -o保留文件的所有者(需要管理员权限)
    -H保留硬链接
    -D保留设备文件和其他特殊文件
    --delete可以删除目标位置有,但是原始位置没有的文件(两边都有的数据保持不动,删除掉不同的数据)

    实验

    1. #需要两台:test1 :192.168.233.71,test2:192.168.233.72
    2. systemctl stop firewalld
    3. setenforce 0
    4. yum -y install rsync
    5. #安装rsync软件
    6. vim /etc/rsyncd.conf
    7. uid = root
    8. #所有者
    9. gid = root
    10. #所在组
    11. use chroot = yes
    12. #禁锢在源目录,每一次同步只能从源目录出发
    13. address =192.168.233.71
    14. #监听地址
    15. port 873
    16. #监听端口
    17. log file = /var/log/rsyncd.log
    18. pid file = /var/run/rsyncd.pid
    19. hosts allow = 192.168.233.0/24
    20. #指定可以访问服务端的地址
    21. dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
    22. #以上述后缀名为结尾的文件,同步时不再压缩
    23. #配置共享模块和目录,用户名,密码
    24. [test]
    25. path = /opt/test
    26. comment = test
    27. read only = yes
    28. #下行模式同步只需要开启yes,为只读模式,上行模式需要读,no为可以读也可以写
    29. auth users = backuper
    30. #指定用户名,可以自定义
    31. secrets file = /etc/rsyncd_users.db
    32. #认证的文件
    33. wq!
    34. vim /etc/rsyncd_users.db
    35. #设置密码文件
    36. backuper:123456
    37. wq!
    38. chmod 600 /etc/rsyncd_users.db
    39. #这个文件只能给600,不能给777
    40. mkdir test
    41. #创建共享目录
    42. chmod 777 test/
    43. rsync --daemon
    44. #独立监听启动,守护进程启动
    45. netstat -antp | grep rsync
    46. #看一下启动没
    47. kill $(cat /var/run/rsyncd.pid)
    48. #关闭rsync进程的方式
    49. touch 123 /opt/test/
    50. echo 666 > 123
    51. test2
    52. systemctl stop firewalld
    53. setenforce 0
    54. yum -y install rsync
    55. rsync -avz backuper@192.168.233.71::test /opt
    56. #rsync发起同步的命令,-avz为保留文件权限,v表示显示详细过程,z同步过程中对文件进行压缩,/opt为指定目录
    57. #输入密码,第一次为全量备份,第二次为增量备份
    58. 二免密登录,免交互实现密码登录
    59. test2(客户端)
    60. echo "123456" > /etc/server.pass
    61. #生成一个密码文件
    62. chmod 600 /etc/server.pass
    63. #给权限给密码文件
    64. rsync -avz --pasword-file=/etc/server.pass backuper@192.168..233.71::test /opt
    65. #免密
    66. cat /opt/123

    上行同步

    1. 上行同步 test2
    2. #将软件inotify-tools-3.14.tar.gz 放到/opt
    3. #inotify通知接口,可以用来监控文件系统的各种变化情况,文件存取,删除,移动,修改都可以被监控
    4. #inotify机制和rsync配合使用,既可以通知变化,也可以实现同步
    5. tar -xf inotify-tools-3.14.tar.gz
    6. cat /proc/sys/fs/inotify/max_queued_events
    7. #16384 ,监控事件队列
    8. cat /proc/sys/fs/inotify/max_user_instances
    9. #128,最多监控的实例
    10. cat /proc/sys/fs/inotify/max_user_watches
    11. #8192,每个实例最多监控的文件
    12. vim .etc/sysctl.conf
    13. #最后添加
    14. fs.inotify.max_queued_events = 16384
    15. fs.inotify.max_user_instances = 1024
    16. fs.inotify.max_user_watches = 1048576
    17. wq!
    18. sysctl -p
    19. cd inotify-tools-3.14/
    20. ./configure
    21. make && make install
    22. inotifywait -mrq -e modify,create,move,delete /opt/test/
    23. #-m表示持续监控,-r递归整个目录,-q简化的输出信息提示,-e指定监控的事件,多个事件用逗号隔开
    24. #开始监控,可以再开一台test2操作,监控有记录表示监控成功。
    25. 监控同步数据
    26. mkdir data
    27. touch gq wdf wh yst
    28. chmod 777 data/
    29. rsync -azH --delete --password-file=/etc/server.pass /opt/data backuper@192.168.233.71::test/
    30. echo 123 > gq
    31. #test 查看是否同步
    32. #写个监控脚本
    33. vim inotify.sh
    34. #!/bin/bash
    35. CMD="inotifywait -mrq -e modify,create,move,delete /opt/test/"
    36. rsync_cmd="rsync -azH --delete --password-file=/etc/server.pass /opt/data backuper@192.168.233.71::test/"
    37. $CMD | while read DIRECTORY EVENT FILE
    38. do
    39. if [ $(pgrep rsync | wc -l) -gt 0 ]
    40. then
    41. $rsync_cmd
    42. fi
    43. done
    44. wq!
    45. chmod 777 inotify.sh
    46. chmod +x /etc/rc.d/rc.local
    47. echo '/opt/inotify.sh' >> /etc/rc.d/rc/local
    48. crontab -e -u root
    49. * * */2 * * /opt/inotify.sh
    50. wq!
    51. #在文件数量较多的情况下,比如百万和千万级别的文件,用rm -rf * 速度很慢,用rsync可以实现快速删除大量文件
    52. test1
    53. touch {1..5000}.txt
    54. mkdir /home/blank
    55. rsync --delete-before -a -H -v --progress --stats /home/blank/ /opt/test1
    56. #--delete-before指在传输过程中进行删除,-a归档模式,-H硬连接-v输出过程信息--progress显示传输过程--stats 给出文件的传输状态
    57. cd /home/blank

  • 相关阅读:
    Unity中的三种渲染路径
    上证50期权开户条件有哪些呢?开户必看!
    Allegro单独更改覆铜焊盘的连接方式
    javascript生成ics、日程、日历
    Halcon Variable Inspect 安装失败
    不要错过,Hadoop、Spark 核心技术栈讲解
    计算机网络之IP数据格式(三)
    vuejs之父子组件的通信【props】和【$emit】
    elementUI 特定分辨率(如1920*1080)下el-row未超出一行却换行
    【蓝桥杯选拔赛真题61】Scratch小猫照镜子 少儿编程scratch图形化编程 蓝桥杯选拔赛真题解析
  • 原文地址:https://blog.csdn.net/2301_79410672/article/details/134436100