rsync在linux系统下经常有使用的时候,最近有必要需要知道使用方式,所以必须查相关资料了解一下。文件同步一般适合做文件传输或者文件备份,我们一般可以处理日志的记录和集中统计,也可以作为网站的备份或者镜像,应用很方便,传输也很快。

先看看相关介绍(含原理):

  1.1 软件简介

  Rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync本来是用以取代rcp的一个工具,它当前由 rsync.samba.org维护。Rsync使用所谓的“Rsync演算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。运行Rsync server的机器也叫backup server,一个Rsync server可同时备份多个client的数据;也可以多个Rsync server备份一个client的数据。

  Rsync可以搭配rsh或ssh甚至使用daemon模式。Rsync server会打开一个873的服务通道(port),等待对方Rsync连接。连接时,Rsync server会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,下一次就只传送二个文件之间不同的部份。

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

  Rsync的基本特点如下:

  1.可以镜像保存整个目录树和文件系统;

  2.可以很容易做到保持原来文件的权限、时间、软硬链接等;

  3.无须特殊权限即可安装;

  4.优化的流程,文件传输效率高;

  5.可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接;

  6.支持匿名传输。

  1.2 核心算法

  假定在名为α和β的两台计算机之间同步相似的文件A与B,其中α对文件A拥有访问权,β对文件B拥有访问权。并且假定主机α与β之间的网络带宽很小。那么rsync算法将通过下面的五个步骤来完成:

  1.β将文件B分割成一组不重叠的固定大小为S字节的数据块。最后一块可能会比S 小。

  2.β对每一个分割好的数据块执行两种校验:一种是32位的滚动弱校验,另一种是128位的MD4强校验。

  3.β将这些校验结果发给α。

  4.α通过搜索文件A的所有大小为S的数据块(偏移量可以任选,不一定非要是S的倍数),来寻找与文件B的某一块有着相同的弱校验码和强校验码的数据块。这项工作可以借助滚动校验的特性很快完成。

  5.α发给β一串指令来生成文件A在β上的备份。这里的每一条指令要么是对文件B经拥有某一个数据块而不须重传的证明,要么是一个数据块,这个数据块肯定是没有与文件B的任何一个数据块匹配上的。

  1.3 命令语法

  rsync的命令格式可以为以下六种:

  rsync [OPTION]... SRC DEST

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

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

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

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

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

  对应于以上六种命令格式,rsync有六种不同的工作模式

  1)拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。

  2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。

  3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。

  4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。

  5)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。

  6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。




再看看安装使用的参考:

  1.从原始网站下载:http://rsync.samba.org/ftp/rsync/

  2.[root@localhost bin]#./configure

  [root@localhost bin]#make

  [root@localhost bin]#make install

  说明一点,客户机和服务器都要安装rsync。客户机以客户端方式运行rsync,服务器端以服务器方式运行rsync,它监听873端口。

  3.运行rsync

  /usr/local/bin/rsync --daemon

  验证启动是否成功:

  netstat -na|grep 873

  4.配置rsync

  简单配置:编辑/etc/rsyncd.conf文件如下:

  #全局配置部分

  secrets file = /etc/rsyncd.secrets 认证用户名和密码文件的名称和位置

  motd file = /etc/rsyncd.motd 欢迎信息文件名称和存放位置(此文件没有,可以自行添加)

  read only = yes

  list = yes

  uid = root

  gid = root

  #hosts allow = 10.4.5.213

  #hosts deny = 10.4.5.0/24

  use chroot = no

  max connections = 5

  log file = /var/log/rsyncd.log

  pid file = /var/run/rsyncd.pid

  lock file = /var/run/rsync.lock

  #模块配置部分

  [paolo]

  comment = Paolo 's directory

  path = /home/test/software

  auth users = rsync

  #secrets file = /etc/rsyncd.secrets

  5.生成验证证文件

  echo "rsync:rsync_password" >> /etc/rsyncd.secrets

  chmod 600 /etc/rsyncd.secrets

  6.在客户端服务器同步服务器上的文件

  rsync -vzrtopg --delete --progress rsync@10.4.5.161::paolo /china/

  或加上--password-file=/etc/rsyncd.secrets选项

  上面的命令把10.4.5.161服务器上的paolo模块中的目录的文件传送到本机/china目录中,并删除本机/china目录中在161服务器paolo模块指定目录中没有的文件。以使两台计算机的目录文件同步。




另外一篇很不错的参考:

Linux--rsync安装配置使用教程

-----------------------------------------------

本试验的测试环境使用的系统是Redhat AS4(2台,一个服务端,一个客户端)
rsync服务端的ip:192.168.23.102
rsync客户端的ip:192.168.23.100

-----------------------------------------------
以下先配置服务器端:
1. 安装rsync包
  [root@rhel403 old]# rpm -q rsync
  rsync-2.6.3-1
2. rsync只使用一个配置文件就是/etc/rsyncd.conf
  [root@rhel403 old]# more /etc/rsyncd.conf
  uid = nobody
  gid = nobody
  max connections = 200
  timeout = 600
  use chroot = no
  read only = yes
  pid file=/var/run/rsyncd.pid
  host_allow =192.168.23.100        //客户端的IP地址写在这里
  #syslog facility = local7
  #log file=/var/log/rsyncd.log
  #rsync config
  #The 'standard' things
  [rsync_gmmold]                    //定义同步的路径(客户端用这个关键字链接)
       path = /gmm/old              //需要同步的路径
       comment = gmmold             //这个暂不知道
3.启动服务
  #/usr/bin/rsync --daemon
4.加入开机启动
  echo "/usr/bin/rsync --daemon" >> /etc/rc.local
5.检查rsync时候启动
  # ps -ef | grep rsync
6.停止服务
  #kill cat /var/run/rsyncd.pid
---------------------------------------------------------------------------
以下是客户端的配置:
1. 安装rsync包
  [root@rhel403 old]# rpm -q rsync
  rsync-2.6.3-1
2. 与服务器端同步:
  #rsync -auqz 192.168.23.102::rsync_gmmold /tmp/old



原创内容如转载请注明:来自 阿权的书房
收藏本文到网摘
Tags:
发表评论
AD
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML 打开UBB 打开表情 隐藏
昵称   密码   游客无需密码
网址   电邮   [注册]
               

验证码 不区分大小写
 

阅读推荐

服务器相关推荐

开发相关推荐

应用软件推荐