使用rsync實現數據實時同步備份

實驗目標

rsync 遠程同步

實戰1: 備份/var/www/html 目彔

實戰2: 使用ssh密鑰實現無交互備份

實戰3: 配置rsync 服務器及需要備份的目彔,不使用系統用戶

實戰4: 配置rsync+inotify實時同步

實戰5: 防止網頁被篡改

實驗概述

軟件簡介

Rsync ( Remote sync)是一個遠程數據同步工具,使用與unix/Linux/windows等多種平臺。 可通過LAN/WAN 快速同步多臺主機間的文件。Rsync 本來是用以取代rcp 的一個工具,它當前由 Rsync.samba.org 維護。Rsync 使用所謂的“Rsync 演算法”來使本地和遠程兩個主機之間的文件達到同步,這個算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當快。運行 Rsync server 的機器也叫 backup server,一個 Rsync server 可同時備份多個 client 的數據;也可以多個Rsync server 備份一個 client 的數據。

Rsync 可以搭配 rsh 或 ssh 甚至使用 daemon 模式。Rsync server 會打開一個873的服務通道(port),等待對方 Rsync 連接。連接時,Rsync server 會檢查口令是否相符,若通過口令查覈,則可以開始進行文件傳輸。第一次連通完成時,會把整份文件傳輸一次,下一次就只傳送二個文件之間不同的部份。

Rsync 支持大多數的類 Unix 系統,無論是 Linux、Solaris 還是 BSD 上都經過了良好的測試。此外,它在windows 平臺下也有相應的版本,比較知名的有 cwRsync 和 Sync2NAS。

Rsync 的基本特點如下:

可以鏡像保存整個目錄樹和文件系統;
可以很容易做到保持原來文件的權限、時間、軟硬鏈接等;
無須特殊權限即可安裝;
優化的流程,文件傳輸效率高;
可以使用 rcp、ssh 等方式來傳輸文件,當然也可以通過直接的 socket 連接;
支持匿名傳輸。
Rsync優點:

支持增量備份。

選擇性的保持 : 符號鏈接,硬鏈接,文件屬性,權限 及時間 等。

傳輸前執行壓縮。適用於異地備份 ,鏡像服務器等應用 。

使用ssh做爲傳輸端口。 sftp ,ssh xshell

Rsync和scp的區別:

當文件數據很大時候: scp 無法備份大量數據, 特點: 先統一信息,像windows複製。

scp每次拷貝都是完整拷貝。無法增量拷貝。rsync 邊複製,邊比較,邊統計。

端口: 873 模式:C/S

Rsync同步備份的原理

在遠程同步任務中,負責發起rsync同步操作的客戶機稱爲發起端,而負責響應來自客機的rsync同步操作的服務器稱爲備份源。
使用rsync實現數據實時同步備份
首先服務器B(發起源)向服務器A(同步源)進行數據備份,將自己的數據備份到服務器A中。當服務器B中的數據遭到損失或者增量的時候,都會從服務器A中進行數據同步。服務器B數據丟失則從服務器A中同步數據丟失的部分。當服務器B數據增多了,就會再次向服務器A進行數據備份,但是備份的不是完整備份,而是增量備份,即備份同步源中沒有的數據。

實驗步驟

1:實驗環境搭建

安裝rsync:- - -查看一下rsync是有那個包安裝的

[root@xuegod-63 ~]# rpm -qf which rsync

rsync-3.0.6-5.el6_0.1.x86_64

安裝xinetd服務來管理rsync服務

[root@xuegod-63 ~]# rpm -ivh /mnt/Packages/xinetd-2.3.14-33.el6.x86_64.rpm

#rsync是由xinetd包管理的,因此只需要安裝xinetd包就OK了,並不需要安裝rsync的包

開啓rsync服務:

[root@xuegod-63 ~]# vim /etc/xinetd.d/rsync

改:disable = yes

爲:disable = no

[root@xuegod-63 ~]# /etc/init.d/xinetd restart

rsync監聽端口873/tcp

[root@xuegod-63 ~]# vim /etc/services使用rsync實現數據實時同步備份
[root@xuegod-63 ~]# netstat -anutp | grep 873

tcp 0 0 :::873 :::* LISTEN 8876/xinetd

#可以看到873端口是由xinetd包管理的

反查一下這個端口

[root@xuegod-63 ~]# lsof -i:873

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

xinetd 8876 root 5u IPv6 40238 0t0 TCP *:rsync (LISTEN)

rsync命令的基本用法:

格式:rsync 【選項】 源文件 目標文件

查看rsync的命令參數

[root@xuegod-63 ~]# rsync -h

-a,--archive(存檔) 歸模式,表示以遞歸的方式傳輸文件,並且保持文件屬性,等同於加了參數-rlptgoD

