Rsync備份同步數據工具

Rsync  is  a  fast and extraordinarily versatile file copying tool.nginx

Rsync是一款開源的,快速的,多功能的,可實現全量和增量的本地或者遠程的數據同步,備份的優秀工具。shell

Rsync的功能:安全

一、支持拷貝特殊文件如連接文件、設備等。bash

二、能夠有排除指定文件或目錄同步的功能,至關於打包命令tar的--exclude=PATTERN排除功能。服務器

三、能夠作到保持原文件或目錄的權限、時間、軟硬連接、屬主、屬組等全部屬性不變。ssh

四、能夠實現增量同步,即只同步發生改變的文件。socket

五、可使用rcp,rsh,ssh等方式配合傳輸文件。(rsync自己不對文件進行加密)。tcp

六、能夠經過socket(進程方式)傳輸文件和數據(即客戶端與服務端)。工具

七、支持匿名的認證(無需系統用戶)的進程模式傳輸,可實現方便安全的進行數據備份及鏡像。測試

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、服務端

一、首先在服務端上建立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

二、建立用戶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

三、建立匿名用戶和密碼文件

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

四、修改密碼文件的權限

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

五、啓動Rsync服務

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

 

B、客戶端

一、首先建立匿名用的密碼文件

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

二、修改密碼文件的權限

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     
相關文章
相關標籤/搜索