2016-11-07 60 views
1

我有一個包含子目錄和許多需要推送到Amazon S3的文件的目錄。我正在使用'R'工具。使用'R'和'aws.s3'如何將目錄推送到雲

有沒有一種乾淨/簡單的方式來說「推這個目錄和其中的所有內容一直到S3」?我希望避免一次推一個,並手動重新構建目錄結構。

回答

1

如果使用完整路徑名將文件名傳遞給put_object(),然後將這些路徑名用作其對象鍵,則可以隱式重新創建目錄結構。基本上是這樣的(儘管你可能想使用它們看作是某種對象鍵時更改文件名):

library("aws.s3") 
lapply(dir(full.names = TRUE, recursive = TRUE), function(filename) { 
    put_object(file = filename, object = filename, bucket = "mybucket") 
}) 

還有一個實驗性功能s3sync()應該爲一個完整的文件樹這樣做(但它不是'廣泛測試):

s3sync() 
+0

嗨,托馬斯!我檢查了你的代碼。有用。但是應該解決兩件事:1)在「dir(,full.names = TRUE,recursive = TRUE)」中指定目錄名稱; 2)重新創建本地目錄結構後,出現一個帶有「_____」的附加目錄。這些文件在這個目錄中。是對的還是我需要做些事情?謝謝 ! – andrii

+1

@andrii這段代碼假設你想要當前目錄(所以第一個參數'dir()'是空的);但如果您嘗試複製其他文件,則可以指定其他目錄。不知道'___'來自哪裏 - 這有點奇怪。 – Thomas

相關問題