-r,–recursive 對子目錄以遞歸模式處理

-l,--links 表示拷貝鏈接文件

-p , --perms 表示保持文件原有權限

-t , --times 表示保持文件原有時間

-g , --group 表示保持文件原有屬用戶組

-o , --owner 表示保持文件原有屬主

-D , --devices 表示塊設備文件信息

-z , --compress 表示壓縮傳輸

-H 表示硬連接文件

-A 保留ACL屬性信息

-P 顯示傳輸進度

-u, --update 僅僅進行更新,也就是跳過所有已經存在於目標位置,並且文件時間晚於要備份的文件。(不覆蓋更新的文件)

--port=PORT 指定其他的rsync服務端口 873

--delete 刪除那些目標位置有而原始位置沒有的文件

--password-file=FILE 從FILE中得到密碼
--bwlimit=KBPS 限制I/O帶寬,Kbytes /second

--filter “- 文件名”需要過濾的文件

--exclude= :需要過濾的文件

-v 顯示同步過程的詳細信息

實戰1

備份/var/www/html 目錄。創建用戶rget 1用於下載,讀;創建用戶rput1 用於上傳,寫。 客戶端與服務端進行數據同步。

服務器 :xuegod-63 192.168.1.63

客戶端 :xuegod-64 192.168.1.64

擴展:

setfacl 命令可以用來細分linux下的文件權限

getfacl 查看文件的權限

setfacl和chmod有什麼區別

chmod命令可以把文件權限分爲u,g,o三個組,而setfacl可以對每一個文件或目錄設置更精確的文件權限。 比較常用的用法如下:

setfacl –m u:apache:rwx file #設置apache用戶對file文件的rwx權限

setfacl –m g:market:rwx file #設置market用戶組對file文件的rwx權限

setfacl –x g:market file #刪除market組對file文件的所有權限

創建用戶並設置密碼

[root@xuegod-63 ~]# useradd rget1

[root@xuegod-63 ~]# useradd rput1

[root@xuegod-63 ~]# echo 123456 | passwd --stdin rget1

[root@xuegod-63 ~]# echo 123456 | passwd --stdin rput1

設置權限

[root@xuegod-63 ~]# setfacl -R -m user:rget1:rwx /var/www/html/

#指定rgut1用戶可以對目錄/var/www/html/擁有讀寫執行權限

[root@xuegod-63 ~]# setfacl -R -m default:user:rget1:rwx /var/www/html/ #再設置默認權限

#設置默認情況下rgut1用戶可以對/var/www/html/下,所有文件擁有可讀寫權限

[root@xuegod-63 ~]# setfacl -R -m user:rput1:r-x /var/www/html/

[root@xuegod-63 ~]# setfacl -R -m default:user:rput1:r-x /var/www/html/

查看權限

[root@xuegod-63 ~]# getfacl /var/www/html/

file: var/www/html/

user:rget1:rwx

user:rput1:r-x

#可以看到新增加的用戶rget1具有的讀寫執行的權限和用戶rput1具有讀和執行的權限

開始備份:

xuegod-63: 創建用於測試的數據

[root@xuegod-63 ~]# cp -r /boot/grub/ /var/www/html/

xegod-64:同步數據

[root@xuegod-64 ~]# mkdir /web-back

[root@xuegod64 ~]# cp /etc/passwd /web-back/

[root@xuegod-64 ~]# rsync -azP --delete [email protected]:/var/www/html/ /web-back/

#將同步源1.63服務端的/var/www/html/下的文件數據同步到1.64下的/web-back/目錄下,並且刪除發起源1.64客戶端下不同於同步源1.63服務端下的文件,這裏的目標位置指的就是1.64客戶端。

[email protected]'s password:

報錯:

……

rsync: send_files failed to open "/var/www/html/grub/grub.conf":Permission denied (13)

grub/iso9660_stage1_5 #這裏提示沒有權限

解決:找到文件擴大權限

[root@xuegod-63 ~]# ll /var/www/html/grub/grub.conf

-rw-------+ 1 root root 787 Apr 9 19:17 /var/www/html/grub/grub.conf

[root@xuegod-63 ~]# cd /var/www/html/grub/

[root@xuegod-63 grub]# chmod 744 grub.conf

測試

[root@xuegod-64 ~]# rsync -azP --delete [email protected]:/var/www/html/ /web-back/

[email protected]'s password:

grub/grub.conf #這是需要增加權限的文件

     761 100%  743.16kB/s    0:00:00 (xfer#1, to-check=11/18)

[root@xuegod64 ~]# ls /web-back/

grub

#可以看到新加了一個文件,之前複製進去的passwd文件被刪除了。

文章轉自:http://www.linuxidc.com/Linux/2017-05/143462.htm

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章