s3cmd put文件的過程

通過 s3cmd 上傳文件的命令是 s3cmd put,s3cmd 可以上傳目錄或者文件,不過需要注意的是,如果直接上傳的是文件,在 s3cmd put 的過程中是比上傳文件夾省去很多步驟的,具體可以看下源碼裏的 cmd_object_put 這個方法。

  Put file into bucket
      s3cmd put FILE [FILE...] s3://BUCKET[/PREFIX]

查看 s3cmd 的源碼。可以留意到 fetch_local_list。這個方法主要是解析用戶 s3cmd put 之後的參數。
在這裏插入圖片描述
解析參數的意義是用來判斷上傳的是文件還是文件夾,如果是文件夾,則需要加上 --recrusive 參數,然後去對文件目錄去做遍歷,獲取文件夾下面所有的文件。從這個方法可以看到,如果是文件夾,那麼耗時主要是在 _os_walk_unicode 遍歷文件夾上。
在這裏插入圖片描述
而網上是有人推薦採取下面的這種方式去 put 文件夾的。

find . -type f | xargs -I {} s3cmd put {} s3://runzhliu/kevintest/{}

個人認爲,不管是哪種方法,對於上傳文件夾,最後都是要遍歷整個文件夾的,但是下面的方法,是直接通過調用 linux 的命令來去做遍歷,相對效率會比在 s3 中更高,而且省了很多計算 md5 類的過程。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章