發佈日期:

CentOS 7安裝部署Rsync數據同步服務器

[日期:2017-06-14]來源:Linux社區  作者:manual[字體: ]

Rsync(remote sync)是UNIX及類UNIX平台下一款神奇的數據鏡像備份軟件,它不像FTP或其他文件傳輸服務那樣需要進行全備份,Rsync可以根據數據的變化進行差異備份,從而減少數據流量,提高工作效率。你可以使用它進行本地數據或遠程數據的複製,Rsync可以使用SSH安全隧道進行加密數據傳輸。Rsync服務器端定義源數據,Rsync客戶端僅在源數據發生改變後才會從服務器上實際複製數據至本地,如果源數據在服務器端被刪除,則客戶端數據也會被刪除,以確保主機之間的數據是同步的。Rsync使用TCP 873端口。

使用CentOS 7系統安裝部署Rsync非常方便,安裝光盤以及YUM源中都提供了rsync軟件包,使用YUM方式安裝即可。下面的案例演示了如何共享/common目錄,為此,我們需要創建/common目錄,並複製一些測試文件存放在該目錄下。本例需要手動創建配置文件/etc/rsync.conf,該文件具體的語法格式在後面有詳細的描述。

yum -y install rsync
mkdir /common; cp /etc/init.d/* /common/
vim /etc/rsync.conf

#/etc/rsyncd.conf
#設置服務器信息提示文件名稱,在該文件中編寫提示信息
motd file = /etc/rsyncd.motd
#開啟Rsync數據傳輸日誌功能
transfer logging = yes
#設置日誌文件名稱,可以通過log format參數設置日誌格式
log file =/var/log/rsyncd.log
#設置Rsync進程號保存文件名稱
pid file =/var/run/rsyncd.pid
#設置鎖文件名稱
lock file =/var/run/rsync.lock
#設置服務器監聽的端口號,默認為873
port = 873
#設置服務器所監聽網卡接口的IP地址,這裡服務器IP地址為192.168.0.254
address = 192.168.0.254
#設置進行數據傳輸時所使用的賬戶名稱或ID號,默認使用nobody
uid = nobody
#設置進行數據傳輸時所使用的組名稱或GID號,默認使用nobody
gid = nobody
#設置user chroot為yes後,rsync會首先進行chroot設置,將根映射到path參數路徑下,對客戶
#端而言,系統的根就是path參數所指定的路徑。但這樣做需要root權限,並且在同步符號
#連接資料時僅會同步名稱,而內容將不會同步。
use chroot = no
#是否允許客戶端上傳數據,這裡設置為只讀。
read only = yes
#設置並發連接數,0代表無限制。超出並發數後,如果依然有客戶端連接請求,則將會收
#到稍後重試的提示消息
max connections = 10
#模塊,Rsync通過模塊定義同步的目錄,模塊以[name]的形式定義,這與Samba定義共
#享目錄是一樣的效果。在Rsync中也可以定義多個模塊
[common]
#comment定義註釋說明字串
comment = Web content
#同步目錄的真實路徑通過path指定
path = /common
#忽略一些IO錯誤
ignore errors
#exclude可以指定例外的目錄,即將common目錄下的某個目錄設置為不同步數據
#exclude = test/
#設置允許連接服務器的賬戶,賬戶可以是系統中不存在的用戶
auth users = tom,jerry
#設置密碼驗證文件名稱,注意該文件的權限要求為只讀,建議權限為600,僅在設置auth users
#參數後有效
secrets file = /etc/rsyncd.secrets
#設置允許哪些主機可以同步數據,可以是單個IP,也可以是網段,多個IP與網段之間使用空
#格分隔
hosts allow=192.168.0.0/255.255.255.0
#設置拒絕所有(除hosts allow定義的主機外)
hosts deny=*
#客戶端請求顯示模塊列表時,本模塊名稱是否顯示,默認為true
list= false

接下來,通過echo的方式創建密碼文件/etc/rsyncd.secrets,在該文件中輸入兩個賬戶:tom賬戶的密碼是pass,jerry賬戶的密碼是111。需要注意的是,密碼文件不可以對所有的人開放可讀權限,為了安全,建議設置權限為600。創建服務器提示信息文件並向該文件中導入歡迎詞。由於Rsync默認不是開機啟動服務,為了實現開機啟動Rsync服務,我們可以通過echo將rsync –daemon追加至開機啟動文件/etc/rc.local。最後通過設置防火牆開啟873端口的入站數據請求。

echo "tom:pass" > /etc/rsyncd.secrets
echo "jerry:111" >> /etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets
echo 「welcome to access」 >/etc/rsyncd.motd
rsync --daemon
echo 「/usr/bin/rsync --daemon」 >> /etc/rc.local
firewall-cmd --permanent --add-port=873/tcp


#添加防火牆規則,允許873端口的數據訪問

客戶端同步數據

現在讓我們開始同步數據吧,在客戶端主機中同樣是使用rsync命令進行初始化數據傳輸,使用同樣的程序,但客戶端主機不需要–daemon選項。
[

yum -y install rsync
rsync-vzrtopg --progress tom@192.168.0.254::common /test
發佈日期:

rsync 透過 SSH 傳送及備份檔案

rsync 是很常用的檔案傳送工具,以下會介紹用 rsync + SSH 傳送檔案,並以 CentOS 7 作為測試環境。

第一步先在 Server 產生一組 public SSH keys, 該 Client 端可以不用輸入密碼登入

ssh-keygen -f ~/.ssh/public.key -q -P ""

現在可以將 public.key 的內容複制起來,可以用 cat 指令:

$ cat ~/.ssh/public.key

將以上 public.key 內容複製後,登入到 Client 端,並儲到到 ~/.ssh/authorized_keys, 如果 .ssh/ 目錄不存在,需要手動建立並建立正確權限:

mkdir ~/.ssh
chmod 0700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 0644 ~/.ssh/authorized_keys

現在可以在 Client 端用 rsync 備份 Server 端竹的資料,或者備份資料到 Server 端,以下指 rsync 透過 SSH 傳送檔案的指令語法:

rsync -av --delete -e ssh username@xxx.xxx.xxx:/var/www /home/backup/www 

以上指令會以 “username” 作為登入帳號,並將 Server 端 (xxx.xxx.xxx.xxx) 上面的 /var/www 目錄,全部資料備份到 Client 端的 /home/backup/www 目錄。