1. 程式人生 > >使用rsync +cwrsync實現windows和linux的檔案同步

使用rsync +cwrsync實現windows和linux的檔案同步

1.rsync 簡介

Rsync(remote synchronize)是一個遠端資料同步工具,可通過LAN/WAN快速同步多臺主機間的檔案,也可以使用 Rsync 同步本地硬碟中的不同目錄。

  Rsync 是用於取代rcp的一個工具,Rsync使用所謂的 “Rsync 演算法” 來使本地和遠端兩個主機之間的檔案達到同步,這個演算法只傳送兩個檔案的不同部分,而不是每次都整份傳送,因此速度相當快。您可以參考 How Rsync Works A Practical Overview 進一步瞭解 rsync 的運作機制。

  Rsync支援大多數的類Unix系統,無論是Linux、Solaris還是BSD上都經過了良好的測試。此外,它在windows平臺下也有相應的版本,比較知名的有cwRsync和Sync2NAS。

  Rsync 的初始作者是 Andrew Tridgell 和 Paul Mackerras,它當前由 http://rsync.samba.org維護。

  Rsync的基本特點如下:

  1. 可以映象儲存整個目錄樹和檔案系統;

  2. 可以很容易做到保持原來檔案的許可權、時間、軟硬連結等;

  3. 無須特殊許可權即可安裝;

  4. 優化的流程,檔案傳輸效率高;

  5. 可以使用rcp、ssh等方式來傳輸檔案,當然也可以通過直接的socket連線;

  6. 支援匿名傳輸,以方便進行網站映象。

  在使用 rsync 進行遠端同步時,可以使用兩種方式:遠端 Shell 方式(建議使用 ssh,使用者驗證由 ssh 負責)和 C/S 方式(即客戶連線遠端 rsync 伺服器,使用者驗證由 rsync 伺服器負責)。

  無論本地同步目錄還是遠端同步資料,首次執行時將會把全部檔案拷貝一次,以後再執行時將只拷貝有變化的檔案(對於新檔案)或檔案的變化部分(對於原有檔案)。

  rsync 在首次複製時沒有速度優勢,速度不如 tar,因此當資料量很大時您可以考慮先使用 tar 進行首次複製,然後再使用 rsync 進行資料同步。
  

2.伺服器端安裝rsync服務

可以通過yum安裝

yum install rsync

也可以通過編譯安裝

注:在用原始碼包編譯安裝之前,您得安裝gcc等編譯開具才行

tar xvf  rsync-3.0.9.tar.gz
cd rsync-3.0.9
./configure --prefix=/usr
make && make install

3.rsync伺服器的配置檔案rsyncd.conf

rsync的主要有以下三個配置檔案:

  • rsyncd.conf(主配置檔案)
  • rsyncd.passwd(密碼檔案)
  • rsyncd.motd(rysnc伺服器資訊)

伺服器配置檔案(/etc/rsyncd/rsyncd.conf),該檔案預設不存在,請建立:

在/etc目錄下建立一個rsyncd的目錄,我們用來存放rsyncd.conf 、rsyncd.passwd、rsyncd.motd檔案

mkdir rsyncd

建立檔案

touch rsyncd.conf
touch rsyncd.passwd
touch rsyncd.motd
chmod 600 rsyncd.pwsswd        #為了密碼的安全性,我們把許可權設為600
3.1 配置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 
lock file =/var/run/rsyncd.lock

#日誌檔案
log file =/var/log/rsyncd.log
log format = %t %a %m %f %b
syslog facility = local3

#指定執行埠,預設是873
port = 8877     

#指定伺服器IP地址
address = 192.168.56.102

#伺服器端傳輸檔案時,要發哪個使用者和使用者組來執行,預設是nobody
uid = root
gid = root

#如果"use chroot"指定為yes,那麼rsync在傳輸檔案以前首先chroot到path引數所指定的目錄下。這樣做的原因是實現額外的安全防護,但是缺點是需要以root許可權,並且不能備份指向外部的符號連線所指向的目錄檔案。預設情況下chroot值為yes
use chroot = no

#客戶端最多連線數
max connections = 5
motd file = /etc/rsyncd/rsyncd.motd
timeout = 300

#同步模組
[test_data] 
#指定檔案目錄所在路徑
path =  /home/test

#list 意思是把rsync 伺服器上提供同步資料的目錄在伺服器上模組是否顯示列出來。預設是yes 。如果你不想列出來,就no ;如果是no是比較安全的,至少別人不知道你的伺服器上提供了哪些目錄。你自己知道就行了
list=no

#指定在 rsync 伺服器上執行 delete 操作時是否忽略 I/O 錯誤。一般來說 rsync 在出現 I/O 錯誤時將將跳過 –delete 操作,以防止因為暫時的資源不足或其它 I/O 錯誤導致的嚴重問題。
ignore errors

#如果為yes,表示只讀本地檔案就無法同步到伺服器
read only = no

