windows文件同步到linux


同步windows服務器軟件至linux服務器實現

1、  一般linux上默認安裝有rsync軟件

一.查看及安裝

查看是否安裝rsync

命令# rpm –qa | grep rsync



 
<!--[endif]-->

假如出現對應的rsync版本,則說明對應的linux上已有rsync

否則,需要手動下載安裝。具體的方式有

軟件安裝過於簡單,現在Linux各大發行版都提供這個軟件包,當然您也可以自己編譯安裝,在目前的情況下,我看沒太大的必要;

[root@linuxsir:beinan]$ sudo apt-get  install  rsync  注:在debianubuntu 等在線安裝方法;
[root@linuxsir:beinan]# slackpkg  install  rsync  
注:Slackware軟件包在線安裝;
[root@linuxsir:beinan]# yum install rsync   
注:FedoraRedhat等系統安裝方法;

其它Linux發行版,請用相應的軟件包管理方法來安裝;如果是源碼包,也就是用下面的辦法;

[root@linuxsir:/home/beinan]# tar xvf  sync-xxxx.tar.gz sync-xxx.tar.bz2
[root@linuxsir:/home/beinan]# cd  sync-xxx
[root@linuxsir:/home/beinan/sync-xxx]# ./
configure --prefix=/usr  ;make ;make install   注:在用源碼包編譯安裝之前,您得安裝gcc等編譯開具才行;

 修改rsync的配置文件

 

 

可以看到rysnc服務是關閉的(disable = yes),這里把它開啟,把disable的值改為no

 

三、rsync服務器的配置文rsyncd.conf

我們可以參照rsyncd.conf.html。具體步驟如下;

[root@linuxsir:~]#mkdir /etc/rsyncd  注:在/etc目錄下創建一個rsyncd的目錄,我們用來存放rsyncd.conf rsyncd.secrets文件;
[root@linuxsir:~]#touch /etc/rsyncd/rsyncd.conf 
注:創建rsyncd.conf ,這是rsync服務器的配置文件;
[root@linuxsir:~]#touch /etc/rsyncd/rsyncd.secrets 
注:創建rsyncd.secrets ,這是用戶密碼文件;
[root@linuxsir:~]#chmod 600 /etc/rsyncd/rsyncd.secrets 
注:為了密碼的安全性,我們把權限設為600必須
[root@linuxsir:~]#ls -lh /etc/rsyncd/rsyncd.secrets
-rw------- 1 root root 14 2007-07-15 10:21 /etc/rsyncd/rsyncd.secrets
[root@linuxsir:~]#touch /etc/rsyncd/rsyncd.motd

下一就是我們修改 rsyncd.conf rsyncd.secrets rsyncd.motd 文件的時候了;

rsyncd.conf rsync服務器主要配置文件,我們來個簡單的示例;比如我們要備份服務器上的 /home /opt ,在/home中,我想把beinansamba目錄排除在外;

# 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

uid = root  #這個用戶是系統用戶,當rsync客戶端連接上服務器后,會映射成這個用戶上傳或下載

use chroot = no

max connections = 4 #最大允許並法鏈接數

strict modes = yes

port = 873  #rsync服務對應的端口

 

[demo]                  ## 模塊名字,自己命名必須指定且唯一

path = /home/pigga/test  #需同步的文件夾

comment = This is test

auth users = scihoo #rsync的用戶名是客戶端使用的,連接成功后會映射到上面的uid用戶

uid = root  #這個用戶是系統用戶,當rsync客戶端連接上服務器后,會映射成這個用戶上傳或下載

gid = root  #組名效果同上

secrets file = /etc/rsyncd/rsyncd.secrets #密碼所在文件

read only = no #不是只讀模式這樣用戶就有上傳的權限了

list = yes      #用戶具有list目錄的權限,上傳之后的目錄可見,且列表展示

hosts allow = * #允許所有網段的地址連接至服務器,可以指定具體的ip/分割

 

