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  root@192.168.145.5::server
//列出目錄:
    rsync  --list-only  root@192.168.93.149::server 

//從服務端取數據(客戶端只會增加文件);
    rsync -avzP root@192.168.93.149::server rhel4home[本地目錄]
    
//從服務端取數據(使客戶端的文件和服務端完全一致,會刪除客戶端多余的文件);
    rsync -avzP --delete root@192.168.93.149::server ./
    
//密碼從文件中讀取:    注意此時的密碼文件里面只需要寫密碼不要寫用戶名 和服務端的文件是不同的
    rsync -avzP --delete --password-file=/etc/rsyncd.secrets root@192.168.93.149::server ./

//客戶端向服務端提交文件(只需要把目錄更換位置即可)
    rsync -avzP --delete --password-file=/kang/sercet ./ root@192.168.93.149::server

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM