zoukankan      html  css  js  c++  java
  • Rsync备份同步数据工具

    Rsync  is  a  fast and extraordinarily versatile file copying tool.

    Rsync是一款开源的,快速的,多功能的,可实现全量和增量的本地或者远程的数据同步,备份的优秀工具。

    Rsync的功能:

    1、支持拷贝特殊文件如链接文件、设备等。

    2、可以有排除指定文件或目录同步的功能,相当于打包命令tar的--exclude=PATTERN排除功能。

    3、可以做到保持原文件或目录的权限、时间、软硬链接、属主、属组等所有属性不变。

    4、可以实现增量同步,即只同步发生改变的文件。

    5、可以使用rcp,rsh,ssh等方式配合传输文件。(rsync本身不对文件进行加密)。

    6、可以通过socket(进程方式)传输文件和数据(即客户端与服务端)。

    7、支持匿名的认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像。

    Rsync安装:

    一般Linux系统自带的有rsync工具

    [root@backup shell]# rpm -qa rsync
    rsync-3.0.6-12.el6.x86_64

    Rsync语法:

    Local: rsync [OPTION...] SRC... [DEST]

    Access via remote shell:
    Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
    Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

    Access via rsync daemon:
    Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
    rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
    Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
    rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

    语法解释:

    Local:本地

    [OPTION]:rsync的参数

    SRC:源数据所在地目录

    [DEST]或DEST:目标存放数据所在地目录

    Pull:是在本地通过rsync将远程主机的数据拉到本地主机上。

    Push:是在本地通过rsync将本地数据推送到远程主机上。

    [:PORT]:端口

    此次创建rsync服务器将以socket方式进行传输数据

    A、服务端

    1、首先在服务端上创建rsync配置文件,rsync没有自带的配置的文件,所以需要手工进行创建。

    配置文件所在位置:/etc/rsyncd.conf

    其中参数配置请使用

    [root@backup shell]# man rsyncd.conf

    rsyncd.conf — configuration file for rsync in daemon mode

    #rsync_config________start
    ##-------------CopyRight-------------  
    ##   Name:rsync configure  
    ##   Version Number:1.00  
    ##   Type:text
    ##   Language:text
    ##   Date:2018-05-09  
    ##   Author:sandy
    ##   QQ:442656067
    ##   Email:eeexu123@163.com  
    ##   Blog:https://www.cnblogs.com/eeexu123/
    
    
    ##rsync.conf start##
    uid = www      //备份目录的UID
    gid = www      //备份目录的GID
    use chroot = no    //安全方面
    max connections = 200  //最大连接数
    timeout = 300       //超时
    pid file = /var/run/rsyncd.pid    //rsync进程的pid
    lock file = /var/run/rsync.lock   //锁文件
    log file = /var/log/rsyncd.log    //rsync日志文件
    ignore errors                    //忽略错误
    read only = false               //只读为假
    list = false                    //可以查看
    hosts allow = 172.16.1.0/24     //允许传输的网段
    #hosts deny = 0.0.0.0/32       //拒绝传输的网段
    auth users = rsync_backup      //匿名的用户
    secrets file = /etc/rsync.password    //匿名用户的密码
    [backup]                          //备份的目录
    path = /backup
    [nfsbackup]
    path = /data
    #rsync_config________end

    2、创建用户www及配置备份目录的权限

    1 [root@backup ~]# useradd www
    2 [root@backup ~]# id www
    3 uid=893(www) gid=893(www) 组=893(www)
    1 [root@backup ~]# chown -R www.www /backup/
    2 [root@backup ~]# ll /backup/
    3 总用量 4
    4 -rw-r--r--. 1 www www 1134 3月   2 15:07 rsyncd

    3、创建匿名用户和密码文件

    1 [root@backup ~]# cat /etc/rsync.password 
    2 rsync_backup:oldboy

    4、修改密码文件的权限

    1 [root@backup ~]# chmod 600 /etc/rsync.password
    2 [root@backup ~]# ll /etc/rsync.password 
    3 -rw-------. 1 root root 20 2月  24 13:33 /etc/rsync.password

    5、启动Rsync服务

    1 [root@backup ~]# rsync --daemon

    B、客户端

    1、首先创建匿名用的密码文件

    1 [root@nginx ~]# cat /etc/rsync.password 
    2 oldboy

    2、修改密码文件的权限

    1 [root@nginx ~]# chmod 600 /etc/rsync.password 
    2 [root@nginx ~]# ll /etc/rsync.password 
    3 -rw-------. 1 root root 7 5月  11 17:42 /etc/rsync.password

    C、测试

    服务器备份目录状态

    [root@backup ~]# ll /backup/
    总用量 0

    客户端推送数据到服务端

    1 [root@nginx tools]# rsync -avz /root/tools/ rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password 
    2 sending incremental file list
    3 ./
    4 zabbix-agent-3.0.3-1.el6.x86_64.rpm
    5 
    6 sent 327071 bytes  received 30 bytes  654202.00 bytes/sec
    7 total size is 326848  speedup is 1.00

    查看服务端

    1 [root@backup ~]# ll /backup/
    2 总用量 320
    3 -rw-r--r-- 1 www www 326848 5月  31 2016 zabbix-agent-3.0.3-1.el6.x86_64.rpm

    D、配置Rsync服务启动脚本

    脚本存放地在/etc/init.d/rsyncd

      1 #!/bin/bash
      2 
      3 #-------------CopyRight-------------  
      4 #   Name:Rsync start or stop  
      5 #   Version Number:1.00  
      6 #   Type:sh  
      7 #   Language:bash shell  
      8 #   Date:2018-05-09  
      9 #   Author:sandy
     10 #   QQ:442656067
     11 #   Email:eeexu123@163.com  
     12 #   Blog:https://www.cnblogs.com/eeexu123/
     13 
     14 # rsyncd          Start or Stop the rsync server daemon
     15 #
     16 # chkconfig: 2345 53 23                   //可以被chkconfig管理
     17 # description: rysnc is backup server 
     18 
     19 pid_file=/var/run/rsyncd.pid            
     20 RETVAL=0
     21 
     22 #source functions libary
     23 . /etc/init.d/functions
     24 
     25 #check permission
     26 [ -x /etc/init.d/rsyncd ]||{
     27   echo "rsyncd is permission denied"
     28   exit 1
     29 }
     30 
     31 #start rsync
     32 start(){
     33   if [ $UID -ne 0 ];then
     34      echo "User has insufficient privilege."
     35      exit 2
     36   fi
     37 
     38   if [ -e $pid_file ];then
     39      echo "Rsync is running"
     40      exit 3
     41   else
     42      /usr/bin/rsync --daemon
     43      RETVAL=$?
     44      if [ $RETVAL -eq 0 ];then
     45         action "Rsync start" /bin/true
     46      else
     47         action "Rsync start" /bin/false
     48      fi
     49   fi
     50 return $RETVAL
     51 }
     52 
     53 #stop rsync
     54 stop(){
     55  if [ $UID -ne 0 ];then
     56      echo "User has insufficient privilege."
     57      exit 2
     58   fi
     59 
     60   if [ ! -e $pid_file ];then
     61      echo "Rsync is stoped"
     62      exit 3
     63   else
     64      killproc -p $pid_file
     65      RETVAL=$?
     66      if [ $RETVAL -eq 0 ];then
     67         action "Rsync stop" /bin/true
     68      else
     69         action "Rsync stop" /bin/false
     70      fi
     71   fi
     72 return $RETVAL 
     73 }
     74 
     75 #restart rsync
     76 restart(){
     77   if [ $UID -ne 0 ];then
     78      echo "User has insufficient privilege."
     79      exit 2
     80   fi
     81 
     82   stop
     83   sleep 2
     84   start
     85 return $RETVAL
     86 }
     87 
     88 case "$1" in
     89   start)
     90         start
     91         RETVAL=$?
     92         ;;
     93   stop)
     94         stop
     95         RETVAL=$?
     96         ;;
     97   restart)
     98         restart
     99         RETVAL=$?
    100         ;;
    101   *)
    102         echo "USAGE:$0 {start|stop|restart}"
    103 esac
    104 exit $RETVAL

    测试

     1 [root@backup ~]# netstat -tulnp|grep rsync
     2 tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      6740/rsync          
     3 tcp        0      0 :::873                      :::*                        LISTEN      6740/rsync          
     4 [root@backup ~]# /etc/init.d/rsyncd stop
     5 Rsync stop                                                 [确定]
     6 [root@backup ~]# netstat -tulnp|grep rsync
     7 [root@backup ~]# /etc/init.d/rsyncd start
     8 Rsync start                                                [确定]
     9 [root@backup ~]# netstat -tulnp|grep rsync
    10 tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      15170/rsync         
    11 tcp        0      0 :::873                      :::*                        LISTEN      15170/rsync     

      

  • 相关阅读:
    快速排序
    归并排序
    堆排序
    通过先序和中序创建二叉树
    插入排序
    二叉排序树
    九宫重排
    字符串匹配 sunday算法
    傻逼数学题(math)
    最近点对学习笔记
  • 原文地址:https://www.cnblogs.com/eeexu123/p/9054993.html
Copyright © 2011-2022 走看看