设为首页 收藏本站
查看: 426|回复: 0

[经验分享] rsync服务端快速搭建

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-11 08:32:59 | 显示全部楼层 |阅读模式
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.创建启动脚本

[iyunv@xfwy shell]# vim rsyncd.py
#!/usr/bin/env python
# chkconfig: 35 24 96
#
# date: 2015.11.10
# ver: 1.0
# use Centos 6.x
# config: /etc/rsyncd/rsyncd.conf
# exit :
# 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服务

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

3.客户端连接

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

简单介绍其它同步参数

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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-137695-1-1.html 上篇帖子: centos6.4 安装163yum源 下篇帖子: app-v 5.0 sp3 安装部署与维护 服务端
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表