簡體   English   中英

批處理文件僅將今天的文件上傳到 S3(獲取文件名作為列表,循環,執行 cp 命令)

[英]Batch file to upload only today's files to S3 (get filenames as list, loop through, execute cp command)

我需要創建一個腳本,以在調度程序的基礎上使用aws s3 cp命令僅將今天在Z:\\驅動器中創建的文件復制到 AWS S3。

例如在 Z:\\,目前我有這些文件:

Filename                                            Date Modified
BELSIZE.0.DB2.NODE0000.CATN0000.20160313090011.001  3/13/2016 9:00 AM
BELSIZE.0.DB2.NODE0000.CATN0000.20160314090015.001  3/14/2016 9:00 AM
BELSIZE.0.DB2.NODE0000.CATN0000.20160315090010.001  3/15/2016 9:00 AM
BELSIZE.0.DB2.NODE0000.CATN0000.20160315100012.001  3/15/2016 10:00 AM

我只需要將日期為 3/15/2016 的最后 2 個文件復制到 AWS S3。

我現在擁有的是:

  1. 列出今天創建的路徑+文件名:

     forfiles /P "Z:\\" /s /m *.* /d +0 /c "cmd /c echo @path
  2. 將文件復制到 AWS S3:

     aws s3 cp Z:\\BELSIZE.0.DB2.NODE0000.CATN0000.20160315090010.001 s3://backup

我正在考慮將 1) 作為列表,循環 1) 並執行 2)。 我該怎么做?

我嘗試了以下命令。 今天創建的文件不會被復制到 S3。

forfiles /P "Z:\" /s /m *.001 /d +0 /c "cmd /c aws s3 cp @path s3://backup"

使用 WinSCP 這很容易。 要僅上傳今天的文件,請使用批處理文件,例如:

winscp.com /log=S3.log /ini=nul /command ^
    "open s3://S3KEY:S3SECRET@s3.amazonaws.com/" ^
    "put -filemask=>=today Z:\* /bucket/" ^
    "exit"

>=today關鍵字僅受 WinSCP 5.15 及更新版本支持。 在舊版本中,您可以使用%TIMESTAMP%語法

    "put -filemask=>=%%TIMESTAMP#yyyy-mm-dd%% Z:\* /bucket/" ^

您需要對憑據中的特殊字符進行URL 編碼 WinSCP GUI 可以為您生成一個 S3 腳本模板,就像上面的那樣。

或者,從 WinSCP 5.19 開始,您可以使用-username-password開關,它們不需要任何編碼:

    "open s3://s3.amazonaws.com/ -username=S3KEY -password=S3SECRET" ^

參考資料:

(我是 WinSCP 的作者)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM