2016-01-20 93 views
1

我正在使用以下命令從SFTP位置傳輸到本地文件夾。這將所有文件從SFTP位置傳輸到本地文件夾。使用PSCP從比昨天早的SFTP傳輸多個文件

如何傳輸僅用於例如文件的文件比昨天還早?

 
cmd /c c:/putty/pscp -q -batch -pw password -i C:/putty/key_pk.ppk -r [email protected]:/home/user/Folder1/* C:/LocalFolder1/SFTP/ 

謝謝。

回答

0

pscp不能這樣做。

您所能做的就是使用-ls開關列出所有文件,解析輸出以找到舊文件,併爲識別的文件生成下載腳本。


或者使用一個SCP/SFTP客戶端,能夠通過他們的時間戳選擇文件。

例如與WinSCP SFTP/SCP client,您可以使用下面的批處理文件(.bat)下載文件日期早於一天:

winscp.com /log=c:\path\to\winscp.log /command^
    "open sftp://root:[email protected]/ -privatekey=""C:\putty\key_pk.ppk"" -hostkey=""ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"""^
    "get -filemask=<1D /home/user/Folder1/* C:\LocalFolder1\SFTP\"^
    "exit" 

參考文獻:

(我是WinSCP的作者)

+0

謝謝,這有幫助。但是,我試圖在今天修改一個文件,如果我按照以下方式進行修改,它將獲取所有文件,而不僅僅是當前更新/修改的文件。這是爲什麼?我的語法錯了嗎? 'winscp.com /log=c:\path\to\winscp.log/命令^ 「open sftp:// root:[email protected]/ -privatekey =」「C:\ putty \ key_pk .ppk「」-hostkey =「」ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx「」「^ 」 get -filemask *> =%TIMESTAMP#yyyy-mm-dd%/ home/user/Folder1/* C:\ LocalFolder1 \ SFTP \「^ 」exit「' –

+0

'-filemask'後面缺少一個等號。它應該是:'-filemask = *> =%TIMESTAMP#yyyy-mm-dd%'(和'*'可以省略,因爲它在我的答案中) –

+0

我也試過。但是腳本獲取了SFTP位置的所有文件(我有3個文件; 1月19日,1月20日和1月21日)。請看下面的輸出: 'get -filemask = *> =/home/user1/folder1/* C:\ localfolder1 \' –