Chinaunix首页 | 论坛 | 博客
  • 博客访问: 454533
  • 博文数量: 481
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 1040
  • 用 户 组: 普通用户
  • 注册时间: 2013-01-06 14:09
文章分类

全部博文(481)

文章存档

2013年(483)

我的朋友

分类: LINUX

2013-02-28 12:48:28

原文地址:使用Rsync同步备份数据 作者:jack_sir

使用rsync的优点:可通过ssh进行网络加密传输,也可以利用ssh客户端密钥建立信任关系。当在两台计算机之间保持大型、复杂目录结构的同步时候,比tar或wget等方式都要快。而且可以做到精确同步。

首先,安装rsync

yum install rsync
以上方法默认安装2.6.8, 建议安装3.0.X,据张宴博客介绍3.0.X的有比较更新(希望是比较智能的)
wget
tar -xvzf rsync-3.0.5.tar.gz; cd rsync-3.0.5;
./configure; make; make install

使用rsh或ssh方式同步数据

在没有建立rsync服务器的情况下,我们可以利用rsync命令直接进行快速的差异备份:

命令格式:
#rsync [option] 源路径 目标路径
其中[option]为:
a:使用archive模式,等于-rlptgoD,即保持原有的文件权限
z:表示传输时压缩数据
v:显示到屏幕中
e:使用远程shell程序(可以使用rsh或ssh)
–delete:精确保存副本,源主机删除的文件,目标主机也会同步删除
–include=PATTERN:不排除符合PATTERN的文件或目录
–exclude=PATTERN:排除所有符合PATTERN的文件或目录
–password-file:指定用于rsync服务器的用户验证密码

源路径和目标路径可以使用如下格式:

rsync://[USER@]Host[:Port]/Path     <–rsync服务器路径
[USER@]Host::Path                         <–rsync服务器的另一种表示形式
[USER@]Host:Path                          <–远程路径
LocalPath                                       <–本地路径

注意:来源或目的路径最少要有一个是本地路径,如果忽略本地路径,则只会列出远端的文件列表。
把远端机器ssh上789端口下的/home/www/logs/目录中的内容,通过rsync同步到本地的/home/www/logs/目录下:
#rsync -ave “ssh -p 789″ backup@192.168.1.98:/home/www/logs/ /home/www/logs/
注意:源路径结尾时候的/号,后缀/通知rsync复制该目录的内容,但不复制目录本身。

例如,下面命令会把pub目录整个同步到本地/home/ftp/路径中:

#rsync -ave ssh backup:/home/ftp/pub /home/ftp/

使用rsync服务器方式同步数据

当服务器没有开通ssh,或备份方没有ssh权限的时候,我们可以通过建立rsync服务器,进行匿名的数据同步。

要使用rsync服务,需要建立服务端和客户端:

1. 配置rsync服务器:
创建rsyncd的配置文件/etc/rsyncd.conf,内容如下:
uid = nobody
gid = nobody
use chroot = no
max connections = 4
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[logs]
path = /home/www/logs
ignore errors
read only = true
list = false
hosts allow = 192.168.1.200
hosts deny = 0.0.0.0/32
auth users = backup
secrets file = /etc/backserver.pas
[app1]
path = /app/application1/
ignore errors
read only = true
list = false
hosts allow = 192.168.1.200
hosts deny = 0.0.0.0/32
uid = dev01
gid = dev01
auth users = backup
secrets file = /etc/backserver.pas

帐号密码文件:
#vi /etc/backserver.pas

#格式:帐号:密码 (每行一组,帐号和密码用:号分开)

backup:jeff

保存后,需要保证用户是root,权限是600

#chown root:root /etc/backserver.pas
#chmod 600 /etc/backserver.pas

2.启动rsync服务

/usr/bin/rsync –daemon

服务启动后侦听873/TCP端口

要置开机启动rsync服务, 编辑/etc/rc.d/rc.local,在最后添加上述命令

3.设置rsync客户端设置

如果rsync服务器需要密码验证,可以增加–password-file参数:

#rsync -azv --delete rsync://linuxing@192.168.1.100/test /var/www/html --password-file=/etc/test
crontab -e
00 04 * * * /usr/bin/rsync -arv /home/www/logs --password-file=/etc/rsync.pass --exclude "*log"
#vi /etc/rsync.pass

#指定访问密码
jeff
#chmod 600 /etc/rsync.pass

rsync是较为传统的代码同步方式,绝大多数网站已经足够使用,当然对于一些文件量大,访问量在千万以上级别的网站可以参考和一篇豆瓣开发人员推荐的大量小文件的实时同步方案

阅读(218) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~