1. 程式人生 > >Linux下用rsync實現檔案同步

Linux下用rsync實現檔案同步

rsync是linux下的一款快速增量備份工具Remote Sync,是一款實現遠端同步功能的軟體(資料映象備份軟體),它在同步檔案的同時,可以保持原來檔案的許可權、時間、軟硬連結等附加資訊。它不像FTP那樣需要全備份,rsync可以根據資料的變化進行差異備份,從而減少資料流量,提高工作效率。

一、準備工作

假設有兩臺伺服器:
IP:114.22.168.67    -- 作為rsync伺服器     需要配置rsyncd.conf檔案
IP:46.94.110.123    -- 作為rsync客戶端     不需要配置rsyncd.conf,檔案可為空

在伺服器端建立/demo目錄作為共享目錄,複製一些測試檔案到該目錄中,用於進行測試。

二、安裝及配置 rsync

1、安裝

# 伺服器和客戶端都要安裝。Centos是預設安裝了的
[[email protected] ~]#  yum -y install rsync 

2、配置

服務端配置:

rsync主要分為三個配置檔案,分別是:
rsyncd.conf              -- 主配置檔案
rsyncd.secrets         -- 密碼檔案
rsyncd.motd             -- 伺服器資訊檔案

 分別建立如下檔案:

[[email protected]  ~]#  touch /etc/rsyncd/rsyncd.conf
[

[email protected]  ~]#  touch /etc/rsyncd/rsyncd.secrets
[[email protected]  ~]#  chmod 600 /etc/rsyncd/rsyncd.secrets
[[email protected]  ~]#  touch /etc/rsyncd/rsyncd.motd

修改主配置檔案:

 [[email protected]  ~]#   vi  /etc/rsyncd/rsyncd.conf

在檔案中加入以下內容: 

uid = root                                      #執行 rsync 守護程序的使用者
gid = root                                      #執行 rsync 守護程序的組
use chroot = no                            #若為yes, 則需要root許可權,並且在同步符號連線資料時只會同步名稱不會同步內容。 
max connections = 5                    #設定併發連線數,0表示無限制
strict modes = yes                        #是否檢查口令檔案的許可權
port = 873                                     #埠,873為 rsync 預設埠
pid file = /var/run/rsyncd.pid         #PID檔案路徑
lock file = /var/run/rsync.lock        #鎖檔案路徑
log file = /var/log/rsyncd.log          #日誌檔案路徑

#自定義模組名。模組是定義伺服器哪個目錄要被同步。格式:[name]


[backup]                                                                  
path = /demo                                                             #同步目錄的路徑通過path指定
comment = This is a backup                                     #定義註釋說明的內容
ignore errors                                                             #忽略一些IO錯誤
read only = yes                                                         #是否允許客戶端上傳資料(雙向同步),yes表示不允許  
list = no                                                                     #客戶端請求顯示模組列表時,本模組名稱是否顯示,預設為yes(true)
hosts allow = 46.94.110.123  127.0.0.1                    #設定哪些主機可以同步資料,多ip和網段之間使用空格分隔
auth users = test                                                       #設定允許連線伺服器的賬戶(自定義命名)
secrets file = /etc/rsyncd/rsyncd.secrets                   #密碼驗證檔名

修改密碼配置檔案:

  [[email protected]  ~]#   vi  /etc/rsyncd/rsyncd.secrets

輸入內容:test:123456(使用者名稱:密碼  )(自定義設定)

 test:123456

 修改伺服器歡迎資訊(非必改項,可不設定):

  [[email protected]  ~]#   vi  /etc/rsyncd/rsyncd.motd

 加入自定義內容:

welcome to use the rsync services!

啟動rsync服務:

以 --daemon 方式啟動服務

 [[email protected]  ~]#   rsync --daemon --config=/etc/rsyncd/rsyncd.conf

#關閉服務:pkill rsync  

檢視rsync服務是否啟動: 

[[email protected]  ~]#   ps -ef|grep rsync
[[email protected]  ~]#   netstat -anlp | grep 873
[[email protected]  ~]#   lsof -i:873

設定開機啟動 rsync服務

[[email protected]  ~]#  echo "rsync --daemon --config=/etc/rsyncd/rsyncd.conf" >> /etc/rc.local

新增防火牆規則,允許873埠的資料訪問

[[email protected]  ~]#   firewall-cmd --permanent --add-port=873/tcp 


#或者
[[email protected]  ~]#   vi /etc/sysconfig/iptables
#新增以下內容
-A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT

#重啟防火牆
[[email protected]  ~]#  service iptables restart

  三、rsync檔案同步

  客戶端配置:

   安裝

[[email protected] ~]#  yum -y install rsync 

 建立密碼檔案:

