2015-11-07 35 views
-4

我想知道是否有將遠程位置(大約100個遠程站點)的文件複製到本地系統(服務器具有高規格硬件)的推薦方法。牢記以下:將數據從100個位置同時複製到本地系統

  1. 應用程序應該執行數據在同一時間對那些遠程地點複製,它不應該被一個是批量複製一個。

  2. 遠程位置:「\ IP_ADDRESS \ C $ \文件夾\

  3. 當地旅遊目的地系統: 「E:\ DATA \」

如何做到這一點使用批處理文件,電源外殼或C#/ VB.NET?

如果我創建了一個100批文件並使用一個工具,可以調用C#或VB.NET這些批處理文件運行呢?它會不會起作用?

+0

你不能在同一時間從100個位置執行復制,直到你的硬件能夠做到這一點。 –

+0

服務器有一個高規格&肯定可以做到這一點...但這裏是一個程序的問題....就像如果我創建了100個批處理文件,並在某些時候運行它們通過一個vb.net工具,談判到這些批次文件...它會有幫助嗎? – Omran

+0

你可以很容易地嘗試一個cmd腳本(.bat文件),該腳本在100個命令上啓動了'START'。作業調度程序可能會做你想做的事。 https://sourceforge.net/projects/jobscheduler/ – lit

回答

0

你可以開始一百年工作要做:

# Create a scriptblock that does what you need 
$CopyCode = { 
    # accept a computer name parameter 
    param($ComputerName) 
    try{ 
     $FilesCopied = Copy-Item -Path "\\$ComputerName\c$\folder\*" -Destination "E:\Data" -PassThru 
    } catch { 
     # error logging in here 
    } 
    # log $FilesCopied 
} 

# Gather remote computer names or IPs in an array, you could do this from AD or from a file 
$RemoteComputers = "10.0.0.1","10.0.0.2","10.0.0.3","10.0.0.4" 

# foreach remote machine, start a copy job 
$Jobs = foreach($Computer in $RemoteComputers){ 
    Start-Job -ScriptBlock $CopyCode -ArgumentList $Computer 
} 

# wait for all jobs to finish 
Wait-Job -Job $Jobs 
+0

這將啓動我的100個工作在同一時間或一個接一個,當每個工作被執行,然後將繼續下一個工作? – Omran

+0

它會依次啓動100個作業(新的後臺進程),但不會在開始下一個作業之前等待每個作業,所以根據作業需要多長時間,最終同時運行 –

+0

偉大:D這是我實際上需要....作爲後臺進程同時運行這100個工作,我會嘗試它並恢復爲回答:) – Omran

0

這裏可能有些東西可以使用。 copy100.txt文件是所有主機/ IP地址和要複製的文件名的列表。

C:\Users\pwatson\t\copy100>type copy100.txt 
localhost,Users\pwatson\t\bt\file1.txt 
localhost,Users\pwatson\t\bt\file2.txt 
localhost,Users\pwatson\t\bt\file3.txt 

該腳本將每個文件被複制的腳本,寫一個腳本來START他們。

C:\Users\pwatson\t\copy100>type copy100.bat 
@ECHO OFF 
SETLOCAL ENABLEDELAYEDEXPANSION 

SET /A BCOUNT=0 
SET BASE_FILENAME=%TEMP%\copy100_%RANDOM% 

SET DOIT_FILENAME=%BASE_FILENAME%_doit.bat 
IF EXIST "%DOIT_FILENAME%" (DEL "%DOIT_FILENAME%") 

SET TARGET_DIR=. 

ECHO>>"%DOIT_FILENAME%" @ECHO OFF 
ECHO>>"%DOIT_FILENAME%" (

FOR /F "usebackq tokens=1,2 delims=," %%h IN (`TYPE copy100.txt`) DO (
    SET BATNAME=%BASE_FILENAME%_!BCOUNT!.bat 
    IF EXIST "!BATNAME!" (DEL "!BATNAME!") 

    ECHO>>"!BATNAME!" @ECHO OFF 
    ECHO>>"!BATNAME!" COPY "\\%%h\C$\%%i" "%TARGET_DIR%" 
    ECHO>>"!BATNAME!" EXIT 

    ECHO>>"%DOIT_FILENAME%" START "Copy from %%h" /MIN "!BATNAME!" 

    SET /A BCOUNT=!BCOUNT!+1 
) 

ECHO>>"%DOIT_FILENAME%") ^| SET /P "=" 
ECHO>>"%DOIT_FILENAME%" EXIT 

(
    START "copy100 doit.bat" /MIN "%DOIT_FILENAME%" 
) | SET /P "=" 

IF EXIST "%DOIT_FILENAME%" (DEL "%DOIT_FILENAME%") 
IF EXIST "%BASE_FILENAME%*" (DEL "%BASE_FILENAME%*") 
ECHO /B 
相關問題