AWS亞馬遜S3雲儲存怎麼批量上傳文件夾?用Python吧!

AWS S3 在瀏覽器沒有拖動文件夾上傳的功能,手動維護文件實在是太過辛苦了,用Python API吧!瀏覽器

AWS S3 纔是當今世界上最大的雲存儲。雖然 S3 服務的對象多爲企業用戶,你一樣可使用它搭建我的雲存儲平臺。在這篇文章中,咱們來看看 S3 API 的配置,以及如何使用 s3cmd 工具與 S3 存儲服務交互。安全

S3 的特性和價格

S3 不是會員制的訂閱服務,而是像水電同樣按使用量計費。費用主要由兩個部分組成:編輯器

  1. $0.023 每 GB 的存儲費,這一部分按月收取。
  2. $0.09 每 GB 的下載費。

與其它雲儲存服務相比,S3 最大的優點在於靠譜。官方宣稱 S3 數據的完整性(不會丟失和破壞)可達小數點後 12 個 9。與百度網盤等免費存儲服務相比,S3 沒有政策風險,不會有人檢查和刪除你的數據,也不會有限速和強制安裝客戶端之類的事情。與 Dropbox / iCloud 等訂閱存儲服務相比,S3 按需付費的機制在一些情形下更爲廉價。S3 便捷和不受限制的共享能力也是一個加分項。工具

API 配置

每一個 AWS 帳戶能夠建立不超過 100 個 S3 存儲筐 (bucket)。每一個 bucket 的名字都是全球惟一的。在一個 bucket 裏面,你能夠建立任意多的文件夾,上傳和下載文件。這一切操做均可以在瀏覽器中進行,就像用瀏覽器打開了一個雲端的資源管理器同樣。不過,手動維護文件實在是太過辛苦了。咱們須要一個可以自動化同步的工具,而 API 的協助是必不可少的。spa

AWS 使用 IAM (Identity and Access Management) 服務來管理全部 API 的使用。咱們要在 IAM 中建立一個獨立的「用戶」,添加 S3 所需的權限,並獲取 access key 和 secret key。下面是圖解的詳細操做流程:code

在 AWS 服務列表中搜索 IAM對象

進入 IAM 主頁,點擊左側的 Users 選項ip

添加一個新用戶資源

指定用戶名,並開啓應用程序訪問get

爲用戶添加 S3 徹底訪問權限

回顧當前的設定

下載當前用戶的 access key 和 secret key

建立用戶時,你只有一次機會查看和下載 secret key。因此請務必下載 csv 文件,並存放在一個安全的地方。若是 secret key 丟失或被盜用,你能夠吊銷當前的 key 並從新生成一個 access key - secret key 密鑰對。

如今你已經擁有了一個能夠控制 S3 的用戶,並獲取了調用 API 所需的 access key 和 secret key。下面就可使用 s3cmd 工具管理你的存儲空間了。

s3cmd 工具的配置和使用

s3cmd 是一個強大的 S3 交互工具。它由 Python 寫成,能夠經過 pip 安裝到我的電腦上。

pip install s3cmd

第一次使用 s3cmd 前,須要先填寫必要的信息。運行 s3cmd --configure ,填入 csv 文件中的 access key 和 secret key,其他選項一般可使用默認設定。設置結束後,在 $HOME 目錄下會出現一個 .s3cfg 文件,裏面存儲了全部的設置信息。你可使用文本編輯器進一步修改它。

下面列舉了 s3cmd 的基本操做。

建立一個 bucket

s3cmd mb s3://bucket-name

顯示全部已建立的 bucket

s3cmd ls

顯示一個 bucket 中的內容

# 只顯示根目錄下的文件和文件夾
s3cmd ls s3://bucket-1

# 顯示全部文件和文件夾
# -r 能夠用 --recursive 代替,下同
s3cmd ls -r s3://bucket-1
s3cmd la s3://bucket-1

上傳文件

# 上傳單個文件
s3cmd put file-1 s3://bucket-1/dir-1/file-1

# 上傳整個文件夾
# dir-1 將存放在 dir-2 之下
s3cmd put -r dir-1 s3://bucket-1/dir-2/

# 與 put -r 相似
# 但只上傳已修改的文件
# 至關於 Linux 中的 rsync
s3cmd sync dir-1 s3://bucket-1/dir-2/

下載文件

# 下載單個文件
s3cmd get s3://bucket-1/dir-1/file-1 file-1

# 下載整個文件夾
# 將在當前路徑建立 dir-1 文件夾
s3cmd get -r s3://bucket-1/dir-1

# 下載整個文件夾
# 直接下載內容,不建立 dir-1 文件夾
s3cmd get -r s3://bucket-1/dir-1/

複製文件

# 複製單個文件
s3cmd cp s3://bucket-1/file-1 s3://bucket-2/file-2

# 複製整個文件夾的內容
s3cmd cp s3://bucket-1/dir-1/ s3://bucket-2/dir-2/

移動文件

# 移動單個文件
s3cmd mv s3://bucket-1/file-1 s3://bucket-2/file-2

# 移動整個文件夾的內容
s3cmd mv s3://bucket-1/dir-1/ s3://bucket-2/dir-2/

刪除文件

# 刪除單個文件
s3cmd rm s3://bucket-1/file-1

# 刪除整個文件夾
s3cmd rm -r s3://bucket-1/dir-1/

刪除 bucket

# 刪除一個空的 bucket
s3cmd rb s3://bucket-1

# 刪除 bucket 和其中的全部內容
s3cmd rb --force s3://bucket-1
相關文章
相關標籤/搜索