Chinaunix首页 | 论坛 | 博客
  • 博客访问: 772280
  • 博文数量: 265
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 1985
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-13 12:33
文章分类

全部博文(265)

文章存档

2011年(1)

2010年(66)

2009年(198)

我的朋友

分类: LINUX

2010-06-06 21:33:59

使用rsync命令同步数据

考虑到服务器数据的安全,我考虑增加一台备份服务器,通过数据同步,达到较好的冗余。 
 linux
下有非常好的一个命令
rsync可以实现差异备份,下面就说说它的用法: 

▲合适系统:红旗DC 4.1 or 5.0或其他linuxFreeBSD系统 
▲测试环境:红旗DC 5.0 

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


Code:


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

源路径和目标路径可以使用如下格式: 
rsync://[USER@]Host[:Port]/Path   <--rsync服务器路径 
[USER@]Host::Path             <--
rsync服务器的另一种表示形式 
[USER@]Host:Path             <--
远程路径 
LocalPath                    <--
本地路径



※需要注意的是,来源或目的路径最少要有一个是本地路径,如果忽略本地路径,则只会列出远端的文件列表。 

例子:


Code:


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



把源路径中远端test机器上的/home/ftp/pub/目录中的内容,通过rsync同步到本地的/home/ftp/pub/目录下。 
◎小心源路径结尾时候的/号,后缀/通知
rsync复制该目录的内容,但不复制目录本身。例如:


Code:


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



则会把pub目录整个同步到本地/home/ftp/路径中


Code:


#rsync -azv --delete rsync://linuxing@192.168.1.100/blog /var/www/html/



通过linuxing登陆到192.168.1.100中,同步rsync服务器的blog项到本地的/var/www/html/,并删除本地上源路径中不存在的文件或目录。 
※千万要注意--delete参数,在使用此参数的时候,建议用绝对路径指定本地目录,防止清空当前目录。 

二、建立rsync服务器 
 
当服务器没有开通ssh,或备份方没有ssh权限的时候,我们可以通过建立
rsync服务器,进行匿名的数据同步。 
 
要使用
rsync服务,需要建立服务端和客户端: 
1
、服务端 
主配置文件:


Code:


#vi /etc/rsyncd.conf 
log file = /var/log/
rsyncd.log 
pid file = /var/run/
rsyncd.pid 
lock file = /var/run/
rsync.lock 
[test]                   #
rsync区段的设定名称 
path = /var/www/html/test    #
需要同步的数据存放路径 
comment = test folder       #
注释 
uid = apache              #
采用什么身份进行文件读取 
gid = apache              #
同上,必须是有读取path权限的用户、组 
ignore errors              #
忽略错误 
read only = yes            #
只读 
list = no                 #
不能列表 
auth users = linuxing        #
连接
rsync服务的帐号 
secrets file = /etc/
rsyncd.secrets  #指定存放帐号密码的位置




帐号密码文件:


Code:


#vi /etc/rsyncd.secrets 
#
格式:帐号:密码 (每行一组,帐号和密码用:号分开) 
linuxing:backup



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


Code:


#chown root:root /etc/rsyncd.secrets 
#chmod 600 /etc/
rsyncd.secrets




启动服务: 
#
rsync --daemon 

保证开机自动启动: 
修改/etc/xinetd.d/
rsync文件,把其中的disable=yes改为disable=no


Code:


#sed -i -e "/disable/{ s/yes/no/ }" /etc/xinetd.d/rsync 
#service xinetd.d restart




2
、客户端 
 
使用用法一中涉及到
rsync://的方法即可。 
 
如果
rsync服务器需要密码验证,可以增加--password-file参数:


Code:


#rsync -azv --delete rsync://linuxing@192.168.1.100/test /var/www/html --password-file=/etc/test 
#vi /etc/test 
#
指定访问密码 
bakcup 
#chmod 600 /etc/test




3
、定时 
  
另外,由于
rsync客户端没有定时功能,我们可以通过在crontab中增加计划任务实现定时的同步,如:(不要使用-v参数,防止刷屏)


Code:



#crontab -e 
0 22 * * 1-5 /usr/bin/
rsync -az --delete rsync://linuxing@192.168.1.100/test /var/www/html --password-file=/etc/test 
#
指定星期一到五,每晚十点整进行同步



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

四、附录 
 
如果是通过编译安装的
rsync(如FreeBSD),路径有点不同: 
服务器的配置文件在:/usr/local/etc/
rsyncd.conf 
启动文件:/usr/local/etc/rc.d/rsyncd.sh 
命令文件:/usr/local/bin/rsync 
系统启动托管:/etc/rc.conf(增加rsyncd_enable="YES" 

五、参考文章 
 

帮助文件:man 
rsync  man rsyncd.conf 
阅读(1020) | 评论(0) | 转发(0) |
0

上一篇:Crontab实例

下一篇:怎样配置DSA公钥认证SSH

给主人留下些什么吧!~~