• rsync详解


     Rsync简介

    1.Rsync英文全称Remote synchronization,从软件的名称就可以看出来,Rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像,远程备份的功能,这个功能类似ssh带的scp命令,但又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝。当然,Rsync还可以在本地主机的不同分区或目录之间全量及增量的复制数据,这又类似cp命令,但同样也优于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝。

    2.一个rsync相当于scp,cp,rm,但是还优于他们每一个命令。在同步备份数据时,默认情况下,Rsync通过其独特的“quick check”算法,它仅同步大小或者最后修改时间发生变化的文件或目录,当然也可根据权限,属主等属性的变化同步,但需要指定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可以实现快速的同步备份数据。

    Rsync的特性

    Rsync的特性如下:

    • 支持拷贝特殊文件如链接文件,设备等
    • 可以有排除(tar?find?)指定文件或目录同步的功能,相当于打包命令tar的排除功能
    • 可以做到保持原文件或目录的权限,时间,软硬链接,属主,组等属性均不改变-p
    • 可以实现增量同步,既只同步发生变化的数据,因此数据传输效率很高(tar-N)
    • 可以使用rcp,rsh,ssh等方式来配合传输文件(rsync本身不对数据加密)
    • 可以通过socket(进程方式)传输文件和数据(服务端和客户端)
    • 支持匿名的或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像

    部署

    首先需要安装rsync和openssh-client两个软件: 

    openssh-clients ----实现ssh通道传输数据 
    1)配置rsyncd.conf 
    首先确认 rsync软件是否安装 : 
    Rpm -qa rsync 
    Vim /etc/rsyncd.conf,添加下面内容

    # 用户 uid = rsync

    # 组 gid = rsync

    # 程序安全设置 use chroot = no

    # 客户端连接数 max connections = 200

    # 超时时间 timeout = 300

    # 进程号文件位置 pid file = /var/run/rsyncd.pid

    # 进程锁 lock file = /var/run/rsync.lock

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

    ##########################################

    [backup]

    # 使用目录

    path = /backup/

    # 有错误时忽略 ignore errors

    # 可读可写(true或false) read only = false

    # 阻止远程列表(不让通过远程方式看服务端有啥) list=false

    # 允许IP hosts allow = 192.168.197.0/24

    # 禁止IP hosts deny = 0.0.0.0/32

    # 虚拟用户 auth users = rsync_backup

    # 存放用户和密码的文件 secrets file = /etc/rsync.password

    ##rsync_config______end## 

    2)创建共享目录及添加rsync程序用户 
    useradd -M -S /sbin/nologin rsync 
    mkdir /backup 
    3)启动服务 
    rsync --daemon 
    netstat -antup | grep rsync 
    4)将服务器端上的/backup文件夹更改属主属组 
    chown -R rsync /backup 
    ll -d /backup 
    5)将账户密码文件的权限设定为600 
    Echo “rsync_backup:123456” > /etc/rsync.password 
    6)加入开机自启动 
    Echo “rsync --daemon” >> /etc/rc.local

    如何重启rsync服务? 
    pkill rsync 关闭rsync服务 
    rsync --daemon 启动rsync服务 
    二 部署rsync客户端 
    1)检查rsync是否安装 
    rpm -qa rsync 
    1)创建密码文件 
    echo “123456” >> /etc/rsync.password 
    2)将密码文件的权限设置为600 
    chmod 600 /etc/rsync.password 
    ll -d /etc/rsync.password 
    测试: 
    1)将客户端的(指定目录/目录内容)推送到服务器端的指定目录下 
    Rsync -avz /data/ rsync_backup@192.168.200.128::backup --password-file=/etc/rsync.password 
    命令说明: 
    -avz:保持稳健各项属性不变,-v显示同步信息 -P显示具体同步过程 
    /backup/:要推送的内容所在目录 
    rsync_backup:服务器端rsync服务的同步的用户名(非Linux用户) 
    192.168.200.128:rsync服务器IP地址 
    backup:rsync服务器配置文件里的模块名 
    --password-file=/etc/rsync.password:免密码的操作,指定密码文件位置,如果不写,则会要求用户交互式输入密码。(如果想挂定时任务,必须得非交互式) 
    2)将服务器端的指定目录下的内容推送到客户端,同步 
    Rsync -avz rsync_backup@192.168.200.128::backup /data --password-file=/etc/rsync.password 
    3)将服务器端指定目录下的全部内容排除某目录或文件后,同步到客户端 
    rsync -avz --exclude=a --exclude=chen/3 --exclude=chen/4 rsync_backup@192.168.197.129::backup /backup/ --password-file=/etc/rsync.password 
    4)让客户端的指定目录内容始终和rsync服务端始终保持一致 
    Rsync -avz --delete rsync_backup@192.168.197.129::backup /backup/ --password-file=/etc/rsync.password

    Rsync 优点和缺点 
    1)增量备份,支持socket进程(daemon),集中备份 
    2)远程SHELL通道模式还可以加密(ssh)传输

    3)大量小文件同步的时候,比对时间较长,有时候在同步过程中,rsync进程可能会停止僵死了 
    4)同步大文件,10G以上的有时会出现问题,(中断) 
    5)一次性拷贝可以使用scp,大量小文件打成一个包在拷贝

    1.9.1 Rsync服务端排错思路 
    查看rsync服务配置文件路径是否正确,正确的默认路径为:/etc/rsyncd.conf 
    查看配置文件里host allow,host deny,允许的IP网段是否是允许客户端访问的ip网段 
    查看配置文件中path参数里的路径是否存在,权限是否正确(正常应为配置文件中的UID参数对应的属主和组) 
    查看rsync服务是否启动。查看命令为:ps -ef|grep rsync。端口是否存在netstat -antup |grep 873 
    查看iptables防火墙和selinux是否开启允许rsync服务通过,也可以考虑关闭。 
    查看服务端rsync配置的密码文件是否为600的权限,密码文件格式是否正确,正确格式为:用户名:密码,文件路径和配置文件里的secrect files参数对应。 
    如果是推送数据,要查看下,配置rsyncd.conf文件中用户是否对模块下目录有可读写的权限。 
    1.9.2 Rsync客户端排错思路 
    查看客户端rsync配置的密码文件是否600的权限,密码文件格式是否正确,注意:仅需要有密码,并且和服务器端的密码保持一致。 
    用telnet连接rsync服务器ip地址873端口,查看服务是否启动(可测试服务端防火墙是否阻挡)telnet 192.168.197.129 873 
    客户端执行命令时:rsync -avzP rsync_backup@192.168.197.129::backup /backup/ --password-file=/etc/rsync.password 
    此命令的细节要记清楚,尤其192.168.197.129::backup 处的双冒号及其后的backup为模块名称

  • 相关阅读:
    如何给工科生做一个演讲DEMO
    JAVA事务处理系列 值得看
    今天开通了博客,准备开始写点东西或者记录点东西!或者转载点东西!
    屌丝程序员如何打造日PV百万的网站架构
    拥抱大数据时代 DB架构设计
    根据并发请求id查找相应trace信息
    FRM30187: Size of CHAR column in record group must be between 1 and 2000
    10046 SQL trace 的做法
    Oracle 表空间不足的处理办法
    LoadRunner在EBS R12上运行需更改服务器为Socket模式
  • 原文地址:https://www.cnblogs.com/666boke/p/9933105.html
Copyright © 2020-2023  润新知