#允許連線的ip,在演示中使用的雲伺服器就直接寫*,表示無限制 如果要規定ip或者ip段(10.1.4.0/255.255.255.0)需要進行其他配置
hosts allow=10.1.4.0/255.255.255.0
#hosts deny=*

#auth users 是必須在伺服器上存在的真實的系統使用者,如果你想用多個使用者,那就以,號隔開
auth users = root

#密碼存在rsyncd.passwd檔案裡
secrets file = /etc/rsyncd/rsyncd.passwd
3.2 配置rsyncd.passwd檔案

rsyncd.passwd的內容格式使用者名稱:密碼

root:123456

**注意:
將rsyncd.passwd這個密碼檔案的檔案屬性設為root擁有, 且許可權要設為600, 否則無法備份成功! 出於安全目的,檔案的屬性必需是隻有屬主可讀**

3.3 配置rsyncd.motd 檔案

rsyncd.motd 檔案類似ftp伺服器登入時,我們所看到的提示資訊……,當然這在全域性定義變數時,並不是必須的,你可以用#號注掉,或刪除

++++++++++++++++++++++++++++++++++++++++++++++
  歡迎使用
++++++++++++++++++++++++++++++++++++++++++++++

4. 啟動rsync伺服器

防火牆配置

iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 8877 -j ACCEPT

啟動rsync服務

rsync --daemon --config=/etc/rsyncd/rsyncd.conf

在rsync伺服器上檢視提供了哪些可用的資料來源。

rsync --list-only [email protected]::test_data

5.安裝cwRsync客戶端

直接解壓,到bin檔案目錄下執行

rsync --port=8877 -vzrtopg --progress --delete [email protected].168.56.102::test_data /cygdrive/d/data
  • –port=8877 #埠
  • root #執行資料同步的使用者
  • 192.168.56.102 #伺服器地址
  • test_data #模組名稱
  • –delete #從cwRsync客戶端D:\data目錄中刪除與Rsync服務端/home/test目錄中不相同的資料,即保證兩邊的資料完全一致
  • /cygdrive/d/data 表示本地的同步資料夾/d/data 為同步資料夾

6. 定時同步檔案

在cwRsync客戶端的任務計劃中新增批處理指令碼檔案,每天凌晨02:30鍾自動同步Rsync服務端/data/share目錄中的資料到D:\data目錄:
cwrsync的bin目錄新建passwd.txt輸入密碼然後儲存
繼續在bin目錄新建samba.bat輸入

@echo off
echo.
echo 開始同步資料,請稍等...
echo.
cd C:\Program Files\cwRsync\bin
rsync --port=8877 -vzrtopg --progress --delete [email protected]192.168.56.102::test_data /cygdrive/d/data < passwd.txt
echo.
echo 資料同步完成
echo.

新增批處理指令碼到Windows任務計劃
開始-設定-控制面板-任務計劃
開啟新增任務計劃,下一步
瀏覽,選擇開啟C:\Program Files\cwRsync\bin目錄裡面的samba.bat
執行這個任務,選擇每天,下一步
起始時間:02:30
執行這個任務:每天,下一步
輸入Windows系統管理員的登入密碼,下一步
完成!
CentOS Rsync服務端與Windows cwRsync客戶端實現資料同步完成!

參考地址:

相關推薦

一、rsync +cwrsync實現windowslinux檔案同步

Rsync(remote synchronize)是一個遠端資料同步工具,可通過LAN/WAN快速同步多臺主機間的檔案,也可以使用 Rsync 同步本地硬碟中的不同目錄。 一、Linux伺服器端安裝rsync服務 1、可以通過yum安裝: yum -y install rsync

使用rsync +cwrsync實現windowslinux檔案同步

1.rsync 簡介 Rsync(remote synchronize)是一個遠端資料同步工具,可通過LAN/WAN快速同步多臺主機間的檔案,也可以使用 Rsync 同步本地硬碟中的不同目錄。   Rsync 是用於取代rcp的一個工具,Rsync使用所謂

secureCRT 實現windowslinux檔案互傳

背景:   有一臺主機,安裝了windows10,然後伺服器安裝了ubuntu。在windows10上安裝SecureCRT來ssh連線ubuntu虛擬機器。一般在windows上面下載軟體要上傳到伺服器上使用,現在考慮使用sftp協議來直接傳輸。 方案:   使用Se

用putty 連線Linux以及實現 windowslinux檔案互傳

ssh原理 簡單說,SSH是一種網路協議,用於計算機之間的加密登入。 ssh原理參考文章 ssh客戶端工具 putty PuTTY小巧方便。但若需要向網路中的Linux系統上傳檔案,則可以使用PuTTY官方提供的PSCP工具來實現上傳。PSCP基於ss

Python實現WindowsLinux之間互相傳輸檔案(資料夾)的方法

   專案中需要從Windows系統傳輸ISO檔案到Linux測試系統,然後再Linux測試系統裡安裝這個ISO檔案。所以就需要實現如何把檔案從Windows系統傳輸到Linux系統中。 在專案中使用了pscp.exe這個工具,只要按照pscp.exe的使用說明操作即可。只要進入pscp.exe的安裝位置

