我有 TS-469 一台,欲使用該機型中的 rsync 功能,利用 Windows 端軟體 DeltaCopy ,欲將PC 上的資料 rsync 備份至 NAS 上,翻遍原廠所有的說明資料,但未說明如何詳細設定,一直無法順利連接,請教有沒有人能幫幫忙,正確設定步驟為何?
-----------------------------
以下是我的設定步驟 (以下都在區域網路中施做,檢查過防火牆問題,利用 telnet 檢查確認 873埠有通)
1. [權限管理]--[共用資料夾]--[新增共用資料夾]--名稱[Backup](不隱藏,不鎖住檔案,自動指定路徑)--設定存取權限(無限制,未登入使用者禁止存取)
2. [應用服務]--[備份伺服器]--[RSYNC伺服器](通訊埠873, 允許遠端主機備份至本機打勾,允許遠端rsync箱榮伺服器主機備份至本機)
3. 下載安裝[DeltaCopy]
4. 執行[DeltaCopy Client] --[Add New Profile] -- [Profile Name: TEST、IP:19.168.5.10],點選 Virtual Directory Name 無法取得目錄,Test Connection 也無法連接
-----------------------
我還另外有一台 Synology 的產品,該廠商的產品僅需將Rsync 功能開啟套用後,機器自動會開啟所有的相對應目錄、權限、服務,DeltaCopy Client一連就連上的,進階使用者還允許使用者自行修改 rsyncd.conf 設定檔,可是 QNAP 的品,搞了整整兩天怎麼試都試不出來。
madduxs wrote:
我有 TS-469 ...(恕刪)
我是參考pctine兄的文章完成設定!!
目前在QNAP TS-212上運作沒問題。
[分享] NAS 應用 - Windows 下的 rsync front-end (DeltaCopy)
DeltaCopy 設定畫面的 Test Connection 或 取得分享目錄的下拉選單及旁邊的按鈕
DeltaCopy 會整個當掉,只要直接設定,但不要做[試通]的動作就可以,直接啟用後就可以使用。
而另一家 的產品 Synology 可以試通,及設定過程取得遠端 NAS 的共用目錄,沒問題,可能 QNAP 產品阻擋了某些的通聯
我不是在日本、就是在前往日本的路上,我是日本旅遊中毒者
其怪的是,Add Profile,沒有帳號密碼輸入的地方。
找了一下,原來 DeltaCopy 有提供 source code : http://www.aboutmyip.com/files/DeltaCopySrc.zip
追了裡面的 "Test Connection" 按鈕,發現連線測試 Rsync Server 時,沒有使用帳密,應該是這個原因導致 DeltaCopy 卡住。
# Test Connection 按鈕呼叫 rsync.FetchModules()
----------------------------------------------------------------
void __fastcall TfrmAddProfile::btnTestClick(TObject *Sender)
{
if(txtServer->Text.Trim().Length() == 0){
ShowMessage("Please provide a server name");
return;
}
TRsync rsync;
Screen->Cursor = crHourGlass;
TStringList* list = new TStringList();
int total = rsync.FetchModules(txtServer->Text, list);
Screen->Cursor = crDefault;
if(total == -1){
ShowMessage("Unable to establish connection. " + rsync.GetLastError());
}else if(total > 0){
ShowMessage("Connection successfull");
}
delete list;
}
----------------------------------------------------------------
# rsync.FetchModules()
裡面沒有使用帳密連線 Rsync server
----------------------------------------------------------------
int TRsync::FetchModules(AnsiString server, TStrings* results){
TConsoleRunner cRunner;
SetCurrentDirectory(ExtractFilePath(Application->ExeName).c_str());
AnsiString cmdLine = "rsync.exe " + server + "::";
vector<string> list;
int totalModules = 0;
if(cRunner.Run(cmdLine, &list, NULL)){
//Although it is quite possible that the list is already broken into
//lines, that is not always the case. Therefore, I have to break this
//into lines.
TStringList* lines = new TStringList();
AnsiString oneBigText;
for(unsigned int i = 0; i < list.size(); i++){
oneBigText += list.at(i).data();
}
lines->Text = oneBigText;
for(int i = 0; i < lines->Count; i++){
AnsiString oneLine = lines->Strings[i];
if(i == 0 && IsError(oneLine)){
return -1;
}
char* mName = strtok(oneLine.c_str(), " ");
results->Add(mName);
totalModules++;
}
delete lines;
}
return totalModules;
}
----------------------------------------------------------------
內文搜尋

X