zoukankan      html  css  js  c++  java
  • rsync 守护进程模式小记

    .rsync英文称为remote synchronizetion,可以在本地或者远程两台主机之间快速传输数据,做到远程同步备份。相比scp,cp的全量备份,rsync还可以增量备份。

     

    远程方式:(普通推,拉方式)

    #拉取远程服务器目录及目录下的文件
    [root@web01 ~]# rsync -avz root@172.16.1.41:/tmp  ./
    #拉取远程服务器目录下的文件,不包含目录本身
    [root@web01 ~]# rsync -avz root@172.16.1.41:/tmp/  ./

    #将本地文件推送到远程

    [root@web01 ~]# rsync -avz file1 root@172.16.1.41:/root/

    注意:普通方式使用root用户,每次推送,拉取需要输入root用户的密码,在企业中这种情况是不被允许的。如果使用普通用户又会出现权限不足的情况,针对此种情况守护进程模式诞生了。

    守护进程模式:

    .两台机器,一台作为服务端,另外一台作为客户端,我们只需要将rsync服务部署到服务端,在客户端无需做任何操作就能将文件推送到远程服务端,自然也可以从远程服务端拉取需要文件到本地客户端。

    1.环境准备

    2.服务端安装rsync

    [root@backup ~]# yum install -y rsync

    3.编辑rsync配置文件

    [root@backup ~]# vim /etc/rsyncd.conf        

    uid = rsync        #指定运行程序的用户


    gid = rsync       #指定运行程序的用户


    port = 873        #服务的监听端口


    fake super = yes          #不需要root用户启动,安全机制


    use chroot = no            #限制操作目录(出于安全考虑)


    max connections = 200      #最大可连接数量(可调整)


    timeout = 600         #超时时间(可调整)


    ignore errors          #忽略错误


    read only = false        #关闭只读权限


    list = false              #查看模块列表


    auth users = rsync_backup        #指定授权的虚拟用户


    secrets file = /etc/rsync.passwd      #指定授权的虚拟用户的密码


    log file = /var/log/rsyncd.log       #日志文件
    #####################################


    [backup]        #模块名称


    comment = welcome to oldboyedu backup!       #注释


    path = /backup    真实的文件目录

     

     4.服务端创建用户

    [root@backup ~]# useradd  rsync -s  /sbin/nologin -M   

     

    5.服务端创建密码文件

    [root@backup ~]# echo "rsync_backup:123456" > /etc/rsync.passwd   

     

    6.密码文件授权

    [root@backup ~]# chmod 600 /etc/rsync.passwd

     

    7.服务端创建真实文件目录

    [root@backup ~]# mkdir /backup
    [root@backup ~]# chown -R  rsync.rsync  /backup/    

    #授权用户就是启动rsync服务的用户,参考配置文件

    8.服务端启动服务

    [root@backup ~]# systemctl  start  rsyncd   

    [root@backup ~]# netstat -lntp   

     
     tcp         0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      18673/rsync 
     tcp6       0      0 :::873                          :::*                   LISTEN      18673/rsync  
     
     

    服务端配置完成,注意事项总结:

    1.创建rsync服务的启动用户
    2.创建指定的密码文件,路径需是配置文件中的路径+授权600
    3.创建真实目录,授权用户权限
    4.服务启动后一定要验证是否启动成功
     
     

    客户端验证:

    [root@web01 ~]# rsync -avz 1.txt rsync_backup@172.16.1.41::backup
    Password:
    sending incremental file list
    1.txt
     
     

    关于密码:

    1.客户端根据提示手动输入密码

    2.将密码写入文件保存,推送或拉取时使用--password-file参数指定密码文件路径即可

    3.配置环境变量

    [root@web01 ~]# export  RSYNC_PASSWORD=123456

     


    *关于rsync报错原因解析*

    1. [root@web01 ~]# rsync -avz rsync_backup@172.16.1.41::backu ./

    @ERROR: Unknown module 'backu'


    *原因:模块名字出错,检查输入的模块名字与配置文件中的名字是否相同

     

    2. [root@web01 ~]# rsync -avz /tmp/ rsync_backup@172.16.1.41::backup

    sending incremental file list
    rsync: failed to write xattr user.rsync.%stat for "." (in backup): Permission denied (13)
    rsync: failed to set times on "." (in backup): Operation not permitted (1)
    ./

    sent 176 bytes received 205 bytes 762.00 bytes/sec
    total size is 0 speedup is 0.00
    rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1179) [sender=3.1.2]


    *原因:

    1.检查firewalld,selinux是否关闭

    2.权限不足,服务端创建的真实目录权限过高(root)

     

    3.[root@web01 ~]# rsync -avz /tmp/ rsync_back@172.16.1.41::backup

    @ERROR: auth failed on module backup

    *原因:
    1.虚拟用户错误,检查输入的用户名与配置文件中的用户名是否相同
    2.虚拟用户的密码输入错误
    3.密码文件权限不是600
    4.服务端密码文件不存在

     

     

    4. [root@web01 ~]# rsync -avz /tmp/ rsync_backup@172.16.1.41::/backup

    ERROR: The remote path must start with a module name not a /

    *原因:守护进程模式中::后面跟的是模块名字,而不是目录名字

     

     5.[root@web01 ~]# rsync -avz /tmp/ rsync_backup@172.16.1.41::backup

    rsync: failed to connect to 172.16.1.41 (172.16.1.41): Connection refused (111)

    rsync error: error in socket IO (code 10) at clientserver.c(125) [sender=3.1.2

    *原因:服务端服务没有启动




     6.[root@web01 ~]# rsync -avz /tmp/ rsync_backup@172.16.1.41::backup

    @ERROR: chdir failed

    *原因:服务端文件目录不存在

     

     

     

     

     

     

     

  • 相关阅读:
    windows10使用记录
    DevOps理论与实践总结
    工资调整
    Node程序debug小记
    基于游标的分页接口实现
    util.promisify 的那些事儿
    如何编写 Typescript 声明文件
    async语法升级踩坑小记
    使用TS+Sequelize实现更简洁的CRUD
    使用 TypeScript 改造构建工具及测试用例
  • 原文地址:https://www.cnblogs.com/wzj-qwerty/p/13492520.html
Copyright © 2011-2022 走看看