备份(镜像)工具rsync详解

备份(镜像)工具rsync详解

1、什么是Rsync

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

 Rsync的基本特点如下:

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

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

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

  4.优化的流程,只传输改变的文件,忽略相同的文件,文件传输效率高;

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

6.支持匿名传输。

2Rsync服务器的架设

2.1软件的安装:

软件安装非常简单,现在Linux各大发行版都提供这个软件包,当然您也可以自己编译安装。

$ sudo apt-get  install  rsync  注:在debianubuntu 等在线安装方法;
# slackpkg  install  rsync  
注:Slackware 软件包在线安装;
# yum install rsync   
注:FedoraRedhat 等系统安装方法;

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

# tar xvf  sync-xxxx.tar.gz sync-xxx.tar.bz2
# cd  sync-xxx
# ./configure --prefix=/usr;make ;make install  
注:在用源码包编译安装之前,您得安装gcc等编译开具才行;

2.2 rsync服务器的配置文件

#mkdir /etc/rsyncd  注:在/etc目录下创建一个rsyncd的目录,我们用来存放配置文件;
#touch /etc/rsyncd/rsyncd.conf  注:创建rsyncd.conf ,这是rsync服务器的配置文件;
#touch /etc/rsyncd/rsyncd.secrets  注:创建rsyncd.secrets ,这是用户密码文件;
#chmod 600 /etc/rsyncd/rsyncd.secrets  注:为了密码的安全性,我们把权限设为600
#ls -lh /etc/rsyncd/rsyncd.secrets
-rw------- 1 root root 14 2007-07-15 10:21 /etc/rsyncd/rsyncd.secrets
#touch /etc/rsyncd/rsyncd.motd    注:它是定义rysnc 服务器信息的文件。

rsyncd.conf rsync服务器主要配置文件,我们来个简单的示例;比如我们要备份服务器上的 /home /opt ,在/home中,我想把*.tmpsamba目录排除在外;

pid file = /var/run/rsyncd.pid  
port = 873
address = 10.194.3.7   #
服务器的ip地址
uid = root             #
使用此程序的uid
gid = root             #
使用此程序的gid
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/rsyncd.motd     #motd
文件的位置
log file = /var/log/rsync.log           #log
文件存放的位置
transfer logging = yes                  #
记录传输的文件
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300

[home]                      #
同步目录显示的名称
path = /home                #
同步的目录路径
list=yes                    #
是否允许列表
ignore errors
auth users = test           #
允许连接该模块的用户
secrets file = /etc/rsyncd/rsyncd.secrets    

#  用户和密码文件,只有在"auth users"被定义时,该文件才有作用。文件每行包含一个username:passwd对。一般来说密码最好不要超过8个字符。没有默认的secures file名,需要限式指定一个(例如:/etc/rsyncd.passwd)。注意:该文件的权限一定要是600,否则客户端将不能连接服务器。
comment = home 
exclude =  *.tmp  samba/  #
同步时排除在外的文件/目录  

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

secrets文件:/etc/rsyncd/rsyncd.secrets的内容格式;

用户名:密码

而我们在例子中rsyncd.secrets的内容如下类似的;在文档中说,有些系统不支持长密码,自己尝试着设置一下吧。另外 rsyncd.secrets文件权限对其它用户组是不可读的。如果你设置错了,可能rsync不工作。

test:test

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

rsyncd.motd 文件;

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

+++++++++++++++++++++++++++
+Ftp server  rsync  2010  +
+++++++++++++++++++++++++++

3Rsync客户端同步命令

    在对rsync服务器配置结束以后,下一步就需要在客户端发出rsync命令来实现将服务器端的文件备份到客户端来。rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明。

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)拷贝本地文件。当SRCDES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。如:rsync -a /data /backup

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

  3)使用一个远程shell程序(rshssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。如:rsync -avz f oo:src/bar  /data

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

如:rsync –av  [email protected]::www  /databack

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

如:rsync -av /databack  [email protected]::www

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

如:rsync -v rsync://172.16.78.192/www

4通过rsync客户端来同步数据

4.1 列出rsync 服务器上的所提供的同步内容

$ rsync  --list-only  [email protected]::

4.2 rsync 客户端同步数据

$rsync -avzP --delete --bwlimit=100 --password-file=~/rsync.passwd [email protected]::home /home

把服务器home目录同步到本地的home目录,带宽限制为100KB,密码文件为home下的rsync.passwd

-a 参数,相当于-rlptgoD-r 是递归 -l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件;

-z 传输时压缩;
-P
传输进度;
-v
传输时的进度等信息

--delete 选项,表示客户端上的数据要与服务器端完全一致,如果 home目录中有服务器上不存在的文件,则删除

--password-file=rsync.password ,这是当我们以test用户登录rsync服务器同步数据时,密码将读取 rsync.password 这个文件。

这个文件内容只是linuxsir用户的密码。我们要如下做;

$ touch rsync.password
$ chmod 600 rsync.passwod
$ echo "test" > rsync.password

注: 这样就不需要手动输入密码了;其实这是比较重要的,因为服务器通过crond 计划任务还是有必要的;

4.3 rsync 客户端自动与服务器同步数据

      cron中插入任务:

         0 0 * * sun /usr/bin/ rsync -avzP --delete --bwlimit=100 --password-file=~/rsync.passwd [email protected]::home /home

        每个周日的0点开始备份。

 

 

你可能感兴趣的:(镜像,工具,详解,rsync,休闲)