Linux系統Rsync數據同步工具

1.1什麼Rsync?html

       Rsync 是一款開源的、快速的、多功能的、可實現全量及增量的本地或遠程數據同步備份的優秀工具。
        Rsync 軟件使用於/unix/linux/windows 等多種操做系統平臺。
下面是官方的英文簡單描述:rsync-a fast,versatile,remote(and local)file-copying tool
來自:http://www.samba.org/ftp/rsync.htmllinux


1.2 Rsync 簡介
Rsync 英文全稱爲Remote synchronization 從軟件的名稱就能夠看出來,Rsync 具備可使用本地
和遠程兩臺主機直接的數據快速複製同步鏡像、遠程備份的功能,這個功能相似ssh 帶的scp 命令,但又
優於scp 命令的功能,scp 每次都是全量及增量的複製數據,這又相似cp 命令,但一樣也優於cp 命令,cp
每次都是全量拷貝,而Rsync 能夠增量拷貝。
提示:
利用Rsync 還能夠實現刪除文件和目錄的功能,這又至關於rm 命令!一個rsync 至關於scp,cp,rm,可是
還優於他們每一個命令redis


1.2.1 Rsync功能
主要做用:
在兩臺計算機之間進行數據同步
重要功能:
1. 若是是遠程拷貝的話,至關於scp 功能,scp 就是加密的拷貝。
2. 若是是本地拷貝的話,至關於cp 命令
3. 若是是刪除文件的話,至關於rm 命令
rsync 能夠是一個網絡服務port、socket(服務)在同步備份數據時,默認狀況下,rsync 經過其獨特的"quick check"算法,它僅同步大小或者最後修改時間發生變化的文件或目錄,固然也能夠根據權限,屬主等屬性的變化同步,但須要指定相應的參數,甚至能夠實現只同步一個文件裏有變化的內容部分,因此,能夠實現快速的同步備份數據。
提示:
傳統的cp,scp 工具拷貝每次均爲完整拷貝,而rsync 除了能夠完整拷貝外,還具有增量拷貝功能,所以,從同步數據的性能及效率上,rsync 工具更勝一籌。算法


1.2.2 Rsync 的特性
1. 支持拷貝特殊文件如連接文件,設備等。
2. 能夠有排除指定文件或目錄同步的功能,至關於打包命令tar 的排除功能。
3. 能夠作到保持源文件或目錄的權限、時間、軟硬連接、屬主、組等全部屬性均不改變(-p)
4. 能夠實現增量同步,即只同步發生變化的數據,所以數據傳輸效率很高,tar -N。
5. 可使用rcp,rsh,ssh 等方式來配合傳輸文件(Rsync 自己不對數據加密)
6. 能夠經過socket(進程方式)傳輸文件和數據(服務器和客戶端)
7. 支持匿名或認證(無需系統用戶)的進程模式傳輸,能夠實現方便安全的進行數據備份及鏡像。vim


1.3 rsync 命令說明
提示:
rsync 命令是客戶端命令
Rsync 參數:
參數 描述
-a 保持屬性不變,-a --歸檔模式,表示以遞歸方式傳輸文件,並保持全部文件屬性,等於-rtopgDl
-v 詳細模式輸出,傳輸時的進度等信息。
-z 傳輸時進行壓縮提升傳輸效率
-e --rsh=COMMAND 使用的信道協議,指定替代rsh 的sheel 程序,設置傳輸隧道 如:ssh -p 22
-P --progress 顯示同步的過程及傳輸時的進度等信息。
-r --recursive 對子目錄以遞歸模式,即目錄下的全部目錄都一樣傳輸,注意是小寫r
-t --times 保持文件時間信息
-o --owner 保持文件屬主信息
-p --perms 保持文件權限
-g --group 保持文件屬組信息
-D --devices 保持設備文件信息
-l --links 保持軟硬連接
排除參數:
--exclude=PATTERN 指定排除不須要傳輸的文件模式
--exclude-from=file (文件名所在的目錄文件)
--exclude=abc 排除一個文件
--exclude={a,c} 排除多個文件
--compress-level=NUM 可按級別壓縮windows


1.4 Rsync服務器配置(守護進程)工做模式
1. 四臺服務器運行rsync --version 查看版本號 (CRT 交互窗口)
安全

[root@Rsync-SERVER-14 /]# rsync --version #查看rsync 版本號
rsync version 3.0.6 protocol version 30
Copyright (C) 1996-2009 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
64-bit files, 64-bit inums, 32-bit timestamps, 64-bit long ints,
socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
append, ACLs, xattrs, iconv, symtimes
rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you
are welcome to redistribute it under certain conditions. See the GNU
General Public Licence for details.

2. 配置Rsync 服務文件(rsyncd.conf)
bash