注:關於 auth users 是必須在服務器上存在的真實的系統用戶,如果你想用多個用戶,那就以,號隔開;比如 auth users = beinan , linuxsir

密碼文件:/etc/rsyncd/rsyncd.secrets的內容格式;

用戶名:密碼   例:

Scihoo:scihoo

注:這里的密碼值得注意,為了安全,你不能把系統用戶的密碼寫在這里。比如你的系統用戶 linuxsir 密碼是 abcdefg ,為了安全,你可以讓rsync 中的linuxsir 222222 。這和samba的用戶認證的密碼原理是差不多的;

rsyncd.motd 文件;

它是定義rysnc 服務器信息的,也就是用戶登錄信息。比如讓用戶知道這個服務器是誰提供的等;類似ftp服務器登錄時,我們所看到的 linuxsir.org ftp ……。 當然這在全局定義變量時,並不是必須的,你可以用#號注掉,或刪除;我在這里寫了一個 rsyncd.motd的內容為:

+++++++++++++++++++++++++++
+ linuxsir.org  rsync  2002-2007 +
+++++++++++++++++++++++++++

四.啟動rsync 服務器及防火牆的設置;


4.1
啟動rsync服務器;

啟動rsync 服務器相當簡單,daemon 是讓rsync 以服務器模式運行;

[root@linuxsir:~]#/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf

注:如果你找不到rsync 命令,你應該知道rsync 是安裝在哪了。比如rsync 可執行命令可能安裝在了 /usr/local/rsync/bin/rsync目錄;也就是如下的命令;

[root@linuxsir:~]#/usr/local/rsync/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf




 
 
4.2 rsync
服務器和防火牆;

Linux 防火牆是用iptables,所以我們至少在服務器端要讓你所定義的rsync 服務器端口通過,客戶端上也應該讓通過。

[root@linuxsir:~]#iptables -A INPUT -p tcp -m state --state NEW  -m tcp --dport 873 -j ACCEPT
[root@linuxsir:~]#iptables -L 
查看一下防火牆是不是打開了 873端口;

我在這里通過圖形界面在防火牆上添加端口的方式。

查看是否開啟了對應端口 也可以使用netstat –an 然后在另外的機器使用telnet判斷是否可以通過防火牆。

另:查看系統進程。Ps –ef,查看是否開啟rsync

2、  window客戶端

windows機器上安裝cwRsyncServer客戶端,本地使用cwRsyncServer_4.0.6_Installer.zip。可在互聯網下載;

安裝完畢后,我們寫個批處理來實現下載和上傳的功能

上傳:window指定路徑的文件上傳至linux
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

@ECHO OFF
d:
cd "Program Files\cwRsyncServer\bin"

rsync -vzrtopg –progress --delete /cygdrive/d/websoft/ scihoo@192.168.1.43::demo --password-file=/cygdrive/d/rsyncd.secrets


其中/cygdrive/e/表示的是windowsE

注:該部分d/websoft/加上/為不包含websoft的上傳,去掉/為帶有websoft文件夾的上傳
d:/rsyncd.secrets
的密碼文件,里面只包含密碼,不包含用戶


下載:即從linux服務器指定路徑下載到window客戶端
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

@ECHO OFF
d:
cd "Program Files\cwRsyncServer\bin"

rsync -vrtopg --progress --delete scihoo@192.168.1.43::demo /cygdrive/d/websoft/

 

3、密碼每次都需要手動輸入的解決方案

這算是個老問題了,每次在windows主機上通過cwrsync向服務端同步數據的時候都會遇到,這次總結記錄下吧。錯誤代碼為:

password file must be owned by root when running as root

linux上設置rsync的時候,需要將passwordfile設置為600權限。所以在windows上我們也可以用其自帶的chmod.exe 執行,其cwrsync客戶端默認安裝的位置是C:\Program Files\cwRsync\bin ,具體做法如下:

C:\Program Files\cwRsync\bin  600/cygdrive/c/etc/password.txt

