首页 > 代码库 > rsync自动同步

rsync自动同步

Rsync介绍

sync是类unix系统下的数据镜像备份工具——remote sync。一款快速增量备份工具 Remote Sync,远程同步支持本地复制,或者与其他SSHrsync主机同步。

特性如下:

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

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

3.无须特殊权限即可安装。

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

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

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

 

关于配置方面比较简单,服务器需要三个文件

rsyncd.conf -------主配置文件

rsyncd.secrets-----用户名密码文件

rsyncd.motd-------欢迎界面文件(可选,用于识别被访主机,本例不提)

客户端一般可以不需做设置

下面是配置服务器

 

查看或者安装

 

rpm -qa | grep rsync

rsync-3.0.6-9.el6.x86_64

 

Vi /etc/rsyncd.conf 配置文件是要手动创建的。

 

cat /etc/rsyncd.conf

stributed under the terms of the GNU GeneralPublic License v2

#Minimal configuration file for rsync daemon

#See rsync(1) and rsyncd.conf(5) man pages forhelp

 

# This line is required by the/etc/init.d/rsyncd script

#告诉进程写到 /var/run/rsyncd.pid 文件中

pid file = /var/run/rsyncd.pid  

 

#指定运行端口,默认是873

port = 873

 

#指定服务器IP地址

address = 192.168.100.210

 

#服务器端传输文件时,要发哪个用户和用户组来执行,默认是nobody如果用nobody 用户和用户组,可能遇到权限问题

#uid = nobody

#gid = nobody   

uid = root  

gid = root 

 

#一个安全选项详情自己去查查

use chroot = yes 

 

#read only 是只读选择,也就是说,不让客户端上传文件到服务器上。还有一个 write only选项

read only = yes

 

#在您可以指定单个IP,也可以指定整个网段,能提高安全性。格式是ip ip 之间、ip和网段之间、网段和网段之间要用空格隔开

#limit access to private LANs

hosts allow=192.168.100.0/255.255.255.010.0.1.0/255.255.255.0 

hosts deny=*

 

max connections = 5

motd file = /etc/rsyncd.motd

 

#This will give you a separate log file

#log file = /var/log/rsync.log

 

#This will log every file transferred - up to85,000+ per user, per sync

#transfer logging = yes

 

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

syslog facility = local3

timeout = 300

 

 #指定文件目录所在位置

[home] 

path = /home/server   

list=yes #是否可以列出目录

ignore errors # #忽略IO错误

 

#auth users必须是在服务器上存在的真实的系统用户,如果你想用多个用户以,号隔开,比如auth users = easylife,root

auth users = root

secrets file = /etc/rsyncd.secrets 

comment = This is RHEL 4 data

可以看到有密码文件在/etc/rsyncd.secrets,也是要手动创建。

cat /etc/rsyncd.secrets

root:123456

这里用的用户名是root 密码是123456

也可以加入多个用户以及密码,格式

root:123456

tom:tom123

创建后此文件权限必须是600 可用chmod 600 /etc/rsyncd.secrets更改。

服务器端启动 rsync –daemon

查看启动服务所用的端口 lsof –I:873

lsof -i:873

COMMAND PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

xinetd 1598 root    5u  IPv6 13172      0t0  TCP *:rsync (LISTEN)

这里我之前安装了xinetd保护进程,可以直接用

 

chkconfig | grep rsync

    rsync:           启用

 

也可以将其加入到系统启动

vi /etc/rc.d/rc.local

/usr/bin/rsync –daemon

保存

服务器已经完毕!

 

客户端不用启动rsync服务

  1. 1.  密码文件

  2. 2.  同步的目录,此处用的

cat /etc/rsyncd.secrets

123456

  1. 3.  必须更改密码文件权限问600,与服务器端一致

ll /etc/rsyncd.secrets

-rw-------. 1 root root 7 1  2606:14 /etc/rsyncd.secrets

 

查看服务器共享的数据源可以看到服务器的同步模块是【home,在主配置文件中可看到

rsync --list-only root@192.168.100.200::

 

home             This is RHEL 4 data

 

测试同步:

在服务器端

touch/home/server/111

[root@temobi ~]#ls /home/server/

111

客户端执行

rsync -avzProot@192.168.100.200::home /home/ftp

 

Password:

receivingincremental file list

./

111

           0 100%    0.00kB/s   0:00:00 (xfer#1, to-check=0/2)

 

sent 76bytes  received 146 bytes  63.43 bytes/sec

total size is0  speedup is 0.00

 

文件111已经同步到客户端本地/home/ftp

ls /home/ftp

111

现在要按时或者定时去让客户端同步服务器文件,用crontab加脚本完成

Vi /tmp/ rsyncd.sh

内容:

cat /tmp/rsyncd.sh

rsync -avzP --delete--password-file=/etc/rsyncd.secrets root@192.168.100.200::home /home/ftp/

--delete参数说明:客户端必须和服务端文件一直,多余的数据会被删除,注意务必同步到重要数据的目录或者将数据进行备份

保证密码文件目录正确

 

crontab -e

*/5 * * * * sh /tmp/rsyncd.sh #5分钟执行一次同步;

服务端新建222

touch /home/server/222

等时间到了看客户端

ls /home/ftp

111  222

已经实现定时同步功能。

查看crond任务以及状态

crontab -l

*/5 * * * * sh /tmp/rsyncd.sh

service crond status

crond (pid  1954) 正在运行...

crond可以用kill关闭

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


本文出自 “技术成就梦想” 博客,请务必保留此出处http://2367685.blog.51cto.com/2357685/1609375

rsync自动同步