配置文件为不存在需要自己新建
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 #登陆用户名密码
[root@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服务
[root@xfwy shell]# service rsyncd start start rsync: [OK]
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
本文出自 “Cool King” 博客,请务必保留此出处http://coolk.blog.51cto.com/1752609/1711543
原文地址:http://coolk.blog.51cto.com/1752609/1711543