[[email protected]  ~]#  touch /etc/rsyncd.secrets

輸入密碼:123456

[[email protected]  ~]#  echo "123456" >  /etc/rsyncd.secrets
[[email protected]  ~]#  chmod 600 /etc/rsyncd.secrets

 啟用檔案同步:

[[email protected]  ~]#  rsync -avzP --delete --progress [email protected]::backup --password-file=/etc/rsyncd.secrets  /usr/backup

上述命令的意思是用test使用者登陸到114.22.168.67的rsync伺服器上,把backup模組中指定的資料同步到本地的/usr/backup目錄下。以下是上一條命令中的引數介紹: 

-a  archive 歸檔模式,表示以遞迴方式傳輸檔案,並保持所有檔案屬性,等於-rlptgoD。
     -r 是遞迴     -l 是連結檔案,意思是拷貝連結檔案;-p 表示保持檔案原有許可權;
     -t 保持檔案原有時間;-g 保持檔案原有使用者組;-o 保持檔案原有屬主;-D 相當於塊裝置檔案;

-r 是遞迴;

-l 是連結檔案,意思是拷貝連結檔案;

-p 表示保持檔案原有許可權;

-t 保持檔案原有時間;

-g 保持檔案原有使用者組;

-o 保持檔案原有屬主;

-D 相當於塊裝置檔案;

-z 傳輸時壓縮;

-P 傳輸進度;

-v 傳輸時的進度等資訊,和-P有點關係;

--progress 是指顯示出詳細的進度情況

--delete 是指如果伺服器端刪除了這一檔案,那麼客戶端也相應把檔案刪除,保持真正的一致

--password-file=/etc/rsyncd.secrets

來指定密碼檔案,這樣就可以在指令碼中使用而無需互動式地輸入驗證密碼了,
這裡需要注意的是這份密碼檔案許可權屬性要設得只有屬主可讀。

四、客戶端自動與伺服器進行檔案同步

客戶端配置:

通過建立定時任務來完成同步

[[email protected]  ~]#  crontab -e

加入以下內容:

* * * * * rsync -avzP --delete --progress [email protected]::backup --password-file=/etc/rsyncd.secrets /usr/backup

上述內容表示每分鐘執行一次命令

重新啟動定時任務:

[[email protected]  ~]#  service crond restart

我們通過在服務端的 /demo 目錄下建立新的檔案,看看是否會同步到客戶端的 /usr/backup 目錄下。 等待一分鐘後,檔案成功同步到了客戶端 ~

到此,配置就結束了!

相關推薦

Linuxrsync實現檔案同步

rsync是linux下的一款快速增量備份工具Remote Sync,是一款實現遠端同步功能的軟體(資料映象備份軟體),它在同步檔案的同時,可以保持原來檔案的許可權、時間、軟硬連結等附加資訊。它不像FTP那樣需要全備份,rsync可以根據資料的變化進行差異備份,從而減少資

LinuxUDP實現檔案傳輸

UDP程式設計框圖                                           UDP協議中伺服器和客戶端的互動存在於資料的收發過程中。         進行網路資料收發的時候,伺服器和客戶端的資料是對應的:客戶端傳送資料的動作,對伺服器來說是接

linux信號量同步線程

amp serve 計數 thread roc 統計 ida 線程鎖 linu linux下利用信號量同步線程實現線程訪問計數功能 這裏是核心代碼,其他參考IPC一個綜合小實踐 #include <sys/types.h> #include <unist

linuxgdb實現程式宕機時自動列印呼叫堆疊

linux下程式執行幾天莫名其妙宕機了,不能還原現場,找到宕機原因就很無語了。 一個解決辦法是使用core檔案,但是對於大型伺服器檔案,動輒幾百M的core檔案是在有點傷不起,於是想到程式宕機時自動列印呼叫堆疊。簡單實用。

LinuxC實現域名到IP的轉換(域名解析)

只需呼叫一個函式即可gethostbyname(),gethostbyname()返回對應於給定主機名的包含主機名字和地址資訊的hostent結構指標。結構的宣告與gethostaddr()中一致。下面是函式原型: Windows平臺下 #include <winsock2.h>

Linux系統呼叫實現檔案操作

系統呼叫(系統呼叫是作業系統提供給使用者程式的一組“特殊”函式介面,使用者通過這組介面獲得作業系統提供的服務)中操作I/O的函式,都是針對檔案描述符的。 通過檔案描述符可以直接對相應檔案進行操作,如:open、close、write、read、ioctl #define STDIN_FIL

