首页 > 系统管理 > 使用Rsync同步备份数据

使用Rsync同步备份数据

2009年1月16日

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

首先,安装rsync

yum install rsync
以上方法默认安装2.6.8, 建议安装3.0.X,据张宴博客介绍3.0.X的有比较更新(希望是比较智能的)
wget http://rsync.samba.org/ftp/rsync/rsync-3.0.5.tar.gz
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 backup@192.168.1.200::logs /home/www/logs --password-file=/etc/rsync.pass --exclude "*log"
#vi /etc/rsync.pass

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

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

VN:F [1.9.22_1171]
Rating: 8.0/10 (3 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)
使用Rsync同步备份数据, 8.0 out of 10 based on 3 ratings

系统管理 ,

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.

This blog is kept spam free by WP-SpamFree.