[root@Rsync-SERVER-14 /]# rpm -qa |grep rsync #查看是否安裝了rsync
rsync-3.0.6-12.el6.i686
[root@Rsync-SERVER-14 /]# touch /etc/rsyncd.conf #默認rsync 配置文件不存在須要手動建立
[root@Rsync-SERVER-14 /]# ls /etc/rsyncd.conf
/etc/rsyncd.conf
[root@Rsync-SERVER-14 /]# vim /etc/rsyncd.conf #編輯rsyncd.conf 文件添加內容
#Rsync server
#Created by Jonny 21:30 2015-10-28
##rsyncd.conf start ##
uid = rsync #客戶端連到服務器用戶具有什麼權限,客戶端就具有這個用戶的權限
gid = rsync #客戶端連到服務器組具有什麼權限,客戶端就具有這個組的權限
use chroot = no #當程序出現漏洞的時候,開啓給一個空目錄,出現漏洞的時候,把漏洞定向到空目
錄
max connections = 2000 #客戶端鏈接數,同時鏈接2000 個
timeout = 600 #超時時間,客戶端連服務器600 秒都不作任何操做就會斷掉鏈接
pid file = /var/run/rsyncd.pid #rsync 的進程號放/var/run/rsyncd.pid,好處是未來不用看進程直
接看pid 就能夠管理rsync 服務
lock file = /var/run/rsyncd.lock #lock file 指定支持max connections 參數的鎖文件,默認值是
/var/run/rsyncd.lock
ignore errors #忽略錯誤
read only = false #只讀是假的,可讀寫 true(真)
list = false #列表是假,不能看服務器有什麼true(真)
hosts allow = 192.168.1.0/24 #容許IP 段
hosts deny = 0.0.0.0/32 #阻止網段
auth users = rsync_backup #認證用戶(虛擬用戶)
secrets file = /etc/rsync.password #存放用戶和密碼的文件(格式 用戶:密碼)
######################################
[backup] #共享模塊名稱
comment = backup server by Jonny 21:35 2015-10-28 #註釋說明
path = /backup #共享模塊路徑
更多的配置man rsyncd.conf

3. 啓動rsync 服務
服務器

[root@Rsync-SERVER-14 /]# rsync –daemon #啓動rsync 服務
[root@Rsync-SERVER-14 /]# ps -ef |grep rsync|grep -v grep #查看rsync 服務是否正常
root 3457 1 0 07:40 ? 00:00:00 rsync --daemon
[root@Rsync-SERVER-14 /]# netstat -lntp |grep rsync #查看rsync 的服務偵聽狀況
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN
3457/rsync
tcp 0 0 :::873 :::* LISTEN
3457/rsync
[root@Rsync-SERVER-14 /]# lsof -i ":873" #根據端口號查看rsync 服務
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsync 3457 root 3u IPv4 18925 0t0 TCP *:rsync (LISTEN)
rsync 3457 root 5u IPv6 18926 0t0 TCP *:rsync (LISTEN)
[root@Rsync-SERVER-14 /]# ss -lntup |grep rsync #ss 也能夠查看rsync 服務
tcp LISTEN 0 5 :::873 :::*
users:(("rsync",3457,5))
tcp LISTEN 0 5 *:873 *:*
users:(("rsync",3457,3))

4.建立Rsync用戶
網絡

[root@Rsync-SERVER-14 /]# useradd rsync -M -s /sbin/nologin #建立rsync 虛擬用戶

5.建立共享目錄

[root@Rsync-SERVER-14 /]# mkdir /backup #建立共享模塊的目錄

6.受權rsync用戶

[root@Rsync-SERVER-14 /]# chown -R rsync /backup #設置/backup 目錄屬主爲rsync
[root@Rsync-SERVER-14 /]# ls -ld /backup/ #檢查是否設置好
drwxr-xr-x. 2 rsync root 4096 Oct 26 07:48 /backup/

7.建立密碼文件

[root@Rsync-SERVER-14 /]# echo "rsync_backup:oldboy" >/etc/rsync.password  #建立密碼文件
[root@Rsync-SERVER-14 /]# cat /etc/rsync.password        #檢查是否建立好rsync_backup:oldboy
[root@Rsync-SERVER-14 /]# chmod 600 /etc/rsync.password  #由於是密碼文件,全部設置權限600
[root@Rsync-SERVER-14 /]# ls -ld /etc/rsync.password     #檢查是否設置好
-rw-------. 1 root root 510 Oct 26 07:19 /etc/rsync.password

1.5 Rsync客戶端配置

1. 須要建立密碼文件輸入裏面的密碼須要跟服務器同樣,由於當客戶端鏈接服務器的時候,服務器會跟客戶端要密碼,要的就是跟服務器相同的密碼。

[root@NFS-SERVER-11 ~]# echo "oldboy" >/etc/rsync.password
[root@NFS-SERVER-11 ~]# chmod 600 /etc/rsync.password

2. 客戶端推送文件到服務器

提示:
推拉都是客戶端操做的

[root@NFS-SERVER-11 /]# rsync -avzP /etc/hosts rsync_backup@192.168.1.14::backup
--password-file=/etc/rsync.password
sending incremental file list
hosts
158 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/1)
sent 120 bytes received 27 bytes 294.00 bytes/sec
total size is 158 speedup is 1.07

3.Rsync服務器查看是否推送到/backup/

[root@Rsync-SERVER-14 /]# ls /backup/
11 hosts

4. 客戶端向服務器拉取數據

[root@NFS-SERVER-11 ~]# rsync -avz rsync_backup@192.168.1.14::backup /tmp/
--password-file=/etc/rsync.password
receiving incremental file list
./
11
hosts
test/
test/hosts
sent 128 bytes received 410 bytes 1076.00 bytes/sec
total size is 316 speedup is 0.59
[root@NFS-SERVER-11 ~]# ls /tmp/
hosts
相關文章
相關標籤/搜索