2014年6月27日星期五

RHCEˇ¤----ńˇRsync

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
RHCEˇ¤----�ˇRsync  阅读原文»

用户名:aaao 文章数:29 评论数:58
访问量:20484:566:624:3 注册日期:2012-04-11

RHCE系列之备份工具----镜像备份Rsync

我一哥们最近在搞备份,需要用到rsync。因此,鄙人就简单总结了下rsync,也就有了这篇博文,希望对51的博友们有所帮助!

RSYNC简介:

Rsync (remote sync)是一款开源、快速,多功能、可实现增量的本地或远程数据镜像同步备份优秀工具。它可通过LAN/WAN快速同步多台主机间的文件。Rsync本来是用以取代rcp的一个工具,它当前由Rsync.samba.org维护。Rsync使用所谓的"Rsync演算法"来使本地和远程主机之间的文件达到同步,该算法只传送两个文件中的不同部分,而不是每次都整份传送,因此速度相当快。

Rsync支持大多数的类Unix系统,无论是Linux、Solaris还是BSD上都经过了良好的测试。此外,它在windows平台下也有相应的版本,比较知名的有cwRsync和Sync2NAS。

RSYNC的特性:

1、支持拷贝特殊文件如链接、设备等。

2、可以有排除制定文件或目录同步的功能,相当于打包命令tar。

3、可以做到保持原来文件或目录的权限、时间、软硬连接等所有属性均不改变。

4、可实现增量同步,既只同步发生变化的数据,因此数据传输效率很高。

5、可以使用rcp,rsh,ssh等方式配合传输文件,也可以通过直接的socket连接。

6、支持匿名的或认证的进程模式传输,方便进行数据备份及镜像

7、优化的流程,文件传输效率高

RSYNC工作模式:

Rsync有四种工作模式,具体如下:

1、列表模式

和ls -l相似,负责列出源的内容。不仅可以看本地还可以看远端。

2、shell模式,也称为本地模式

和cp相似,本地拷贝文件

3、远程shell模式,可以通过通过rcp,ssh等通道传输

和rcp相似,不过可以实现增量备份,并且能够通过安全的ssh方式进行数据传输。

4、服务器模式

在这种模式下,rsync守护进程在一台机器上永久运行,接收文件传输请求。可以把文件发送给守护进程,也可以向它请求文件。服务器模式非常适合创建中心备份服务器或项目存储库。

以上是对rsync做的一个简单介绍,下面来安装一下rsync,然后再详细介绍我们rsync的四种工作模式!

CentOS6.5x86_64位采用最小化安装,系统经过了基本优化
selinux为关闭状态,iptables为无限制模式

在安装之前,首先让我们看下系统上是否已经安装了rsync。

[root@rsync-server~]#rpm-qa|greprsync
rsync-3.0.6-9.el6_4.1.x86_64

如果出现如上的情况,说明我们的系统已经安装了rsync。如果没有出现,就说明没有安装。

如果系统没有安装,我们就需要自己安装了。安装rsync的方式一共有2种,一种是基于包管理器安装,比如rpm包之类,另外一种是基于源码安装。

1、基于包管理器安装

[root@rsync-server~]#yuminstallrsync-y

2、基于源码安装

a、安装缺少的gcc和库文件等

[root@rsync-server~]#yuminstall-ykernel-headersglibc-headersglibc-devellibgompgccgcc-c++

b、安装rsync

[root@rsync-server~]#wgethttp://rsync.samba.org/ftp/rsync/rsync-3.1.1.tar.gz
[root@rsync-server~]#tarzxvfrsync-3.1.1.tar.gz
[root@rsync-server~]#cdrsync-3.1.1
[root@rsync-serverrsync-3.1.1]#./configure--prefix=/usr/local/rsync[root@rsync-serverrsync-3.1.1]#make&&makeinstall

这样子rsync就安装完成了。

我们需要注意的是,源码安装的rsync默认是没有加入xinetd的,因此你会发现,在/etc/xinetd.d目录下找不到rsync文件。

下面,我就开始带着大家一起来了解下rsync的四种模式!

1、列表模式(listmode)

Rsync的列表模式,即等同于在实现 ls -l 的功能。我们可以通过分别执行rsync和ls命令来观察区别。

[root@rsync-server/]#rsync/rsync
drwxr-xr-x40962014/06/0400:45:06rsync
[root@rsync-server/]#rsync/rsync/
drwxr-xr-x40962014/06/0400:45:06..NET�×AOP  阅读原文»

每日博报 精彩不止一点关闭

用户名:jinyuan0829
文章数:42
评论数:1
访问量:8903
无忧币:738
博客积分:528
博客等级:3
注册日期:2014-04-26

.NET里简易实现AOP

.NET里简易实现AOP

