Rsync 实现文件定时同步

rsync的规划:html

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

 rsync 同步的大体思路:shell

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

rsync 同步有下面几个优势:vim

    能够镜像 保存整个目录树和文件系统。安全

    能够很容易作到保持原来文件的权限、时间、软硬连接等等。bash

    无须特殊权限便可安装。服务器

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

    安全:可使用scp、ssh等方式来传输文件,固然也能够经过直接的socket链接。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

相关文章
相关标签/搜索