码迷,mamicode.com
首页 > 系统相关 > 详细

linux 文件同步 rsync+crontab

时间:2015-12-24 16:38:41      阅读:335      评论:0      收藏:0      [点我收藏+]

标签:服务器   linux   rsync   crontab   

Linux文件同步:主要使用rsynccrontab结合的方式同步

主机IP172.22.3.181

备机IP172.22.3.182

 

配置操作步骤: 

一.安装rsync

二.配置rsyncd.conf 与密码文件(两个步骤12

三.备份脚本

.安装rsync

备机 

1.服务器是否安装rsync 

Shell代码  技术分享

rpm -qa|grep –i rsync  


若有显示,说明已安装,则跳过
技术分享 
2.
安装rsync软件 
有两种安装方式: 
a.
利用 yum 安装 

Shell代码  技术分享

1. yum install rsync xinetd   



b.
源码安装 
下载源码自己编译 
http://rsync.samba.org/ftp/rsync/rsync-3.0.9.tar.gz 

Shell代码  技术分享

1. cd rsync-3.0.9  

2. ./configure  

3. make && make install  


.配置rsyncd.conf 与密码文件(两个步骤(1)和(2))
1)安装完rsync 服务,这个文件默认是没有的需要自己手动创建一个。 

Shell代码  技术分享

vi /etc/rsyncd.conf  #主要全局参数  

uid           = root  

gid           = root  

use chroot    = yes                 #为了安全考虑,让rsync运行于chroot环境  

log file      = /var/log/rsyncd.log #rsync的日志文件  

pid file      = /var/run/rsyncd.pid #rsyncpid文件  

  

[picData]  

comment = backup for picServer  

path = /opt/

read only = no  

auth users = root  

secrets file = /etc/rsync.pass  

hosts allow = 172.22.3.181,127.0.0.1  

  

:wq!  


技术分享
配置密码文件rsync.pass 

Shell代码  技术分享

1. vi /etc/rsync.pass  

2. root:123456  


格式:用户名:密码(用户名必须系统真是存在的用户,密码最好不要个系统密码一致) 
技术分享 
修改rsync.pass rsyncd.conf权限 
这个两个文件必须是600 不然服务不读 

Shell代码  技术分享

1. chmod  600 /etc/rsync.pass  

2. chmod  600 /etc/rsyncd.conf  


开启防火墙tcp873端口 

Shell代码  技术分享

1. vi /etc/sysconfig/iptables  

2. -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 873 -j ACCEPT  

3. wq  


启动rsync服务 
启动服务有两种方式: 
a
.使用rsync–daemon选项启动,rsync服务默认使用873号端口 
启动:/usr/bin/rsync--daemon --config=/etc/rsyncd.conf 
关闭:pkillrsync 
lsof –i:873 (
检查服务是否启动
技术分享 
b.xinetd
守护 
修改/etc/xinetd.d/rsync文件,把 
disable = yes 
改成 
disable = no 
然后重启xinetd即可, 
/etc/init.d/xinetd restart 
技术分享 
服务 
service xinetd start #
启动 
service xinetd stop #
停止 
service xinetd restart #
重新启动 
如果你的xinetd开机并没自动启动的话,需要执行 
chkconfig xinetd on 
到此rsync服务已经配置完成 
主机: 
1.
配置密码文件rsync.pass 

Shell代码  技术分享

1. vi /etc/rsync.pass  

2. 123456  

3. wq  


这个里面只配置密码 
修改文件的权限600 
2.
执行命令 
/usr/bin/rsync -vzrtopg--password-file=/etc/rsync.pass /etc/rsync.pass root@172.22.3.182::picData
执行成功 
技术分享

 

 

 

 

(2)配置密码文件来达到不输入密码的目的

在配置服务器之前要先生成密钥,ssh-keygen -t rsa,生成密钥如下:

[root@masternagios .ssh]# ls

id_rsa  id_rsa.pub

[root@masternagios .ssh]#             scp id_rsa.pub root@172.22.3.182:/root/.ssh/authorized_keys

在客户端也要如下操作:

[root@masternagios .ssh]# ssh-keygen -t rsa

[root@masternagios .ssh]# ls

id_rsa  id_rsa.pub  authorized_keys(3.181的公钥)

[root@masternagios.ssh]#

scp id_rsa.pub root@172.22.3.181:/root/.ssh/authorized_keys

这样两台机可以无密码SSH登陆,以便后面我们同步方便;当然,不要上述的操作也能实现;那么如下操作:

服务端:vi /etc/sery.pass  权限:600(chmod 600 /etc/sery.pass)

root:123456

客服端:

vi/etc/sery_client.pass  权限:600(chmod 600 /etc/sery_client.pass)

123456

生成的这两件文件后面有用处的;

主机

然后新建配置文件vi /etc/rsyncd.conf,内容如下图示:

技术分享

解析如下:

    uid = root          #root用户访问(我这里用ROOT用户,也可以用其他新建的用户)

    gid = root          #root组用户访问

    use chroot = yes      #能使用chroot

    max connections = 10  #最大连接数

    list = yes           #允许列出文件清单

    pid file = /var/run/rsyncd.pid

    lock file = /var/run/rsyncd.lock

    log file = /var/log/rsyncd.log

    hosts allow  = 172.22.3.182,172.22.2.200,127.0.0.1      #只允许这个主机访问

   [data]                   #发布项(注意这个命名)

    path = /webapps/IDManage        #发布的路径

    ignore errors

    read only = no           #只读

    auth users = root               #认证用户为root

    secrets file = /etc/sery.pass    #密码文件

然后我们来启动:

[root@masternagios ~]# rsync --daemon--config=/etc/rsyncd.conf

    [root@masternagios ~]# ps -ef |grep rsync

    root     21359     1 0 Aug24 ?        00:00:00 rsync --daemon --    config=/etc/rsyncd.conf

    root     24018 23885  0 10:38 pts/0   00:00:00 grep rsync

    [root@masternagios ~]#lsof -i:873

    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

    rsync   21359 root    4u IPv4 1558266      0t0  TCP *:rsync (LISTEN)

    rsync   21359 root    5u  IPv61558267      0t0  TCP *:rsync (LISTEN)

然后在客户端测试:

[root@dbserver ~]# telnet 172.22.3.181 873

Trying 172.22.3.181...

Connected to 172.22.3.181.

Escape character is ‘^]‘.

@RSYNCD: 30.0

^]

telnet> q

Connection closed.

说明网络端口开放,没有问题;通常在这配置时会发现一些问题,比如报错(111)--说明服务器端口未开启,就检查一下rsync服务有没有开启;

报错(1503)(1536)--说明无 [data] #发布项(注意这个命名),这里命令一定要对应上同步::[data];

我们再来把服务端rsync加自动启动;

echo"/usr/bin/rsync --daemon --config=/etc/rsyncd.conf">>/etc/rc.local

配置客户端;

客户端只要安装rsync这个命令便可以实现,所以,我们来测试同步实现;

[root@dbserver ~]#rsync -aSvH /webapps/IDManage/ root@172.22.3.181::data--password-file=/etc/sery_client.pass

可以看到:

技术分享

命令执行成功;说明服务端与客户端都没有问题;

.备份脚本 

备机crontab -e

*/1 * * * * rsync -zvrtopg --delete -progress -e ‘ssh -p22‘ root@172.22.3.181:/rstest/ /rstest/


linux 文件同步 rsync+crontab

标签:服务器   linux   rsync   crontab   

原文地址:http://406647516.blog.51cto.com/2249087/1727890

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!