rsync同步服务器安装配置

1、什么是rsync 
   rsync 是一个Unix/Linux系统下的文件同步和传输工具。rsync是用 “rsync 算法”提供了一个客户机和远程文件服务器的文件同步的快速方法。
2、rsync 包括如下的一些特性 
   能更新整个目录和树和文件系统 
   有选择性的保持符号链链、硬链接、文件属于、权限、设备以及时间等 
   对于安装来说,无任何特殊权限要求 
   对于多个文件,内部流水线减少文件等待的延时 
   能用rsh、ssh 或直接端口做为传输入端口 
   支持匿名rsync 同步文件,是理想的镜像工具 
3、rsync的安装 
  几种常见的安装方式,根据爱好安装: 
  (1)yum install rsync

  (2)rpm –ivh rsync 
  (3)tar –zxvf rsync*.tar.gz 
     configure && make && make install 
4、配置rsync 
  因为rsync的配置灵活多样,所以安装好后并没有提供一个例子配置文件,这就需要我们手动来创建配置文件。 
vi /etc/rsyncd.conf 
(本例主服务器IP:192.168.1.3  备份服务器IP:192.168.1.9) 
# 备份以什么身份进行
 
uid = root 
gid = root 
use chroot = no 
max connections = 4 
pid file = /var/run/rsyncd.pid 
lock file = /var/run/rsync.lock 
log file = /var/log/rsyncd.log 
# 设置认证的模块名 
[down] 
#待同步文件的位置 
path = /home/down/ 
#认证的用户名,如果没有,则表明是匿名 
auth user = root 
uid = root 
gid = root 
#以可读可写方式
 
read only = no 
# 认证密码文件放置位置 
secrets file = /etc/rsyncd.secrets 


配置实例二 
uid = root 

gid = root 

use chroot = no 

max connections = 20 

pid file = /var/run/rsyncd.pid 

lock file = /var/run/rsync.lock 

log file = /var/log/rsyncd.log

[web] 

path = /var/www/html/bbs/ 

ignore errors 

read only = yes 

hosts allow = 192.168.1.0/16 

hosts deny = 0.0.0.0/32


创建用户认证文件 
vi /etc/rsyncd.secrets 

#可以加个用户,一行一用户
 
root:123123
 
为了安全,我们给认证文件加上600权限,这样,别的用户无法读到文件里的密码 


chmod 600 /etc/rsyncd.secrets
 
一切准备就绪,下面就可以记动rsync服务了,可以建一个启动脚本:方便每次系统启动 
时,服务自启动。 
#!/bin/sh 
rm -f /var/run/rsyncd.pid 
/usr/local/bin/rsync --daemon --config=/etc/rsyncd.conf
 

netstst -ant  可以查看rsync的工作端口873。如没有些端口,检查配置。 
5、配置备份服务器(192.168.1.9)的备份脚本,可以启用计划任务,定时备份。 
  vi /usr/local/rsync/bakcl.sh(备份脚本可以放在任意地方,加上可执行权限) 
#!/bin/sh 
rsync -vzrtopg --delete --progress root@192.168.1.3::down /tools/
 
或者
rsync -av 192.168.1.3::web /tools/


rsync参数这里不做详解,上例是把主服务器192.168.1.3其down下的所有内容备份到当前服务器(192.168.1.9)根下的tools目录下,如果没有其目录,会自动创建。 
6、恢复过程。恢复服务器一定要有写的权限。 
  vi /usr/local/rsync/rebakcl.sh 
#!/bin/sh 
rsync -vzrtopg --delete --progress /tools/ 
root@192.168.1.3::down

7、启动计划任务,定时每天早上6:30自动备份: 
  crontab -e 

30 6 * * * root /bin/sh /usr/local/rsync/bakcl.sh