Rsync 实现文件定时同步

rsync的规划:

Rsync配置前首先规划好,同步的方向性。方向性分为推和拉的方式,规划推、拉是为了可以在防火墙设置端口是谁主动连接。例如:一般为从APP服务器生成的静态页面使用推的方式将文件推送到Apache服务器上。下面就是使用推的方式进行配置。

 rsync 同步的大致思路:

服务器A和B上都安装rsync,其中B服务器上是以服务器模式运行rsync,而A上则以客户端方式运行rsync。这样在web服务器B上运行rsync守护进程,在A上定时运行客户程序来同步web服务器B上需要同步的内容。

rsync 同步有下面几个优点:

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

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

    无须特殊权限即可安装。

    快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程中可以实行压缩及解压缩 操作,因此可以使用更少的带宽。

    安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。

    支持匿名传输,以方便进行网站镜象。

1. rsync的安装(客户端和服务端都需要安装):

#下载 http://www.samba.org/rsync/
shell> tar zxvf rsync-x.x.x.tar.gz
shell> cd rsync-x.x.x
shell> ./configure && make && make install


#或者


sudo apt-get install rsync
yum install rsync

2. rsync的配置

rsync的主要有以下三个配置文件rsyncd.conf(主配置文件)、rsyncd.secrets(密码文件)、rsyncd.motd(rysnc服务器信息)

rsync服务端配置:

    2.1  rsyncd.conf

uid =backup #/etc/rsyncd.conf 所属用户ID,一般为root
gid =backup #/etc/rsyncd.conf 所属权限组


use chroot = no   #在传输文件的之前,是否转到用户根目录。
max connections = 4   #最大连接数


pid file = /var/run/rsyncd.pid   #服务进程pid保存文件
lock file = /var/run/rsyncd.lock  #锁文件路径

log file = /var/log/rsyncd.log  #日至文件路径

log format = %t %a %m %f %b

#模块儿里的公共属性也可以在全局定义,譬如:
hosts allow = 10.29.204.107  #允许访问的ip地址,如果有多个ip,请用空格分割。


[web] #要备份的模块名,该名称客户端进行同步时需要调用   
                         
path = /disk1/www/imageserver/Public_admin   #要备份的目录
ignore errors    #可以忽略一些无关的IO错误

read only = true  # // 只读
list = false  #//不允许列文件

hosts allow = 10.29.204.107
hosts deny = 0.0.0.0/32

auth users = zhangsan   #//认证的用户名,如果没有这行则表明是匿名,此用户与系统无关
secrets file = /etc/rsyncd/backup.secrets  #//密码和用户名对比表,密码文件自己生成

exclude = important/   #指定不需要同步的目录名,注意,该目录的路径是相对path的。不需要些绝对路径,如果有多个目录不需要同步,请用空格分割开.
comment = This is a test    #这个模块的注释信息

注意:auth users = zhangsan,这个和系统用户名没有关系,只是rsync自己的用户管理。

需要将rsyncd.conf更改权限。将rsyncd.conf这个密码文件的文件属性设为root拥有, 且权限要设为600, 否则无法备份成功!   

   2.2   rsyncd.secrets

配置rsync密码(在上边的配置文件中已经写好路径) rsync.pas(名字随便写,只要和上边配置文件里的一致即可),格式(一行一个用户)

zhangsan:passwd

需要将rsyncd.secrets更改权限。将rsyncd.secrets这个密码文件的文件属性设为root拥有, 且权限要设为600, 否则无法备份成功!

chmod 600 /etc/rsyncd/server/rsyncd.secrets

rsync客户端配置:

配置密码文件,这个密码是rsync请求服务端需要的认证密(/etc/rsyncd/server/rsyncd.secrets里的密码)

]# vim /etc/rsyncd/client.pass

passwd

3. 服务端配置 rsync 服务

3.1. 配置 rsync 服务器的步骤

  • 首先要选择服务器启动方式

    • 对于负荷较重的 rsync 服务器应该使用独立运行方式

    • 对于负荷较轻的 rsync 服务器可以使用 xinetd 运行方式

  • 创建配置文件 rsyncd.conf

  • 对于非匿名访问的 rsync 服务器还要创建认证口令文件

3.2. 以 xinetd 运行 rsync 服务

CentOS 默认以 xinetd 方式运行 rsync 服务。rsync 的 xinetd 配置文件
在 /etc/xinetd.d/rsync。要配置以 xinetd 运行的 rsync 服务需要执行如下的命令:

# chkconfig rsync on
# service xinetd restart

管理员可以修改 /etc/xinetd.d/rsync 配置文件以适合您的需要。例如,您可以修改配置行

server_args = --daemon

在后面添加 rsync 的服务选项。

3.3. 独立运行 rsync 服务

最简单的独立运行 rsync 服务的方法是执行如下的命令:

# rsync --daemon --config=/etc/rsyncd/rsyncd.conf

您可以将上面的命令写入 /etc/rc.local 文件以便在每次启动服务器时运行 rsync 服务。当然,您也可以写一个脚本在开机时自动启动 rysnc 服务。

4. 客户端使用rsync服务。

从server端拉取文件:

rsync -vzrtopg --progress --delete zhangsan@192.168.0.217::web /home/backup --password-file=/etc/rsyncd/client.pass

往server端推送文件:

rsync -vzrtopg --progress  --password-file=/etc/rsyncd/client.pas /home/backup zhangsan@192.168.0.217::web

镜像本地目录:

rsync -av --exclude="front/front_Runtime" --exclude="front/Html" /disk1/www/frontweb/* /disk1/www/frontweb_news

参数说明

参数名

说明

Rsync

同步服务

-vzrtopg

v详细提示
  a以archive模式操作,复制目录、符号连接
  z压缩
  u只进行更新,防止本地新文件被重写,注意两者机器的时钟的同时

--progress

显示进程

--delete

删除文件保持同步

zhangsan

服务器允许访问的用户名

192.168.0.217

服务器IP

::web

服务器中定义的备份模块名(注意:在模块名前面有两个冒号“::” 表示远程文件同步,只有一个冒号,表示本地文件同步)

/home/backup/

本地备份文件目录

 写成定时任务:

]# vim /root/crontab/tongbu.sh


#!/bin/bash
/usr/bin/rsync -vzrtopg --progress --delete zhangsan@192.168.0.217::web /home/backup --password-file=/etc/client.pass



]#  crontab -e

/5 * * * * /root/crontab/tongbu.sh   #五分钟运行一次

 

其他:

]#  rsync --daemon  #默认用/etc/rsyncd.conf配置文件启动

]#  rsync --daemon --config=/etc/rsyncd/rsyncd.conf   //指定配置文件启动

]#  killall -9 rsync  #结束

]# ps -ef | grep rsync #查看

]# netstat -a | grep rsync  #检查端口

]# telnet 192.168.1.190  873  #测试端口

rsync中出现的几种错误:

同步命令:

rsync -vzrtopg --progress  --delete --exclude=".svn" --password-file=/etc/rsyncd/apache.pass /var/data/codes/ backup@172.28.6.69::tbfrom79
[tbfrom79]
path = /var/www/html/online
ignore errors
read only = no
list = false
hosts allow = 172.28.6.79
hosts deny = 0.0.0.0/32
auth users =backup
uid=apache
gid=apache
secrets file = /etc/rsyncd/backup.pass

修改 /var/www/html/online所属用户和用户组为apache

 

转载于:https://my.oschina.net/shyl/blog/476580

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值