LinuxC實現串列埠讀寫

 http://hi.baidu.com/weiweisuo1986/item/b33200134ceaac6871d5e81d         之前要做一個和串列埠相關的專案,才認真研究了下串列埠,首先就是要實現串列埠和PC機的通訊。          串列埠的驅動一般不需要我們寫,都是很成熟的驅動

LinuxC++實現通過程序名稱獲取程序ID

近期開發的系統功能涉及到程序之間的查詢、程序對程序的啟停操作。 在shell環境下,使用程序名稱查詢程序ID非常簡單,例如通過 ps -ef | grep "proc_name"來檢視名為“proc_name”程序, 也可以通過pidof "proc_name"來獲取程序

linuxcjson實現對資料鍵值對的封裝儲存

首先需要下載封裝好的cjson包包括 cjson.h cjson.c 為方便大家我已上傳 下載地址如下 http://download.csdn.net/detail/wuheshi/8353075 程式設計時加入標頭檔案cjson.h 就可以呼叫cjson.c裡面的函

linuxwvdial實現gprs撥號上網

1. 安裝wvdial   sudo apt-get install wvdial   2. 在/etc/wvdial.conf中寫入wvdial的配置資訊: femacs /etc/wvdial.conf   Init1 = ATZ   Init2 = ATQ0 V1 E

Linuxst_mode判斷檔案型別

在Linux系統中,可以用stat()函式來獲取一個檔案的狀態。 #include <sys/stat.h> #include <unistd.h> int stat(const char *file_name,

Linux使用inotify實現檔案監控

1、需求 工程中需要對某個資料夾下的檔案進行監控,檔案、目錄發生變化後需要進行處理; 普通的方法是通過迴圈不停遍歷資料夾,但檔案數量較多時,將導致判定時間較長,並且無法區分檔案使用正在使用; 萬幸是Linux2.6後提供了一種inotify 對檔案系統進行監控,通過觸發的方

(轉)Linux通過rsync與inotify(異步文件系統事件監控機制)實現文件實時同步

-a 推送 root started init.d log tool mysql同步 .tar.gz Linux下通過rsync與inotify(異步文件系統事件監控機制)實現文件實時同步原文:http://www.summerspacestation.com/linux%

每天學點linux--(shell實現將一個資料夾下面的所有檔案拷貝到另一個資料夾/shell如何重新命名一個檔案

一、用shell實現將一個資料夾下面的所有檔案拷貝到另一個資料夾下 收穫: 1、在if test -d $1的時候,if後面一定要有空格 2、在使用變數的時候一定要用$! 3、學會`commad`的用法 下面給出程式碼,還有一些不完善的地方,有空補全一下,第一次shell

Linux的sersync和rsync實現實時同步

對於rsync這裡級不做過多的解釋了,主要介紹的是sersync的配置 1、如果電腦沒有安裝sersync服務的話,我們可以在這個地址進行安裝sersync下載地址 2、我們將下載過來的se

Fedora17samba實現windows和Linux跨平臺檔案系統訪問

第一步:在Fedora linux系統下載並安裝samba       #   yum  -y  install  samba 第二步:編輯samba的配置檔案/etc/samba/smb.conf        1. 找到[homes],複製這6行   yy6p 2.修改

Linuxroot許可權新增使用者,並給使用者或使用者組指定目錄的讀寫許可權(比如:tomcat檔案的讀寫許可權,可以用於新使用者部署專案)

目的: 在linux環境中為了安全起見,不能讓所有專案都用root部署(防止root許可權過大,對重要檔案的誤操作),所以新加使用者或使用者組,對新使用者或使用者組授予部分檔案操作的許可權。 1.建立使用者newuser,並設定密碼(預設連帶建立newuser組) # useradd n

Linuxls和du命令檢視檔案以及資料夾大小 (轉載)

ls的用法 ls -l |grep "^-"|wc -l或find ./company -type f | wc -l  檢視某資料夾下檔案的個數,包括子資料夾裡的。 ls -lR|grep "^-"|wc -l   檢視某資料夾下資料夾的個數,包括子資料夾裡的

linux互斥鎖和條件變數來實現讀寫鎖

以下內容來源自UNP卷二的第八章 讀寫鎖的概念( the conception of read-write lock ) (1)只要沒有執行緒持有某個給定的讀寫鎖用於寫,那麼任意數目的執行緒可以持有該執行緒用於讀 (2)僅當沒有執行緒持有某個給定的讀寫鎖用於讀或用於寫,才能分配該

Linuxc語言實現發送http請求 方式可以Get或者Post例程參考

sockaddr select sleep online 創建 線程終止 index -s lse [1].[代碼] Linux下用c語言實現發送http請求 方式可以Get或者Post 跳至 [1] ? 1 2 3 4 5 6 7 8 9 10 11 12 1