作者: 北南南北

来自:Linuxsir.Org

摘要: rsync 是一个快速增量文件传输工具,它可以用于在同一主机备份内部的备分,我们还可以把它作为不同主机网络备份工具之用。本文主要讲述的是如何自架rsync服务器,以实现文件传输、备份和镜像。相对tar和wget来说,rsync 也有其自身的优点,比如速度快、安全、高效;



+++++++++++++++++++++++++++++++++++

正文

+++++++++++++++++++++++++++++++++++



1 什么是rsync;

    rsync is a file transfer program for Unix systems. rsync uses the "rsync algorithm" which provides a very fast method for bringing remote files into sync. It does this by sending just the differences in the files across the link, without requiring that both sets of files are present at one of the ends of the link beforehand.

    rsync 是一个Unix系统下的文件同步和传输工具。rsync是用 “rsync 算法”提供了一个客户机和远程文件服务器的文件同步的快速方法。

    Some features of rsync include

    rsync 包括如下的一些特性:

    * can update whole directory trees and filesystems

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

    * optionally preserves symbolic links, hard links, file ownership, permissions, devices and times

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

    * requires no special privileges to install

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

    * internal pipelining reduces latency for multiple files

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

    * can use rsh, ssh or direct sockets as the transport

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

    * supports anonymous rsync which is ideal for mirroring

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



2 rsync 服务器的理由;

    rsync 服务器架设比较简单,可能我们安装好rsync后,并没有发现配置文件,以及rsync服务器启动程序,因为每个管理员可能对rsync 用途不一样,所以一般的发行版只是安装好软件就完事了,让管理员来根据自己的用途和方向来自己架设rsync服务器;因为这个rsync应用比较广,能在同一台主机进行备份工作,还能在不同主机之间进行工作。在不同主机之间的进行备份,是必须架设rsync 服务器的。

    以我的观点上看,如果在同一台主机进行文件的备分,用复制工具cp就好了。没必要用rsync 这么相对复杂的工具,cp也简单易用,当然这仅仅是个人观点;

    对于重量级服务器来说,应该有网络备份服务器来说,只有本地备份还是不够的,最好还是有网络备份主机,这样数据的安全才有保证。毕竟数据放在服务器本地上还是不太安全,比如磁盘坏掉、被骇客攻入服务器删除数据。其实服务器本身价值并不大,重要的是数据的价值。

    另外对于大量文件从一台服务器上迁移到另一台服务器上,rsync 的确是一个不可不用传输工具。公司有一台文件服务器,配置是CPU Intel Celeon 333Mhz,内存128M,硬盘IDE 80Gx3=240G,里面仅是第一个硬盘的12G的分区安装系统,用了256M做为交换分区,其它的空间我都用来存数据,通过LVM卷来管理磁盘空间,我分了一个 180G的空间给数据存放,当时数据存储容量已经达到了160多G。当时的情况是服务器空间有限,没做本地备份。更不可能新增硬盘上去,因为这台机器没做RAID,硬盘坏掉一个,数据会全毁掉,安全性没有一点保障。在这种情况下,为了保证数据的安全性,我被迫做了一台带有Raid5支持的文件服务器。在选择如何把数据文件完整的传输到新服务器上,我想到了很多的工具,最后想到了rsync 。我花了十分钟架设并调试了rsync ,然后就开工文件传输,因为文件服务器上的文件太多,老的文件服务器配置又低,大约花了两三天吧才得以把所有文件传输完毕。



3 架设rsync服务器过程;

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



3.1 rsync的安装;

    软件安装过于简单,现在Linux各大发行版都提供这个软件包,当然您也可以自己编译安装,在目前的情况下,我看没太大的必要;

    [root@linuxsir:beinan]$ sudo apt-get install rsync 注:在debian、ubuntu 等在线安装方法;

    [root@linuxsir:beinan]# slackpkg install rsync   注:Slackware 软件包在线安装;

    [root@linuxsir:beinan]# yum install rsync    注:Fedora、Redhat 等系统安装方法;

    其它Linux发行版,请用相应的软件包管理方法来安装;如果是源码包,也就是用下面的办法;

    [root@linuxsir:/home/beinan]# tar xvf sync-xxxx.tar.gz 或sync-xxx.tar.bz2

    [root@linuxsir:/home/beinan]# cd sync-xxx

    [root@linuxsir:/home/beinan/sync-xxx]# ./configure --prefix=/usr ;make ;make install   注:在用源码包编译安装之前,您得安装gcc等编译开具才行;



3.2 rsync服务器的配置文件rsyncd.conf ;

    我们可以参照 rsyncd.conf.html。具体步骤如下;

    [root@linuxsir:~]#mkdir /etc/rsyncd 注:在/etc目录下创建一个rsyncd的目录,我们用来存放rsyncd.conf 和rsyncd.secrets文件;

    [root@linuxsir:~]#touch /etc/rsyncd/rsyncd.conf 注:创建rsyncd.conf ,这是rsync服务器的配置文件;

    [root@linuxsir:~]#touch /etc/rsyncd/rsyncd.secrets 注:创建rsyncd.secrets ,这是用户密码文件;

    [root@linuxsir:~]#chmod 600 /etc/rsyncd/rsyncd.secrets 注:为了密码的安全性,我们把权限设为600;

    [root@linuxsir:~]#ls -lh /etc/rsyncd/rsyncd.secrets

    -rw------- 1 root root 14 2007-07-15 10:21 /etc/rsyncd/rsyncd.secrets

    [root@linuxsir:~]#touch /etc/rsyncd/rsyncd.motd

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

    rsyncd.conf 是rsync服务器主要配置文件,我们来个简单的示例;比如我们要备份服务器上的 /home 和/opt ,在/home中,我想把beinan和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

    添加新评论