RSync实现文件备份同步详解
[rsync实现网站的备份,文件的同步,不同系统的文件的同步,如果是windows的话,需要windows版本cwrsync]
一、什么是rsync
rsync,remotesynchronize顾名思意就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。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的发行版本都将它收录在内了。
软件包安装
#sudoapt-get install rsync 注:在debian、ubuntu等在线安装方法; #yuminstallrsync 注:Fedora、Redhat等在线安装方法; #rpm-ivhrsync 注:Fedora、Redhat等rpm包安装方法;
其它Linux发行版,请用相应的软件包管理方法来安装。
源码包安装
tarxvf rsync-xxx.tar.gz cdrsync-xxx ./configure--prefix=/usr ;make;makeinstall 注:在用源码包编译安装之前,您得安装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,这是用户密码文件。 #chmod600/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目录排除在外;
#DistributedunderthetermsoftheGNUGeneralPublicLicensev2 #Minimalconfigurationfileforrsyncdaemon #Seersync(1)andrsyncd.conf(5)manpagesforhelp
#Thislineisrequiredbythe/etc/init.d/rsyncdscript pidfile=/var/run/rsyncd.pid port=873 address=192.168.1.171 #uid=nobody #gid=nobody uid=root gid=root
usechroot=yes readonly=yes
#limitaccesstoprivateLANs hostsallow=192.168.1.0/255.255.255.010.0.1.0/255.255.255.0 hostsdeny=*
maxconnections=5 motdfile=/etc/rsyncd.motd
#Thiswillgiveyouaseparatelogfile #logfile=/var/log/rsync.log
#Thiswilllogeveryfiletransferred-upto85,000+peruser,persync #transferlogging=yes
logformat=%t%a%m%f%b syslogfacility=local3 timeout=300
[rhel4home] path=/home list=yes ignoreerrors authusers=root secretsfile=/etc/rsyncd.secrets comment=ThisisRHEL4data exclude=easylife/ samba/
[rhel4opt] path=/opt list=no ignoreerrors comment=ThisisRHEL4opt authusers=easylife secretsfile=/etc/rsyncd/rsyncd.secrets