S3是Amazon S3的簡稱,s3cmd是一款命令列工具用來管理s3,同時還有一款圖形化的管理工具:s3 browser。
因為絕大多數使用者都是在linux下管理s3,而我們的打包機是在windows上,所以需要在windows下管理s3,本文記錄一下踩坑。
s3的官方檔案:https://s3tools.org/s3cmd
s3cmd下載:https://github.com/s3tools/s3cmd
有兩個選項必須要設定對否則會一直報301錯誤,導致無法上傳和下載,但是s3 ls這條命令是可以用的
就是這兩個選項:
signature_v2 = True 這個加密選項如果是False每次上傳或下載檔案都會報301錯誤
host_bucket = %(bucket)s.s3.nie.xxx.com ,這個選項如果不對,無法上傳或下載
linux下的範例組態檔(windows下的ini組態檔大體型別)
[default]
access_key =
secret_key =
default_mime_type = binary/octet-stream
enable_multipart = True
encoding = UTF-8
encrypt = False
host_base = s3.nie.xxx.com
host_bucket = %(bucket)s.s3.nie.xxx.com
multipart_chunk_size_mb = 30
socket_timeout = 300
stop_on_error = False
use_https = False
use_mime_magic = True
verbosity = WARNING
signature_v2 = True
windows上的s3組態檔在這個目錄下(不同於linux):
Configuration saved to 'C:\Users\zhaoqingqing01\AppData\Roaming\s3cmd.ini'
use_mime_magic = True #自動判斷上傳檔案的mime型別
signature_v2 = True # 需要加密
更加詳細的解釋:https://www.bilibili.com/read/cv6012754
安裝步驟:
從github下載s3cmd,需要安裝python2,並把python新增到環境變數中
cd到s3cmd所在的目錄下,執行:python setup.py install
等待安裝完成後,所有的s3cmd命令都可以使用了,但需要cd到s3cmd目錄下
注意:在所有命令前都需要加上python,因為是通過python來執行的。
範例:
cd c:\
cd c:\s3cmd
python s3 ls
參考檔案:https://docs.e2enetworks.com/guides/s3cmdwindows.html(windows上可以不用安裝Gpg4win(加密軟體))
可用的命令列表,見這裡的commands部分:https://s3tools.org/usage
上傳/同步某個目錄 : s3cmd sync LOCAL_DIR s3://BUCKET[/PREFIX] or s3://BUCKET[/PREFIX] LOCAL_DIR,例子:python s3cmd sync "c:/test_res" s3://xxx-dev/game_rsync_res/res
查詢桶下面所有的檔案: s3cmd ls s3://BUCKET[/PREFIX],例子:s3cmd ls s3://xxx-dev
上傳某個檔案:python s3cmd put "E:/Temp/test_s3.txt" s3://xxx-dev/
下載某個檔案:python s3cmd get s3://xxx-dev/test_s3.txt
Q:如何新增檔案?
A:往資料夾中新增加檔案,然後在同步資料夾時,就會把新檔案上傳過去
Q:如何刪除檔案?
A:試過先在資料夾下刪除某個檔案,然後呼叫sync,看看遠端是否已刪除這張圖片?
Q:如何更新某張圖片?
A:sync指令替換原生的圖片就能更到最新
Q:如何切換不同的key?因為開發環境和正式環境的key不一樣
A:像linux那樣,在每條命結尾使用 -c「xx.ini」
通過s3cmd del 刪除某個目錄後,還可以下載到,不知是否因為有快取?
把資料夾下的某個檔案刪除後,通過sync同步檔案,還可以下載到刪除掉的檔案
除了命令列的方式,在windows下還有一個視覺化的的軟體,它可以列出某個桶及目錄下的所有檔案,並且提供視覺化的上傳和下載操作
使用檔案:https://docs.e2enetworks.com/guides/s3browser_windows.html
使用方法如下:
新建一個Account,每項設定如下
Account Type:S3 Compatible Storage
REST Endpoint:s3.nie.xxx.com
不要勾選SSL/TLS和 Encrypt Access Keys
點選左下角開啟高階設定,修改Addressing model為Virtual hosted style,然後點選 Save changes
S3 Browser可以儲存每次操作的紀錄檔,紀錄檔儲存位置:%APPDATA%\S3Browser\logs
首先本地磁碟的路徑符需要是\,否則會報Exception
如果連線時報錯誤:Unable to perform requested action,在Edit Account中開啟高階設定,修改Addressing model為Virtual hosted style