執行完以后,如果還有錯誤提示,可以使用chown.exe命令將其文件的屬主做下更改。具體操作如下:

服務端:

chmod.exe -c 600/cygdrive/c/etc/password.txt
chown.exe SvcCWRSYNC/cygdrive/c/etc/password.txt

SvcCWRSYNCwindows上的cwrsync-server安裝時默認新建的一個用戶。

客戶端:

chmod.exe -c 600/cygdrive/c/etc/password.txt
chown.exe administrator /cygdrive/c/etc/password.txt

默認客戶端上沒有chown.exe這個命令,直接從cwrsync-server的安裝路徑里拷貝一個過來就可以用了。windows的默認用戶一般都是administrator,如果你不是以administrator登錄的,請將上面命令中的administrator改成你當前使用的用戶名。

 

 

問題:

可能會遇到的問題:

問題一:

@ERROR: chroot failed rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]

原因:

服務器端的目錄不存在或無權限。

創建目錄並修正權限可解決問題。

 

嘗試通過運行  setsebool -P rsync_disable_trans on

 問題二:

@ERROR: auth failed on module tee rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]

原因:服務器端該模塊(tee)需要驗證用戶名密碼,但客戶端沒有提供正確的用戶名密碼,認證失敗

問題三:

@ERROR: Unknown module tee_nonexists rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]

 

原因:

服務器不存在指定模塊。

提供正確的模塊名或在服務器端修改成你要的模塊以解決問題。

 

問題四:

rsync: link_stat "." (in *** ) failed: Permission denied (13)

 

*** 是指你同步的某一個文件夾模塊的名字,一般在服務端進行同步時會碰到,這個問題是因為一些LinuxSELinux默認開啟了Enforce模式,將其關閉即可 直接執行getenforce 0 , 問題即可解決  

 

問題五:

rsync: failed to connect to 218.107.243.2: No route to host (113)

rsync error: error in socket IO (code 10) at clientserver.c(104) [receiver=2.6.9]

原因:

對方沒開機、防火牆阻擋、通過的網絡上有防火牆阻擋,都有可能。關閉防火牆,其實就是把tcp udp873端口打開。

 

問題六:

rsync error: error starting client-server protocol (code 5) at main.c(1524) [Receiver=3.0.7]

原因:

/etc/rsyncd.conf配置文件內容有錯誤。請正確核對配置文件。

 

問題七:

rsync: chown "" failed: Invalid argument (22)

原因:

權限無法復制。去掉同步權限的參數即可。(這種情況多見於LinuxWindows的時候)

 

問題八:

password file must not be other-accessible

continuing without password file

Password:

原因:

這是因為rsyncd.pwd rsyncd.secrets的權限不對,應該設置為600。如:chmod 600 rsyncd.pwd

 

 

 

編外:修改rsync服務端的端口

1vi /etc/xinetd.d/rsync

service rsync

{

disable = no

socket_type     = stream

wait            = no

user            = root

server          = /usr/bin/rsync

server_args     = --daemon

port            = 9999 #加上這行

 

log_on_failure += USERID

}

2vi /etc/services

rsync           9999/tcp                                # rsync 增加這行

rsync           9999/udp                                # rsync 增加這行

#rsync          873/tcp                         # rsync 注釋這行

#rsync          873/udp                         # rsync 注釋這行

3、測試

rsync -Rrav testfile $DIP::${MAIN} –port 9999

ubuntu

vi /etc/default/rsync

RSYNC_OPTS='--port=80' #修改這行

啟動rsync

 

/etc/init.d/rsync start

  • 2adc9b50-3c80-3a23-99b5-0992c5de6f8b-thumb.png
  • 大小: 2 KB
  • 3aee8036-4c8c-356d-9fe1-b2e050be9b45-thumb.png
  • 大小: 8.5 KB
  • bb0e19ad-52bd-3e79-b9d4-b02d76638f6e-thumb.png
  • 大小: 53.5 KB


免責聲明!

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



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