• rsync远程拷贝服务搭建


    一、rsync简介:

      rsync是一款远程数据同步的工具,是一款开源的,快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具,Rsync 软件适用于 Linux Windows等多种操作系统,并且他可以不改变数据的任何属性和内容。

      rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似ssh的scp命令,但又优于scp命令的功能,scp每次都是全量备份,而rsync支持增量备份,当然。rsync还可以在本地主机的不同分区和目录之间全量及增量的复制数据,这又类似于cp命令,但又优于cp命令,cp每次都是全量备份,rsync可以支持增量备份

    二、rsync参数:

    -v	详细模式输出,传输时的进度等信息,
    -z	传输时进行压缩以提高传输效率 -compress-level=NUM  ,可以按级压缩,
    -a	归档模式,表示以递归方式传输文件,并保持所有文件属性,等同于 -rtopgDl,相当于包含以下所有
    r	对子目录以递归模式,即目录下的所有目录都同样传输,注意事小写r
    -t	--times 	保持时间属性一致
    -o	--owner	保持文件属主信息
    -p	--perms	保持文件权限
    g	--group	保持文件属组信息
    -P	显示同步的过程以及传输时的进度等信息
    -D	保持设备文件信息,
    -I	保留软连接,
    
    还有一些其他参数:
    -e			     使用隧道模式,
    --delete			让目标目录SRC和源目录数据DST一致,
    --exclude=PATTERN		指定排除不需要传输的文件模式
    --bwlimit=RATE  		限速
    (案例:某DBA做数据同步rsync,导致用户无法访问网站)
    1、使用rsync的参数,做限速
    2、备份尽量在晚上做备份,
    补充:rsync scp ftp都有限速的功能,
    

    三、rsync的三种工作模式:

      1、rsync本地工作模式

      rsync的本地模式相当于cp命令,可以实现本地的文件复制,可以加参数来保持文件的属性一致。

    ;单台服务器使用rsync实现备份操作:
    [root@localhost /]# yum install rsync -y
    [root@localhost opt]# cp /etc/hosts /opt/
    [root@localhost opt]# ll /opt/
    total 4
    -rw-r--r--. 1 root root 158 Jul 30 08:54 hosts
    [root@localhost opt]# rm -f /opt/hosts 
    [root@localhost opt]# rsync /etc/hosts /opt
    [root@localhost opt]# ll /opt/hosts 
    -rw-r--r--. 1 root root 158 Jul 30 08:55 /opt/hosts

      2、rsync使用远程ssh通道工作模式:

      使用-e参数可以是实现rsync通过远程ssh通道实现跨主机的备份操作,需要注意的是,两台主机都需要已经安装rsync。使用ssh连接会有一个问题就是传输很慢,可以采用一下方式优化:

      修改/etc/ssh/sshd_config以下几行:  

      GSSAPIAuthentication no
      #GSSAPIAuthentication yes
      UseDNS no

      然后使用rsync远程ssh通道实现跨主机文件备份:

    [root@localhost backup]# rsync -avz /backup/pandj.txt -e "ssh -p 22" root@192.168.80.129:/opt
    root@192.168.80.129's password: 
    sending incremental file list
    pandj.txt
    
    sent 97 bytes  received 35 bytes  37.71 bytes/sec
    total size is 5  speedup is 0.04
    [root@localhost backup]# ssh 192.168.80.129
    root@192.168.80.129's password: 
    Last login: Mon Jul 30 09:09:52 2018 from 192.168.80.1
    [root@localhost ~]# ip add | grep 192.168
        inet 192.168.80.129/24 brd 192.168.80.255 scope global dynamic ens33
    [root@localhost ~]# cd /opt/
    [root@localhost opt]# ll
    total 4
    -rw-r--r--. 1 root root 5 Jul 30 09:46 pandj.txt
    

      3、rsync daemon 服务模式:

      相当于搭建一个备份服务器,上面跑一个rsync服务,(服务称之为daemon)监听 873 端口,然后有其他的客户端服务器, 在客户端服务器上使用rsync命令,实现可以和服务器 推 和 拉 的作用, 推拉都是在客户端的操作,

      服务端编辑rsync配置文件:

    #用户uid,相当于进程对应的虚拟用户远端的命令要使用rsync来访问目录
     uid = rsync
     #gid 相当于进程对应的用户组
     gid = rsync
     #安全相关
     use chroot = no 
     #最大连接数量
     max connections = 200
     #进程对应的进程号文件
     pid file = /var/run/rsyncd.pid
     #日志文件
     log file = /var/log/rsyncd.log
     #超时时间
     timeout = 900
    
     [backup]
    #服务端提供访问的目录 path = /backup #忽略错误 ignore errors #只读为假表示 可写 read only = no #允许列表 list = yes #虚拟用户 auth users = rsync_backup #虚拟账号对应的用户和密码 secrets file = /etc/rsync.password

      服务端rsync配置文件配置好之后,还需要创建一个rsync用户和 /backup 这个目录,访问逻辑就是源端用户连过来的时候用的就是rsync这个用户访问 /backup 这个目录,在这个过程中,需要注意文件的权限,以及配置文件中虚拟用户的账户密码文件配置。

    [root@localhost ~]# useradd rsync -s /sbin/nologin -M               //创建一个rsync用户 不需要登陆,不需要家目录。
    [root@localhost ~]# tail -1 /etc/passwd
    rsync:x:1001:1001::/home/rsync:/sbin/nologin
    [root@localhost ~]# mkdir /backup			 //创建一个backup目录
    [root@localhost ~]# ll -d /backup/
    drwxr-xr-x. 2 root root 23 Jul 30 09:46 /backup/
    
    //到这边远端用户还是访问不了/backup这个目录,因为有权限的控制,需要我们把这个目录的属主改成rsync,也可以用chmod 777但是这样不安全,不建议使用
    [root@localhost ~]# chown -R  rsync.rsync /backup
    [root@localhost ~]# ll -d /backup/
    drwxr-xr-x. 2 rsync rsync 23 Jul 30 09:46 /backup/
    
    //然后检查配置文件,还少一个虚拟账号对应的密码文件 secrets file = /etc/rsync.password 编辑此文件并修改此文件的权限,
    [root@localhost ~]# echo "rsync_backup:123456" > /etc/rsync.password
    [root@localhost ~]# tail -1 /etc/rsync.password 
    rsync_backup:123456
    [root@localhost ~]# chmod 600 /etc/rsync.password 
    [root@localhost ~]# ll /etc/rsync.password 
    -rw-------. 1 root root 20 Jul 31 09:25 /etc/rsync.password
    
    //启动rsync服务,并加入开机自启,查看端口确认服务是否起来。
    [root@localhost ~]# /usr/bin/rsync --daemon
    [root@localhost ~]# echo "/usr/bin/rsync --daemon" >> /etc/rc.local 
    [root@localhost ~]# lsof -i:873
    COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    rsync   2245 root    4u  IPv4  20736      0t0  TCP *:rsync (LISTEN)
    rsync   2245 root    5u  IPv6  20737      0t0  TCP *:rsync (LISTEN)
    

      

      服务端至此配置完成,配置客户端的步骤如下:

      1、需要配置一个密码文件,和服务端一致并修改权限

    [root@client ~]# echo "rsync_backup:123456" > /etc/rsync.password
    [root@client ~]# chmod 600 /etc/rsync.password 
    [root@client home]# tail -1 /etc/rsync.password 
    rsync_backup:123456
    

      2、创建一个 /backup 目录,用来测试

    [root@client backup]# mkdir /backup/
    

      3、测试推送

    //在服务端 /backup 目录下创建一个测试文件
    [root@localhost backup]# touch test
    [root@localhost backup]# echo 11111 > test
    //在客户端拉取服务区的文件
    [root@client backup]# pwd
    /backup
    [root@client backup]# ll
    total 0
    [root@client backup]# rsync -avz rsync_backup@192.168.80.128::backup /backup/
    receiving incremental file list
    ./
    test
    
    sent 50 bytes  received 127 bytes  354.00 bytes/sec
    total size is 6  speedup is 0.03
    [root@client backup]# ll
    total 4
    -rw-r--r--. 1 root root 6 Jul 31 11:12 test
    [root@client backup]# more test 
    11111
    

      如果想要非交互式的传输,可以用以下命令:

    [root@localhost backup]# rsync -avz /backup/ rsync_backup@192.168.80.130::backup/ --password-file=/etc/rsync.password 

     

    四、配置过程中的注意点:

      1、服务端的目录属主要修改成配置文件中的用户,否则会有权限问题

      2、虚拟用户密码文件服务端内容为:虚拟用户名:密码   客户端密码配置内容为  密码,且两个文件权限均需要修改成600

    五、rsync配置中常见的问题:

    1、配置文件问题

    @ERROR: chroot failed

    rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6] 

    排查思路;
    1、命令解析: 客户端使用 命令 参数 目录 虚拟用户@服务端地址::模块名/ --password-file=/etc/rsync.password 来往服务端同步信息,
    2、排查地址及端口,服务端使用lsod -i :873 或者 netstat -lntup | grep 873 来查看服务是否存在
    然后在客户端 telnet 服务端地址加端口,排查是否地址端口存在问题,
    3、不加 --password-file 参数,手动输入密码,看用户名和密码是否能登陆上
    虚拟用户名和密码都定义在 /etc/rsyncd.conf配置文件中
    auth users = rsync_backup
    secrets file = /etc/rsync.password
    /etc/rsync.password 文件需要创建,服务端中输入rsync_backup:123456,用户名密码
    /etc/rsync.password 客户端中输入 joywise
    4、能连接上,排查 uid gid 中rsync是否存在,[backup]模块中目录地址是否正确,
    5、查看 [root@backup backup]# tail -10 /var/log/rsyncd.log
    提示我 /backup 这个目录找不到,ll -d /backup查看目录确实存在,怀疑问题在配置文件中的[backup] 模块中 path 中,经过排查, path = /backup 这条配置后面有很多空格导致找不到目录,所有提示 chroot failed,修改配置文件,然后再从客户端推,解决问题。

      

      

      

      

  • 相关阅读:
    10.$和#的区别 | 11.添加对象时如何把生成的id返回
    9. Mybatis的分页助手(pageHelper):
    8.逆向工程
    7.动态Sql语句
    6.关联查询
    5.解决列名与属性名不一致的情况
    4.接口与映射文件结合使用
    3.优化Mybatis
    2、Mybatis的编程Demo
    阿帕奇ab测试
  • 原文地址:https://www.cnblogs.com/pandj/p/9391966.html
Copyright © 2020-2023  润新知