歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux命令 >> 如何使用Linux命令行訪問Amazon S3雲存儲?

如何使用Linux命令行訪問Amazon S3雲存儲?

日期:2017/2/28 10:01:14   编辑:Linux命令
Linux命令雲存儲Amazon

Amazon S3 是Amazon網落服務(Amazon Web Services,AWS)提供的雲存儲。Amazon S3在眾多第三方已經開發完成的商業服務或客戶端軟件之上,發布了一組網絡服務接口。本教程描述怎樣用Linux命令行訪問Amazon S3雲存儲。

最著名的Amazon S3命令行客戶端是用python寫的s3cmd。作為一個簡單的AWS S3命令行工具,s3cmd的思想是用於運行腳本化的cron任務,比如每天的備份工作。

在Linux上安裝s3cmd

在Ubuntu或者Debian上安裝s3cm

  1. ___FCKpd___0nbsp;sudo apt-get install s3cmd

在Fedora上安裝s3cmd

  1. ___FCKpd___1nbsp;sudo yum install s3cmd

在CentOS或者RHEL上安裝s3cm

  1. ___FCKpd___2nbsp;s3cmd put –acl-public 4.png s3://dev99
  2. 4.png -> s3://dev99/4.png [1 of 1]
  3. 30778 of 30778 100% in 8s 3.34 kB/s done

先從官方站點上下載rpm包,然後手工安裝。64位CentOS或RHEL 6,用以下命令:

  1. ___FCKpd___3nbsp;sudo rpm -ivh s3cmd-1.0.0-4.1.x86_64.rpm

配置s3cmd

第一次運行s3cmd需要運行下面的命令做配置:

  1. ___FCKpd___4nbsp;s3cmd –configure

它將會問你一系列問題:

  • AWS S3的訪問密鑰和安全密鑰
  • 對AWS S3雙向傳輸的加密密碼和加密數據
  • 為加密數據設定GPG程序的路徑(例如,/usr/bin/gpg)
  • 是否使用https協議
  • 如果使用http代理,設定名字和端口

配置將以保存普通文本格式保存在 ~/.s3cfg.

s3cmd的基本用法

在你的賬戶中列出所有現有的bucket:

  1. ___FCKpd___5nbsp;s3cmd ls
  2. 2011-05-28 22:30 s3://mybucket1
  3. 2011-05-29 00:14 s3://mybucket2

建立新的bucket:

  1. ___FCKpd___6nbsp;s3cmd mb s3://dev99
  2. Bucket ’s3://dev99/’ created

上傳文件到現有的bucket:

  1. ___FCKpd___7nbsp;s3cmd put 1.png 2.png 3.png s3://dev99
  2. 1.png -> s3://dev99/1.png [1 of 3]
  3. 26261 of 26261 100% in 5s 4.33 kB/s done
  4. 2.png -> s3://dev99/2.png [2 of 3]
  5. 201430 of 201430 100% in 2s 98.05 kB/s done
  6. 3.png -> s3://dev99/3.png [3 of 3]
  7. 46630 of 46630 100% in 0s 56.62 kB/s done

上傳文件的默認訪問權限是私有的(private),就是只有你自己可以訪問,使用正確的訪問和安全密碼即可。

上傳公開訪問權限的文件到現有bucket:

  1. ___FCKpd___8nbsp;s3cmd put --acl-public 4.png s3://dev99
  2. 4.png -> s3://dev99/4.png [1 of 1]
  3. 30778 of 30778 100% in 8s 3.34 kB/s done
  4. Public URL of the object is: http://dev99.s3.amazonaws.com/4.png

如果上傳的文件授予公開訪問權限,任何人在浏覽器中都可以通過http://dev99.s3.amazonaws.com/4.png 訪問。

查看一個現有bucket的內容:

  1. ___FCKpd___9nbsp;s3cmd ls s3://dev99
  2. 2013-06-02 02:52 26261 s3://dev99/1.png
  3. 2013-06-02 02:52 201430 s3://dev99/2.png
  4. 2013-06-02 02:52 46630 s3://dev99/3.png
  5. 2013-06-02 02:56 30778 s3://dev99/4.png

下載現有bucket包含的文件(例如所有的.png文件):

  1. ___FCKpd___10nbsp;s3cmd get s3://dev99/*.png
  2. s3://dev99/1.png -> ./1.png [1 of 4]
  3. 26261 of 26261 100% in 0s 39.39 kB/s done
  4. s3://dev99/2.png -> ./2.png [2 of 4]
  5. 201430 of 201430 100% in 7s 24.64 kB/s done
  6. s3://dev99/3.png -> ./3.png [3 of 4]
  7. 46630 of 46630 100% in 1s 39.34 kB/s done
  8. s3://dev99/4.png -> ./4.png [4 of 4]
  9. 30778 of 30778 100% in 0s 97.01 kB/s done

刪除現有bucket中的文件:

  1. ___FCKpd___11nbsp;s3cmd del s3://dev99/*.png
  2. File s3://dev99/1.png deleted
  3. File s3://dev99/2.png deleted
  4. File s3://dev99/3.png deleted
  5. File s3://dev99/4.png deleted

獲取現有bucket的信息,包括存儲位置和訪問控制列表(ACL):

  1. ___FCKpd___12nbsp;s3cmd info s3://dev99
  2. s3://dev99/ (bucket):
  3. Location: us-east-1
  4. ACL: dan.nanni: READ
  5. ACL: dan.nanni: WRITE
  6. ACL: dan.nanni: READ_ACP
  7. ACL: dan.nanni: WRITE_ACP

在上傳到現有的bucket之前,加密文件:

  1. ___FCKpd___13nbsp;s3cmd -e put encrypt.png s3://dev99
  2. /tmp/tmpfile-pzT1zV3kLZlxDwqA0kwy -> s3://dev99/encrypt.png [1 of 1]
  3. 196890 of 196890 100% in 1s 99.51 kB/s done

當用s3cmd下載一個加密過的文件時,它會自動檢測加密並在下載過程解密,因此下載和訪問加密文件時,就像通常所做的一樣:

  1. ___FCKpd___14nbsp;s3cmd get s3://dev99/encrypt.png
  2. s3://dev99/encrypt.png -> ./encrypt.png [1 of 1]
  3. 196890 of 196890 100% in 1s 131.29 kB/s done

刪除現有的bucket:

  1. ___FCKpd___15nbsp;s3cmd rb s3://dev99
  2. Bucket ’s3://dev99/’ removed

注意,你不能刪除一個非空的bucket。

Copyright © Linux教程網 All Rights Reserved