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     

  

猜你喜欢

转载自www.cnblogs.com/eeexu123/p/9054993.html