輕鬆實現windowslinux間的檔案互傳,簡單粗暴!

本人是個linux新手,將學習linux過程中遇到的問題,解決方法及收穫分享出來和大家一起討論交流,一起進步。如有不正確的地方,歡迎大家指正。 步驟: 1.      下載安裝FileZilla 客戶端(FileZill

使用PuTTy實現windowslinux之間檔案上傳下載

windows上下載完整的PuTTy安裝包而不僅僅是putty.exe這一個檔案。 PuTTy包中包含多個exe檔案,有putty和psftp等exe檔案。 putty只用於登入linux伺服器,在伺服器上進行相關操作,沒有與自己電腦連線,不能與進行上傳下載。 psftp用

Fedora17下用samba實現windowsLinux跨平臺檔案系統訪問

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

pscp實現windowslinux之間互傳檔案

PSCP (PuTTY Secure Copy client)是PuTTY 提供的檔案傳輸工具 ,通過 SSH 連線,在兩臺機器之間安全的傳輸檔案,可以用於任何 SSH(包括 SSH v1、SSH v2) 伺服器。 只需將putty的pscp.exe放到C:\Windows

實現windowslinux伺服器之間檔案共享,工具就是Samba軟體中的一種,samba-client。

在嵌入式學習的過程中,避免不了操作linux。在windows下安裝虛擬機器執行linux作業系統,在windows下的開發工具編寫好的軟體放到linxu上進行編譯,然後又需要從linux'上取出來編

使用cwRsync實現windows下文件定時同步

指定 停止 手動 如果 直接 pos 文件 rsync clu 1.參考文獻: 使用cwRsync實現windows下文件定時同步(備份) 文件同步工具CwRsync的使用方法及常用命令詳解 2.背景: 當前的SCADA架構中,有1臺Server,5臺FE,還有1臺Clie

SUSE11配置samba伺服器(實現Windows訪問Linux檔案系統)

1、配置suse11zypper源進入存放repo的檔案目錄cd /etc/zypp/repos.d建立本地目錄mkdir or賦權chmod 777 or掛載介質mount -o loop suse11_64.iso /or 檢視zypper源zypper lr刪除源zypper rr 檢視所有安裝包zy

windowsLinux檔案路徑分隔符的不同及獲取

前言 在java開發的時候,往往是在windows環境下開發,遇到檔案路徑的問題是會用到“/”和”\”,對於這兩種斜槓的選擇略作解釋。 具體程式碼 反斜槓”\”是在windows系統下檔案路徑用到的斜槓,這個反斜槓在Linux系統下是不能用的。 斜槓

windowslinux檔案路徑問題

1、windows平臺:用\或\\linux平臺:用/2、Java程式碼中路徑分隔符用:File.separator3、windows平臺也相容/,也可以統一替換成/filePath = filePath.replace("\\", "/");4、路徑錯誤會報錯,No Suc

c++實現windowslinux之間跨平臺的方式

作業系統判定: Windows: WIN32 Linux: linux Solaris: __sun 編譯器判定: VC: _MSC_VER GCC/G++: __GNUC__ SunCC: __SUNPRO_C和__SUNPRO_CC

WindowsLinux檔案系統的區別

    Windows,分盤,每個驅動器有自己的根目錄,形成的是多個樹並列的結構。    Linux,只有一個根目錄 / ,所有東西都是從這開始         /boot:放置linux啟動時用到的一些檔案,如核心檔案等         /bin,/user/bin:一般放

linux中rz, sz命令的安裝與使用------實現Windowslinux檔案的快捷互傳

        大家經常在Windows上用SecureCRT來連線linux伺服器, 經常涉及到Windows與linux檔案的互傳。 當然, 我們可以用各種傳輸協議命令來做, 比如ftp, sftp, scp等,有經驗的朋友知道, 用samba那簡直是完美啊(利用sam

linuxrsync+inotify實現兩臺伺服器檔案實時同步

假設兩個伺服器: 192.168.0.1 源伺服器  有目錄 /opt/test/ 192.168.0.2 目標伺服器  有目錄 /opt/bak/test/ 實現的目的就是保持這兩個伺服器某個檔案目錄保持實時同步 實現方式: 通過rsync+inotify-too

rsync實現windowswindows之間的數據同步

同步 ror test uid ima 結構 nor 數據 pan 一:環境   1、同步對象:測試數據   2、服務端:Windows Server 2008 R2   3、客戶端:Windows7 旗艦版64位   4、服務端rsync版本:cwRsync

利用python同步windowslinux文件

linux then image byte exec 編輯 return col ash 寫python腳本的初衷,每次在windows編輯完文件後,想同步到linux上去,只能夠登錄服務器,然後再利用網絡copy,重復性很大,就想著能不能寫一個小腳本幫我同步 邏輯:比對本