zoukankan      html  css  js  c++  java
  • Linux的rsync 配置,用于服务器之间远程传大量的数据

    【教程主题】:rsync

    【课程录制】: 创E

    【主要内容】

    【1】 rsync介绍

    Rsync(Remote Synchronize) 是一个远程资料同步工具,可通过LAN/WAN快速同步多台主机,Rsync使用所为的“Rsync演算法”来使本地主机和远程主机之间达到同步,这个演算法并不是每次都整份传送,它只传送两台计算机之间所备份的资料不同的部分,因此速度相当快。

    Rsync的优点如下:

    1、可以镜像保存整个目录树和文件系统。

    2、可以很容易的做到保持原来文件的许可权、时间、软链接等。

    3、无须特使许可权即可安装。

    4、拥有优化的流程,文件传输效率高。

    5、可以使用RshSSH等方式来传输文件,当然也可以直接通过Socket连接。

    6、支持匿名传输。

             另外,与SCP相比,传输速度不是一个层次级的。我们在局域网时经常用RsyncSCP传输大量Mysql数据,发现Rsync至少比Scp20倍以上,所以大家如果需要在Linux/Unix服务器之间互传海量资料,Rsync是非常好的选择。

    【2】 rsync服务端方式

    首先检查rsync是否安装:

    rpm –q rsync

    rsync-2.6.8-3.1

    说明rsync已安装,如果提示出现 package rsync is not installed  则说明这个软件报没有安装大家可以使用yum进行安装

    另外,关闭防火墙和SElinux,因为是内网中传输,所以这些没必要

    service iptables stop && chkconfig iptables off 

    setenforce 0

    配置文件/etc/rsyncd.conf。这个文件是自己定义的,并不是系统创建的,当然你也可以叫不同的名字,后面再写上详细注释。

    uid = nobody

    gid = nobody

    user chroot = no

    max connections = 200

    timeout = 600

    pid file = /var/run/rsyncd.pid

    lock file = /var/run/rsyncd.lock

    log file = /var/log/rsyncd.log

    [backup]

    path=/backup/

    ignore errors

    read only = no

    list = no

    hosts allow = 192.168.0.0/255.255.255.0

    auth users = test

    secrets file = /etc/rsyncd.password

    注释:

    uid = nobody

    进行备份的用户,nobody 为任何用户

    gid = nobody 

    进行备份的组,nobody为任意组

    use chroot = no

    如果"use chroot"指定为true,那么rsync在传输文件以前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要以root权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true.但是这个一般不需要,我选择no或false

    list = no

    不允许列清单

    max connections = 200 

    最大连接数

    timeout = 600 

    覆盖客户指定的IP超时时间,也就是说rsync服务器不会永远等待一个崩溃的客户端。

    pidfile = /var/run/rsyncd.pid  

    pid文件的存放位置

    lock file = /var/run/rsync.lock  

    锁文件的存放位置

    log file = /var/log/rsyncd.log   

    日志文件的存放位置

    [backup]  

    这里是认证模块名,即跟samba语法一样,是对外公布的名字

    path = /backup/

    这里是参与同步的目录

    ignore errors  

    可以忽略一些无关的IO错误

    read only = no

    允许可读可写

    list = no

    不允许列清单

    hosts allow = 192.168.1.0/255.255.255.0

    这里跟samba的语法是一样的,只允许192.168.21.0/24的网段进行同步,拒绝其它一切

    auth users = test 

    认证的用户名

    secrets file = /etc/rsyncd.password  

    密码文件存放地址

    注意: 

    1、[backup]  认证模块名和 path = /backup/ 参与同步的目录

    这里的path 大家要记好了,这里不要随便的一设置就直接完事,要知道这里是认证模块的,以后从客户机备份的数据会存储在这里。

    2、auth users = redhat 认证的用户名 

    这个名字是服务器端实实在在存在用户,大家不要直接跟步骤走却忽略了这点。如果服务器端少了这个的话我估计你的数据同步就实现不了,大家要谨记。

    3、path = /backup/ 参与同步的目录

    这个需要稍后自己要在根目录下自己建

    cd /

    mkdir backup

    chmod –R 777 /backup

    echo “test:test” > /etc/rsync.password

    (这里我设置的是用户名和密码一致)

    为了安全起见,我设置他的权限为600

    chmod 600 /etc/rsync.password

    启动配置

    [root@test rsync-3.0.4]# vim /etc/xinetd.d/rsync 

    配置rsync servervi /etc/xinetd.d/rsync
    disable=yes改为no

    service rsync
    {
            disable = no
            socket_type     = stream
            wait            = no
            user            = root
            server          = /usr/bin/rsync
            server_args     = --daemon
            log_on_failure  += USERID
    }


    [root@test home]# /etc/init.d/xinetd restart
    Stopping xinetd:                                           [  OK  ]
    Starting xinetd:                                           [  OK  ]

    如果xinetd没有的话,需要安装一下
    [root@test home]# yum -y install xinetd


      RSYNC服务端启动的两种方法:
    启动rsync服务端(独立启动)
    [root@test home]# /usr/bin/rsync --daemon    on


    启动rsync服务端 (有xinetd超级进程启动)
    [root@test home]# /etc/init.d/xinetd reload

    配置rsync自动启动
    [root@test etc]# chkconfig rsync on
    [root@test etc]# chkconfig rsync --list
    rsync 


    加入rc.local
    在各种操作系统中,rc文件存放位置不尽相同,可以修改使系统启动时把rsync --daemon加载进去。
    [root@test home]# vi /etc/rc.local
    /usr/local/rsync –daemon           #加入一行

    客户端配置:

    echo “test” > /etc/rsyncd.password

    这里仅仅只需要密码,不需要用户了,免得要同步时还要手动互动

    chmod 600 /etc/rsync.password

    测试:下面delete表示删除目标存在而源目录不存在的文件的命令

    rsync -vzrtop --delete /home/ce test@192.168.0.206::backup --password-file=/etc/rsyncd.password

    从服务器上下载文件a:打包,v:详细信息,z压缩

    rsync -avz --password-file=/etc/rsyncd.password test@192.168.0.206::backup /home/

    从本地上传到服务器上去

    rsync -avz --password-file=/etc/rsyncd.password /home test@192.168.0.206::backup

    【3】rsync客户端方式

    常用:rsync -av

    下载:rsync [参数]  远程文件(远程路径)  本地目录  

    上传:rsync [参数]  本地文件              远程目录

    rsync常用参数

    如果不需要交互式的操作,rsync平时也可以像scp那样工作,下列为常用rsync参数。

    例子: rsync -av test@192.168.1.122:/home/test/3.txt .

    表示将服务192.168.1.122/home/test/3.txt文件复制到本客户度的当前目录其中“.”表示当前目录


    -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD 

    -v --verbose:详细模式输出
    -r --recursive:对子目录以返回模式处理。
    -p --perms:保持文件许可权
    -o --owner:保持文件属主信息
    -g --group:保持文件组信息
    -t --times:保持文件时间信息
    --delete:删除哪些DST中存在而SRC中不存在的文件或目录
    --delete-excluded:同样删除接收端哪些该选项制定排出的文件
    -z --compress:对备份的文件在传输时进行压缩处理
    --exclude=PATTERN:制定排除不需要传输的文件
    --include=PATTERN:制定不排除需要传输的文件
    --exclude-from=FILE:排除FILE中制定模式的文件
    --include-from=FILE:不排除FILE中制定模式匹配的文件

    ----------------------------------------------------------------------

    说明:从理论上将这个是行的通的,因为任何服务器都可以远程连接的,那么只要知道了ip,用户名,密码,就可以进入到服务器,就可以查看服务器中的文件

    这个当然就可以拷贝下来,然后另一台服务器又能登录,所以最原始的就可以将源服务器的文件拷贝到本地,然后上传到另一台服务器,rsync,相当于省掉中间一步

    就是直接将源服务器的文件传到另一台服务器,当然需要配置下,有两种方式

    第一种:服务器方式,需要配置一台服务器作为服务器(假装看做服务器,其实两个都是服务器),然后配置一个bakup文件,配置一个用户名和密码,专门用来被远程连接

    如果说的专业点,backup就是所谓的认证模块,用户名和密码文件就是所谓的认证文件,然后客户端,也需要配置一个密钥就是源服务器对应的用户的密码,然后在传输的过程

    中就设置下用户,ip参数,就相当于源服务器的用户名,密码,ip都有了,所以就可以传输了

  • 相关阅读:
    Delphi实现文件关联
    用Delphi实现文件关联
    Delphi 7使用自定义图标关联文件类型
    redux-form的学习笔记
    妙用 `package.json` 快速 `import` 文件(夹)
    【webpack2】-- 入门与解析
    黑科技:CSS定制多行省略
    DOM操作和样式操作库的封装
    webstorm 2016 激活破解
    js/jq仿window文件夹框选操作插件
  • 原文地址:https://www.cnblogs.com/sengling/p/5281481.html
Copyright © 2011-2022 走看看