RSync 遠程同步工具的使用

轉自:http://www.cnblogs.com/siqi/archive/2012/11/22/2783460.html

RSync 遠程同步工具的使用

RSync實現文件備份同步:

簡介:

remote synchronize:一款實現遠程同步功能的軟件,它在同步文件的同時,可以保持原來文件的權限、時間、軟硬鏈接等附加信息, rsync是用 “rsync 算法”提供了一個客戶機     和遠程文件服務器的文件同步的快速方法,而且可以通過ssh方式來傳輸文件,這樣其保密性也非常好,另外它還是免費的軟件。因爲rsync是一款如此有用            的軟件,所以很多Linux的發行版本都將它收錄在內了

特性:

能更新整個目錄
有選擇性的保持符號鏈鏈、硬鏈接、文件屬於、權限、設備以及時間等;
對於安裝來說,無任何特殊權限要求;
對於多個文件來說,內部流水線減少文件等待的延時;
能用rsh、ssh 或直接端口做爲傳輸入端口;
支持匿名rsync 同步文件,是理想的鏡像工具;
架設rsync服務器:

  1.安裝:

複製代碼

yum方式安裝

源碼方式,注意安裝gcc

tar xvf rsync-xxx.tar.gz
cd rsync-xxx
./configure –prefix=/usr/local
make ;make install
複製代碼
rsync的主要有以下三個配置文件(需要手工創建):
/etc/rsyncd.conf(主配置文件)

/etc/rsyncd.secrets(密碼文件)
  格式:user1:passwd1
  出於安全目的,文件的屬性必需是隻有屬主可讀。
  chown root.root rsyncd.secrets  #修改屬主
  chmod 600 rsyncd.secrets

/etc/rsyncd.motd
  定義rysnc服務器信息的,也就是用戶登錄信息,可以爲空
  類似ftp的歡迎頁面
  示例:Welcome to use the mike.org.cn rsync services!

rsyncd.conf配置文件示例:

複製代碼

Distributed under the terms of the GNU General Public License v2

Minimal configuration file for rsync daemon

See rsync(1) and rsyncd.conf(5) man pages for help

This line is required by the /etc/init.d/rsyncd script

告訴進程寫到 /var/run/rsyncd.pid 文件中

pid file = /var/run/rsyncd.pid

指定運行端口,默認是873

port = 873

指定服務器IP地址

address = 192.168.1.171

服務器端傳輸文件時,要發哪個用戶和用戶組來執行,默認是nobody。 如果用nobody 用戶和用戶組,可能遇到權限問題

uid = nobody

gid = nobody

uid = root
gid = root

一個安全選項 詳情自己去查查

use chroot = yes

read only 是隻讀選擇,也就是說,不讓客戶端上傳文件到服務器上。還有一個 write only選項

read only = yes

在您可以指定單個IP,也可以指定整個網段,能提高安全性。格式是ip 與ip 之間、ip和網段之間、網段和網段之間要用空格隔開

limit access to private LANs

hosts allow=192.168.1.0/255.255.255.0 10.0.1.0/255.255.255.0
hosts deny=*

max connections = 5
motd file = /etc/rsyncd.motd

This will give you a separate log file

log file = /var/log/rsync.log

This will log every file transferred - up to 85,000+ per user, per sync

transfer logging = yes

log format = %t %a %m %f %b
syslog facility = local3
timeout = 300

#指定文件目錄所在位置
[home]
path = /home
list=yes #是否可以列出目錄
ignore errors # #忽略IO錯誤

auth users必須是在服務器上存在的真實的系統用戶,如果你想用多個用戶以,號隔開,比如auth users = easylife,root

auth users = root
secrets file = /etc/rsyncd.secrets
comment = This is RHEL 4 data

exclude是排除的意思,也就是說,要把/home目錄下的easylife和samba排除在外; easylife/和samba/目錄之間有空格分開

exclude = easylife/ samba/
複製代碼
模塊定義什麼呢?
  主要是定義服務器哪個目錄要被同步。每個模塊都要以[name]形式。這個名字就是在rsync 客戶端看到的名字,其實有點象Samba服務器提供的共享名。而服務器真正同步的 數據是通過path 指定的。我們可以根據自己的需要,來指定多個模塊。每個模塊要指定認證用戶,密碼文件、但排除並不是必須的

啓動rsync服務器:

/usr/bin/rsync –daemon –config=/etc/rsyncd/rsyncd.conf

–config用於指定rsyncd.conf的位置,如果在/etc下可以不寫/usr/bin/rsync –daemon –config=/etc/rsyncd/rsyncd.conf
rsync有六種不同的工作模式:

  1. 拷貝本地文件;當SRC和DES路徑信息都不包含有單個冒號”:”分隔符時就啓動這種工作模式。
  2.使用一個遠程shell程序(如rsh、ssh)來實現將本地機器的內容拷貝到遠程機器。當DST路徑地址包含單個冒號”:”分隔符時啓動該模式。
  3.使用一個遠程shell程序(如rsh、ssh)來實現將遠程機器的內容拷貝到本地機器。當SRC地址路徑包含單個冒號”:”分隔符時啓動該模式。
  4. 從遠程rsync服務器中拷貝文件到本地機。當SRC路徑信息包含”::”分隔符時啓動該模式。
  5. 從本地機器拷貝文件到遠程rsync服務器中。當DST路徑信息包含”::”分隔符時啓動該模式。
  6. 列遠程機的文件列表。這類似於rsync傳輸,不過只要在命令中省略掉本地機信息即可。
  -a 以archive模式操作、複製目錄、符號連接 相當於-rlptgoD

  rsync中的參數

  -r 是遞歸
  -l 是鏈接文件,意思是拷貝鏈接文件;-p 表示保持文件原有權限;-t 保持文件原有時間;-g 保持文件原有用戶組;-o 保持文件原有屬主;-D 相當於塊設備文件;
  -z 傳輸時壓縮;
  -P 傳輸進度;
  -v 傳輸時的進度等信息,和-P有點關係,自己試試。可以看文檔;
  -e ssh的參數建立起加密的連接。
  -u只進行更新,防止本地新文件被重寫,注意兩者機器的時鐘的同時
  –progress是指顯示出詳細的進度情況
  –delete是指如果服務器端刪除了這一文件,那麼客戶端也相應把文件刪除,保持真正的一致
  –password-file=/password/path/file來指定密碼文件,這樣就可以在腳本中使用而無需交互式地輸入驗證密碼了,這裏需要注意的是這份密碼文件權限屬性要設得只有屬主可讀。

一些實例:

複製代碼
//注:server爲modul名[server]
//列出rsync 服務器上的所提供的同步內容
rsync –list-only [email protected]::server
//列出目錄:
rsync –list-only [email protected]::server

//從服務端取數據(客戶端只會增加文件);
rsync -avzP [email protected]::server rhel4home[本地目錄]

//從服務端取數據(使客戶端的文件和服務端完全一致,會刪除客戶端多餘的文件);
rsync -avzP –delete [email protected]::server ./

//密碼從文件中讀取: 注意此時的密碼文件裏面只需要寫密碼不要寫用戶名 和服務端的文件是不同的
rsync -avzP –delete –password-file=/etc/rsyncd.secrets [email protected]::server ./

//客戶端向服務端提交文件(只需要把目錄更換位置即可)
rsync -avzP –delete –password-file=/kang/sercet ./ [email protected]::server
複製代碼

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