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 目錄下。 等待一分鐘後,檔案成功同步到了客戶端 ~
到此,配置就結束了!
相關推薦
Linux下用rsync實現檔案同步
rsync是linux下的一款快速增量備份工具Remote Sync,是一款實現遠端同步功能的軟體(資料映象備份軟體),它在同步檔案的同時,可以保持原來檔案的許可權、時間、軟硬連結等附加資訊。它不像FTP那樣需要全備份,rsync可以根據資料的變化進行差異備份,從而減少資
Linux下用UDP實現檔案傳輸
UDP程式設計框圖 UDP協議中伺服器和客戶端的互動存在於資料的收發過程中。 進行網路資料收發的時候,伺服器和客戶端的資料是對應的:客戶端傳送資料的動作,對伺服器來說是接
linux下用信號量同步線程
amp serve 計數 thread roc 統計 ida 線程鎖 linu linux下利用信號量同步線程實現線程訪問計數功能 這裏是核心代碼,其他參考IPC一個綜合小實踐 #include <sys/types.h> #include <unist
linux下用gdb實現程式宕機時自動列印呼叫堆疊
linux下程式執行幾天莫名其妙宕機了,不能還原現場,找到宕機原因就很無語了。 一個解決辦法是使用core檔案,但是對於大型伺服器檔案,動輒幾百M的core檔案是在有點傷不起,於是想到程式宕機時自動列印呼叫堆疊。簡單實用。
Linux下用C實現域名到IP的轉換(域名解析)
只需呼叫一個函式即可gethostbyname(),gethostbyname()返回對應於給定主機名的包含主機名字和地址資訊的hostent結構指標。結構的宣告與gethostaddr()中一致。下面是函式原型: Windows平臺下 #include <winsock2.h>
Linux下系統呼叫實現檔案操作
系統呼叫(系統呼叫是作業系統提供給使用者程式的一組“特殊”函式介面,使用者通過這組介面獲得作業系統提供的服務)中操作I/O的函式,都是針對檔案描述符的。 通過檔案描述符可以直接對相應檔案進行操作,如:open、close、write、read、ioctl #define STDIN_FIL
Linux下用C實現串列埠讀寫
http://hi.baidu.com/weiweisuo1986/item/b33200134ceaac6871d5e81d 之前要做一個和串列埠相關的專案,才認真研究了下串列埠,首先就是要實現串列埠和PC機的通訊。 串列埠的驅動一般不需要我們寫,都是很成熟的驅動
Linux下用C++實現通過程序名稱獲取程序ID
近期開發的系統功能涉及到程序之間的查詢、程序對程序的啟停操作。 在shell環境下,使用程序名稱查詢程序ID非常簡單,例如通過 ps -ef | grep "proc_name"來檢視名為“proc_name”程序, 也可以通過pidof "proc_name"來獲取程序
linux下用cjson實現對資料鍵值對的封裝儲存
首先需要下載封裝好的cjson包包括 cjson.h cjson.c 為方便大家我已上傳 下載地址如下 http://download.csdn.net/detail/wuheshi/8353075 程式設計時加入標頭檔案cjson.h 就可以呼叫cjson.c裡面的函
linux下用wvdial實現gprs撥號上網
1. 安裝wvdial sudo apt-get install wvdial 2. 在/etc/wvdial.conf中寫入wvdial的配置資訊: femacs /etc/wvdial.conf Init1 = ATZ Init2 = ATQ0 V1 E
Linux下用st_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
Fedora17下用samba實現windows和Linux跨平臺檔案系統訪問
第一步:在Fedora linux系統下載並安裝samba # yum -y install samba 第二步:編輯samba的配置檔案/etc/samba/smb.conf 1. 找到[homes],複製這6行 yy6p 2.修改
Linux下用root許可權新增使用者,並給使用者或使用者組指定目錄的讀寫許可權(比如:tomcat檔案的讀寫許可權,可以用於新使用者部署專案)
目的: 在linux環境中為了安全起見,不能讓所有專案都用root部署(防止root許可權過大,對重要檔案的誤操作),所以新加使用者或使用者組,對新使用者或使用者組授予部分檔案操作的許可權。 1.建立使用者newuser,並設定密碼(預設連帶建立newuser組) # useradd n
Linux下用ls和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)僅當沒有執行緒持有某個給定的讀寫鎖用於讀或用於寫,才能分配該
Linux下用c語言實現發送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