在MVC的过滤器章节中对于过滤器的使用就是AOP的一个实现了吧,时常在工作学习中遇到AOP对于它的运用可以说是很熟练了,就是没想过如果自己来实现的话是怎么实现的,性子比较犟硬是没想明白,茶不思饭不想的,主要问题就是卡在了怎么能拦截用户调用,如果可以解决了这个问题AOP的实现也就引刃而解了,为此在网上看了一些文章解决了这个问题,在这里和大家分享一下。

AOP的作用就是横切关注点,然后将分离后的关注点已面的形式来呈现,这是概念性的说法,举个列子来说明吧。

比如说有个处理过程是计算提交订单中的货品总额,然后想在这个过程中执行之前记录一下数据或者是执行一些必要的操作。

比如说记录日志,然后是选择记录日志的方式,是选择存本地文件还是存库,又或者是选择了存本地文件后选择数据的存储介质(XML格式、文本格式、加密格式、序列化格式等等)。

这只是其中的一个点,比如说还有验证等等其它一些方面的关注点。

图1

图2

从图1、图2中我们就可以看出AOP的目的,就是将日志记录、验证、性能监测这些关注点从一个执行过程中分离了出来,让彼此不再有关系以及和计算总额的关系。在此可以把分离出来的关注点封装,已“面”的形式展现出来,这样的情况下也使得这些“面”可以在其它地方复用。

1拦截的基础实现

在前言中说到在.NET中实现AOP技术难点就是在拦截的那一块,看到一些大神的文章利用remoting中的管道技术来实现信息拦截,我们先来了解一下怎么利用remoting来实现拦截的。

图3

图3就是大概示意出了利用remoting拦截信息的一个示意图,很突兀的插了个图可能不太好理解,我们还是通过代码配合图文来粗浅的解说一下吧。

代码1-1

publicclassMyContextObject:ContextBoundObject
publicvoidWriterLine(stringmeg)
Console.WriteLine("这是方法执行中"+meg);

代码1-1中的MyContextObject类型继承自上下文绑定类ContextBoundObject对象,继承过后就表示MyContextObject类型需要强制绑定上下文意思就是说它需要在一个特性环境的上下文中,对于没有继承ContextBoundObject类型的类型被称之为灵活对象,它们的诞生是在默认的当前上下文中。

这里为什么要说到这些内容呢?因为这样才能创建新的上下文,然后当前上下文对于MyContextObject的调用都是属于远程调用(在remoting里跨越了上下文边界的所有调用都应该叫远程调用,不管服务端在哪),只有这样才能利用remoting中的消息管道来进行消息拦截。

那么是在什么时候创建新的上下文的呢?在MyContextObject类型定义的上面,有个AOPWriter特性类型,我们先来看下它的定义,示例代码1-2.

代码1-2

[AttributeUsage(AttributeTargets.Class)]
publicclassAOPWriterAttribute:Attribute,IContextAttribute
publicvoidGetPropertiesForNewContext(IConstructionCallMessagemsg)
msg.ContextProperties.Add(newAOPContextProperty());
publicboolIsContextOK(System.Runtime.Remoting.Contexts.Contextctx,IConstructionCallMessagemsg)

在代码1-2中我们看到AOPWriterAttribute类型实现了IContextAttribute类型的接口,IContextAttribute类型的定义如下,示例代码1-3.

代码1-3

publicinterfaceIContextAttribute
//在给定消息中将上下文属性返回给调用方。
//将上下文属性添加到的System.Runtime.Remoting.Activation.IConstructionCallMessage。
[SecurityCritical]
voidGetPropertiesForNewContext(IConstructionCallMessagemsg);
//返回一个布尔值,指示指定上下文是否满足上下文属性的要求。
//当前上下文属性检查所依据的上下文。
//构造调用,需要依据当前上下文检查其参数。
//如果传入的上下文一切正常,则为true;否则为false。
[SecurityCritical]
boolIsContextOK(Contextctx,IConstructionCallMessagemsg);

代码1-3中的定义同代码1-2中AOPWriterAttribute类型的实现一样,首先在上下文绑定对象进行实例化的时候系统默认的会调用IsContextOK()方法来判断当前执行实例化过程所在的上下文是否满足于上下文绑定对象的要求,这里我们在代码1-2中的实现是返回的false,意思就是当前上下文并不满足于MyContextObject类型所需要的,这是系统会去调用IContextAttribute中的GetPropertiesForNewContext()方法用于向新建上下文中添加自定义的上下文属性,也就是实现了IContextProperty接口类型的类型对象,在普通的运用中我们可以在自定义的上下文属性中设置一些逻辑操作,以便在新建上下文中使用,对于这部分的示例可以去看我的《.Net组件程序设计之上下文》篇幅。

对于代码1-2中AOPContextProperty类型的定义我们也来看一下,示例代码1-4.

代码1-4

没有评论:

发表评论