Rsyncバックアップ同期データツール

23846 ワード

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