2016-12-08 133 views
2

我有一個文件夾(ftp_region),其內容與我的FTP中的數據類似。如何使用WinSCP下載較新的文件並將它們保存到兩個本地文件夾?

如何從我的FTP下載更新文件並將其保存到兩個本地文件夾(ftp_region和其他文件夾)

現在,我用這個:

open "my ftp address" 
get -neweronly "..." "..." 
+0

「其他」文件夾,它是否包含與'ftp_region'相同的文件?或者,您是否需要將下載的文件複製到其他文件夾,無論文件已經存在? –

+0

另一個文件夾是空的,我希望從myftp複製到downoal(只有newerfile)。所以當我從ftp下載的時候,文件被保存到兩個目錄 – bawel

+0

實現起來會比較複雜。你爲什麼要這樣?也許有一個更簡單的解決方案,不需要下載到兩個文件夾。 –

回答

2

你不能用一個簡單的做到這一點WinSCP腳本。

您最好使用WinSCP .NET assembly。它允許你處理下載的文件。

一個例子代碼在PowerShell

# Load WinSCP .NET assembly 
Add-Type -Path "WinSCPnet.dll" 

# Setup session options 
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{ 
    Protocol = [WinSCP.Protocol]::Ftp 
    HostName = "ftp.example.com" 
    UserName = "user" 
    Password = "password" 
} 

Write-Host "Connecting..." 
$session = New-Object WinSCP.Session 
# $session.SessionLogPath = "C:\path\to\log\sync.log" 
$session.Open($sessionOptions) 

$remotePath = "/remote/path" 
$localPathPrimary = "C:\backup\primary" 
$localPathSecondary = "C:\backup\secondary" 

Write-Host "Synchronizing..." 
$result = 
    $session.SynchronizeDirectories(
     [WinSCP.SynchronizationMode]::Local, $localPathPrimary, $remotePath, $False) 
$result.Check() 

Write-Host "Copying downloaded files to secondary backup..." 
foreach ($download in $result.Downloads) 
{ 
    $filename = (Split-Path -Leaf $download.Destination) 
    $localFilePathSecondary = (Join-Path $localPathSecondary $filename) 
    Copy-Item $download.Destination $localFilePathSecondary 
    Write-Host "File $filename archived to both folders." 
} 

該代碼是基於一個官方示例Deleting remote files after successful remote to local synchronization

相關問題