日期:2014-05-16  浏览次数:20767 次

linux下的rsync安装与配置,实现文件备份、同步

一、什么是rsync

  rsync,remote synchronize顾名思意就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。 rsync是用 “rsync 算法”提供了一个客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好,另外它还是免费的软件。

  rsync 包括如下的一些特性:

  能更新整个目录和树和文件系统;

  有选择性的保持符号链链、硬链接、文件属于、权限、设备以及时间等;

  对于安装来说,无任何特殊权限要求;

  对于多个文件来说,内部流水线减少文件等待的延时;

  能用rsh、ssh 或直接端口做为传输入端口;

  支持匿名rsync 同步文件,是理想的镜像工具;

二、架设rsync服务器

  架设rsync 服务器比较简单,写一个配置文件rsyncd.conf 。文件的书写也是有规则的,我们可以参照rsync.samba.org 上的文档来做。当然我们首先要安装好rsync这个软件才行;

A、rsync的安装;

  获取rsync

  rysnc的官方网站:http://rsync.samba.org/可以从上面得到最新的版本。目前最新版是3.05。当然,因为rsync是一款如此有用的软件,所以很多Linux的发行版本都将它收录在内了。

  软件包安装

  # sudo apt-get ?install ?rsync ?注:在debian、ubuntu 等在线安装方法;

  # yum install rsync ? ?注:Fedora、Redhat 等在线安装方法;

  # rpm -ivh rsync ? ? ? 注:Fedora、Redhat 等rpm包安装方法;

  其它Linux发行版,请用相应的软件包管理方法来安装。

  源码包安装

  tar xvf ?rsync-xxx.tar.gz

  cd rsync-xxx

  ./configure --prefix=/usr ?;make ;make install ? 注:在用源码包编译安装之前,您得安装gcc等编译开具才行;

?

B、配置文件

  rsync的主要有以下三个配置文件rsyncd.conf(主配置文件)、rsyncd.secrets(密码文件)、rsyncd.motd(rysnc服务器信息)

  服务器配置文件(/etc/rsyncd.conf),该文件默认不存在,请创建它。

  具体步骤如下:

  #touch /etc/rsyncd.conf ?#创建rsyncd.conf,这是rsync服务器的配置文件。

  #touch /etc/rsyncd.secrets ?#创建rsyncd.secrets ,这是用户密码文件。

  #chmod 600 /etc/rsyncd/rsyncd.secrets ?#将rsyncd.secrets这个密码文件的文件属性设为root拥有, 且权限要设为600, 否则无法备份成功!

  #touch /etc/rsyncd.motd

  下一就是我们修改rsyncd.conf和rsyncd.secrets和rsyncd.motd文件的时候了。

  设定/etc/rsyncd.conf

  rsyncd.conf是rsync服务器主要配置文件。我们先来个简单的示例,后面在详细说明各项作用。

  比如我们要备份服务器上的/home和/opt,在/home中我想把easylife和samba目录排除在外;

  # Distributed under the terms of the GNU General Public License v2

  # Minimal configuration file for rsync daemon

  # See rsync(1) and rsyncd.conf(5) man pages for help

  # This line is required by the /etc/init.d/rsyncd script

  pid file = /var/run/rsyncd.pid ??

  port = 873

  address = 192.168.1.171 ?

  #uid = nobody?

  #gid = nobody ? ?

  uid = root ??

  gid = root ?

  use chroot = yes ?

  read only = yes?

  #limit access to private LANs

  hosts allow=192.168.1.0/255.255.255.0 10.0.1.0/255.255.255.0 ?

  hosts deny=*

  max connections = 5?

  motd file = /etc/rsyncd.motd

  #This will give you a separate log file

  #log file = /var/log/rsync.log

  #This will log every file transferred - up to 85,000+ per user, per sync

  #transfer logging = yes

  log format = %t %a %m %f %b

  syslog facility = local3

  timeout = 300

  [rhel4home] ??

  path = /home ? ?

  list=yes?

  ignore errors?

  auth users = root

  secrets file = /etc/rsyncd.secrets ?

  comment = This is RHEL 4 data ?

  exclude = easylife/ ?samba/ ? ??

  [rhel4opt]

  path = /opt?

  list=no

  ignore errors

  comment = This is RHEL 4 opt?

  auth users = easylife

  secrets file = /etc/rsyncd/rsyncd.secrets

  注:关于auth users是必须在服务器上存在的真实的系统用户,如果你想用多个用户以,号隔开,比如auth users = easylife,root

  设定密码文件

  密码文件格式很简单,rsyncd.secrets的内容格式为:

  用户名:密码

  我们在例子中rsyncd.secrets的内容如下类似的;在文档中说,有些系统不支持长密码,自己尝试着设置一下吧。

  easylife:keer

  root:mike

  chown root.root rsyncd.secrets  #修改属主

  chmod 600 rsyncd.secrets ? ? #修改权限

  注:1、将rsyncd.secrets这个密码文件的文件属性设为root拥有, 且权限要设为600, 否则无法备份成功! ? ? ? ? ? ?出于安全目的,文件的属性必需是只有属主可读。

    2、这里的密码值得注意,为了安全你不能把系统用户的密码写在这里。比如你的系统用户easylife密码是000000,为了安全你可以让rsync中的easylife为keer。这和samba的用户认证的密码原理是差不多的。

  设定rsyncd.motd 文件;

   它是定义rysnc服务器信息的,也就是用户登录信息。比如让用户知道这个服务器是谁提供的等;类似ftp服务器登录时,我们所看到的 linuxsir.org ftp ……。 当然这在全局定义变量时,并不是必须的,你可以用#号注掉,或删除;我在这里写了一