注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

有情况

学会慢生活,拥有平常心……

 
 
 

日志

 
 

Linux下的远程备份(镜像)工具rsync   

2011-06-22 09:46:17|  分类: 网站相关 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
传统上,在Unix系统下使用的备份工具主要有tar、dump(rdump)、restore(rrestore)、dd、cpio、rcp等工具。这些工具中大多数适合于本地备份(native backup),倘若要执行远程备份(remote backup)的话,往往显得力不从心。在Linux系统下提供了一个工具——rsync,据其文档说明,它是rcp工具的一个替代品,但是更快捷、更灵活。rsync采用的remote-update协议允许rsync通过网络链路传输两组文件的增量,而是不是文件本身,据此rsync可以提高传输效率。

和大多数网络工具一样,rsync也是以服务器/客户端的方式工作的。但较为特别的一点是:rsync服务器和客户端都使用同一个程序——rsync(如果按常见的做法,则应该是服务器程序为rsyncd,客户端程序为rsync)。启动服务器的时候需要指明--daemon选项,以表明启动的是服务器。而在启动客户端程序的时候则不应开启--daemon选项。

在下文中,假设需要备份的主机为192.168.0.100,其上运行rsync服务器,将该主机称之为rsync-server;存放备份数据的主机为192.168.0.200,其上运行rsync客户端程序,将该主机称之为rsync-client。

rsync的配置文件为/etc/rsyncd.conf,这个配置文件控制着rsync服务器的认证、访问、logging、可用模块等信息。关于这个配置文件的详细说明请参见rsyncd.conf(5)。在本文中,仅对将要使用到的几个配置选项进行说明。需要提醒的是,默认情况下Fedora Core系统的/etc目录下没有rsyncd.conf这个文件,自行创建该文件即可。rsync服务器默认运行在TCP端口873上。

在本文的示例中,要备份的数据统统位于rsync-server主机上的/home目录下,rsync-server主机上的配置文件/etc/rsyncd.conf的内容如下所示:

配置文件rsyncd.conf的写法非常类似于samba服务器配置文件。rsyncd.conf文件主要包括两类配置信息:全局参数和模块参数。全局参数配置包含着用来控制rsync服务器运行方式的信息,比如日志文件的位置、套接口选项等,全局参数应该出现在第一个模块配置之前。在全局参数之后,是模块参数配置。不同的模块(module)以模块名区分,模块名包含在方括号之中,模块名之后的行都是针对该模块的配置信息,直到遇到下一个模块为止。rsyncd.conf配置文件是基于行的——也就是说一个文本行就是一条配置信息。每一行中出现的第一个等号是重要的,在这个等号之前是参数名,等号之后是参数值。也就是说,每一个参数都是以name=value的形式出现在每一行上的。在第一个等号之前或之后的空格都将被忽略。以#开始的行将被视为注释行而被忽略,如果参数信息太长以至于在一行上写不下,那么可以使用\将其延续到下一行上。参数值分为两种:字符参数和布尔参数,如果是布尔参数,那么可以使用的值为:yes/no,1/0,true/false。布尔参数值不用关心字符的大小写,但是字符参数值却是区分大小写的。

有了上述说明之后,就可以来看一下上面的示例配置文件的含义了:

home模块要导出的路径为/home。每一个模块都必须具有path参数;

uid参数指定了以何种用户权限访问该模块(即文件传输时的用户权限);

gid参数指定了以何种组权限访问该模块(即文件传输时的组权限);

除了上面这些模块参数之外,对于模块还有其他很多参数可以选用,比如,可以指定访问控制选项以控制哪些主机可以访问rsync服务器,哪些主机不可以;可以指定哪些文件应当排除在被传输的文件之外(exclude);或者可以指定哪些文件应当被包括在被传输的文件集合之内(include);可以指定rsync客户端的超时时间;可以指定是否采用压缩传输;等等,详见rsyncd.conf(5)。在指定了rsync服务器配置选项之后,应当启动rsync服务器,采用如下命令即可:

root49880.00.016884 ?SNov070:00 rsync --daemon

root74270.00.23544552 pts/1S01:080:00 grep rsync

rsync服务器在启动之后即转入后台运行。ps命令显示的结果表明rsync服务器程序进入了睡眠状态。当有客户端与之建立连接时,rsync服务器将被唤醒。

rsync [OPTION]... SRC [SRC]... DEST

rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST

rsync [OPTION]... [USER@]HOST:SRC DEST

rsync [OPTION]... [USER@]HOST::SRC [DEST]

或者

rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]

rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST

rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC

在上述六种运行模式中,除了列表模式(最后一种)外,其余模式都要求SRC和DEST中至少一个是本地文件(或目录)。

rsync的传输既可通过远程shell通道完成,也可以直接以服务器/客户端的方式完成。如果是后者,实际上就是通过套接口实现的数据传输。在本文的示例中,采用服务器/客户端的方式,不采用远程shell通道作为传输接口。

[root@localhost backup_31_64]# rsync –v --archive --recursive --progress --delete --times --perms --compress rsync://rsync-server:/home /home/backup_rsync_server/

该命令将把rsync-server主机上的/home目录下的所有数据同步到本地主机的/home/backup_rsync_server/目录下。在这个命令中使用的几个选项的含义如下:

输出详细信息。

采用归档模式。在这种模式下,几乎所有东西都将被保留(如用户、组、权限、时间等)。

这个选项告诉rsync要递归地拷贝目录。如果不指定该选项,rsync不会拷贝目录。

这个选项告诉rsync删除任何存在于接收端但不存在于发送端的文件。

这个选项告诉rsync将文件的更改时间与文件一起传输,并在远程系统上更新它们。

这个选项命令rsync确保远程系统上的文件权限与本地系统上的文件权限相同。

这个选项告诉rsync将数据压缩之后再传输。该选项在低速链路上非常有用。

可以看到,这里采用的是rsync六种工作方式中的第四中工作方式,rsync://是一个URL标记。以上列举的是rsync客户端程序常用的选项,rsync命令完整的选项列表请参考rsync(1)。

发出上述命令之后,rsync开始从rsync-server主机同步数据到本地主机的/home/backup_rsync_server/目录下。同步过程中的文件传输等信息将在控制台上显示出来。

本文展示了在Linux系统下如何通过rsync工具完成备份工作的基本流程。尽管只就使用rsync工具的一种简单情形做了说明,但是在此基础上很容易扩展到rsync的其它工作模式上去。rsync工具灵活的选项、增量更新的备份方式、多样的功能模式使得它非常适合于在多台主机之间进行远程备份。

  评论这张
 
阅读(100)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016