最近有這樣的一個需求,就是我ERP備份的數據庫,我想自動同步到我的TrueNAS服務器上。但我的ERP服務器是Windows。
怎麼能用rsync功能呢?
rsync估計大家都不會陌生。他是一款Linux非常好的同步軟件。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Rsync是一款不錯的文件免費同步軟件,可以鏡像保存整個目錄樹和文件系統,同時保持原來文件的權限、時間、軟硬鏈接。第一次同步時 rsync 會複製全部內容,下次只傳輸修改過的文件部分。傳輸數據過程中可以實行壓縮及解壓縮操作,減少帶寬流量。支持scp、ssh及直接socket方式連接,支持匿名傳輸。支持Linux,Window平臺。寫本文的時候,window版最新版爲4.1.0版
Linux版下載:http://rsync.samba.org/download.html
Windows版下載:
客戶端:cwRsync_4.1.0_Installer.zip 服務器文件同步軟件客戶端
服務端:cwRsyncServer_4.1.0_Installer.zip服務器文件同步軟件 服務器端
現在官方開始了收費版本,建議從腳本之家下載免費版本
- cwRsync win 服務器同步軟件 cwRsync_2.1.5_Installer.zip
- 服務器數據同步 服務器端 cwRsync_Server_2.1.5_Installer.zip
- 服務器文件同步 cwRsync_3.1.0_Installer.zip
- 服務器文件同步軟件 服務器端 cwRsyncServer_3.1.0_Installer.zip
- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
然後我們這裏呢先講一下rsync傳輸中的一些參數。
大家可以根據需要來酌情添加參數。
參數說明
-a 參數,相當於-rlptgoD,
-r 是遞歸
-l 是鏈接文件,意思是拷貝鏈接文件;
-p 表示保持文件原有權限;
-t 保持文件原有時間;
-g 保持文件原有用戶組;
-o 保持文件原有屬主;
-D 相當於塊設備文件;
-z 傳輸時壓縮;
-P 傳輸進度;
-v verbose,詳細模式輸出;
-u是隻同步已經更新的文件,避免沒有更新的文件被重複更新一次,不過要注意兩者機器時鐘的同步;
--progress 顯示備份過程;
--delete 刪除那些DST中SRC沒有的文件,用作同步文件用;
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
說了一大堆,現在開始言歸正傳了。
我首先是在我的Windows上面安裝了rsync服務器端。
安裝完成後的效果就是這樣。
我們主要是要修改rsyncd.conf的配置文件。
我的配置如下:
uid=0 gid=0 use chroot=false strict modes=false hosts allow=* max connections=5 lock file=rsyncd.log port=873 # Module definitions [backup] path=/cygdrive/D/ERPdatabak auth users=Administrator secrets file=/cygdrive/d/Setting/Rsync/rsync_db.ps read only=no list=no transfer logging=yes
這裏面有些需要說明。[backup] 代表同步模塊。你可以添加好幾個模塊,同時同步都可以。
然後有一點要注意,因爲我的是Windows,所以在Windows路徑的時候要注意,比如d:\setting .這是Windows寫法,在這個配置文件應該寫成,/cygdrive/d/setting/ 要這樣寫。好像是POSIX風格來寫。
然後就是你要備份的文件夾,需要給他相對應的權限。我都是用的administrator的權限。
然後就去把他的服務開起來,
服務開啓之後,然後登入賬戶,我也改成了administrator 超級管理員了。這個你們可以隨意發揮。
最後自測一下rsync服務器是否聯通。
顯示30.0 .就代表服務正常。
然後我們要根據我們剛剛rsyncd.conf的配置,來配置訪問的密碼文件和權限。
密碼我們也配置好了。
然後在Centos上也創建一個密碼文件,並賦予600權限。
可以看到已經是600權限了。如果不是,就是chmod 600 設置一下。
把我Centos上的/tmp/臨時目錄推送到我的Windows看下。
成功了,過來了。
rsync -avz /tmp/ [email protected]::backup --password-file=/root/backup_passwd
目錄放在前面就是推送過去,放在後面,則是把服務器上的目錄拉取過來。
我們的目標是在truenas上面實現,把Windows的數據庫全部推送到truenas上面來。
這個是我現有NAS的版本。
同樣的在NAS的shell上面要建立一個密碼文件。
600權限。
測試是成功的狀態。
這次我們是把服務器端的數據拉取過來。
rsync -avz --progress --port=873 --password-file=/root/backup_passwd [email protected]::backup /mnt/DATA/DATABackup/rsync_bak
rsync -apvz --progress --delete --port=873 --password-file=/root/backup_passwd [email protected]::backup /mnt/DATA/DATABackup/rsync_bak #這條命令保留了文件的屬性,且把源目錄沒有的文件,在目標文件上刪除了。大家各自根據自己所需吧
那很成功了。
我們直接添加一個計劃任務就可以了。
我設置的是每天晚上12點開始同步。
這樣我們的需求就達到了。
數據已經全部過來了。
還是很成功的。
實驗也比較簡單,耗時一天就完成了。
我也是參考了網絡上面的兩個案例。
鏈接我發出來供大家參考。
https://wenku.baidu.com/view/36bdb2e3b84cf7ec4afe04a1b0717fd5360cb2e7?bfetype=new
https://www.jb51.net/article/59034.htm
https://blog.csdn.net/sinat_27747695/article/details/114098005
https://blog.csdn.net/cyb0408/article/details/113093321
看完這些,應該就會有一些思路了。
我剛開始不成功,以爲是用戶權限和對NAS界面的不熟悉。
但是後面自己都慢慢克服了。
每個人的需求不一樣,所以大家可能要根據自己的實際情況來調試。