rsync服务端快速搭建

1. 创建配置文件

配置文件为不存在需要自己新建

mkdir /etc/rsyncd
touch /etc/rsyncd/rsyncd.conf #主配置文件;
touch /etc/rsyncd/rsyncd.secrets #用户名密码配置文件;
touch /etc/rsyncd/rsyncd.motd #连接时提示信息
chmod 600 /etc/rsyncd/rsyncd.secrets #将密码权限修改,增加安全性
echo "wys:123456" >> /etc/rsyncd/rsyncd.secrets #写入账号和密码,注意这里的账号必须是系统账号,而密码是自定义密码
vim  /etc/rsyncd/rsyncd.conf

uid = root  #运行rsync的用户
gid = root #运行rsync的用户组
use chroot = yes #是否chroot到访问目录
max connections = 4 #最大并发数
port = 873 #运行端口
#motd file = /etc/rsyncd/rsyncd.motd #连接时提示信息
log file = /var/log/rsyncd.log #指定保存日志文件
pid file = /var/run/rsyncd.pid #运行Pid文件

[wys] #模块名称
    path = /tmp/test  #同步目录
    comment = a test #注释
    ignore errors #忽略--delete导致的I/O错误
    hosts allow = 192.168.1.0/24 #该模块允许IP
    hosts deny = 0.0.0.0/32  #该模块禁止的IP
    auth users = wys  #该模块认证的用户
    secrets file = /etc/rsyncd/rsyncd.secrets #登陆用户名密码

2.创建启动脚本

[root@xfwy shell]# vim rsyncd.py 
#!/usr/bin/env python
# chkconfig: 35 24 96
#
# Author: Eason Wang
# Contact: [email protected]
#
# Date: 2015.11.10
# Ver: 1.0
# Use: 
#       cp rsyncd.py /etc/init.d/rsyncd
#       chkconfig --add rsyncd
#       service rsyncd [start|stop|restart|reload]
# Config: /etc/rsyncd/rsyncd.conf
#
# Exit code: 
# 0 ==> EXIT_SUCCESS
# 1 ==> EXIT_FAILURE

import sys,os,commands,getopt,signal

rsync = '/usr/bin/rsync'
CFILE = '/etc/rsyncd/rsyncd.conf'
PFILE = '/var/run/rsyncd.pid'
prog = 'rsync'

daemon = "%s --daemon --config=%s" % (rsync,CFILE)
PROCESS = os.popen("ps -ef | grep rsync | grep -v 'grep' | awk '{print $2}'").read().split('\n')[0]
if os.path.exists(PFILE):
    RPFILE = open(PFILE).read().strip()
else:
    RPFILE = ''

def start():
    if not os.path.exists(rsync):
        print "FATAL: No such programme"
        sys.exit(1)
    if not os.path.exists(CFILE):
        print "FATAL: config file does not exist"
        sys.exit(1)
    print "start %s:" % prog
    if os.path.exists(PFILE): 
        if PROCESS == RPFILE:
            print "%s is runing!" % prog
        else:
            try:
                os.remove(PFILE)
            except:
                print "[ERROR] pid file Delete failed, Please check!"
            else:
                print "Delete the pid file..."
                start()
    else :
        a,b = commands.getstatusoutput(daemon)
        if a !=0 :
            print b
            sys.exit(1)
        print "[OK]"

def stop():
    print "stop %s:" % prog
    try:
        os.kill(int(RPFILE), signal.SIGKILL)
    except (IOError, ValueError):
        print "%s is not runing!" % prog
    else:
        if os.path.exists(PFILE):
            try:
                os.remove(PFILE)
            except:
                print "[ERROR] pid file Delete failed, Please check!"
            else:
                print "Delete the pid file..."
                stop()
        else:
            print "[OK]"




if __name__ == '__main__':
    arg = sys.argv[1:]
    if len(sys.argv[1:]) > 1:
        print "Too many arguments! Only one!"
        sys.exit(0)
    if not arg : 
        print "You must enter parameters!"
        sys.exit(0)

    if 'start' in arg: 
        start()
        sys.exit(0)
    elif 'stop' in arg: 
        stop()
        sys.exit(0)
    elif 'restart' in arg or 'reload' in arg:
        stop()
        start()
        sys.exit(0)
    else:
        print "only supports the following parameters: [start|stop|restart|reload]"

自己最近学python,就当练习了,写写还是发现,这种脚本用shell写着简单~
然后配置chkconfig

cp rsyncd.py /etc/init.d/rsyncd
chkconfig --add rsyncd

启动rsyncd服务

[root@xfwy shell]# service rsyncd start
start rsync:
[OK]

3.客户端连接

rsync -avzP [email protected]::wys  /tmp/test #格式是user@hostname/IP::Module 最后是同步到本地的文件夹
说明:
-a 参数,相当于-rlptgoD,-r 是递归 -l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件;
-z 传输时压缩;
-P 传输进度;
-v 传输时的进度等信息,和-P有点关系,自己试试。可以看文档;

简单介绍其它同步参数

rsync -avzP --delete [email protected]::wys  /tmp/test #表示客户端上的数据要与服务器端完全一致,如果目录中有服务器上不存在的文件,则删除.
rsync -avzP --delete --password-file=/root/rsync.password [email protected]::wys  /tmp/test   #这是当我们以wys用户登录rsync服务器同步数据时,密码将读取 rsync.password 这个文件,文件保存为纯密码  即echo "123456" > /root/rsync.password

你可能感兴趣的:(rsync配置,rsync启动脚本)