S3cmd là tiện ích dòng lệnh mà bạn có thể sử dụng cho bất kỳ Bộ lưu trữ đối tượng nào tương thích với S3.

Cài đặt s3cmd

Các lệnh sau sẽ cài đặt s3cmd trên nhiều hệ điều hành phổ biến khác nhau. Bạn có thể tìm thấy các phương pháp cài đặt s3cmd bổ sung trong kho S3cmd GitHub trong phần Cài đặt tệp gói s3cmd.

Để cài đặt s3cmd trên máy Mac, có thể sử dụng Homebrew:

cài đặt bia s3cmd

n macOS, s3cmd có thể không cài đặt được nếu bạn chưa cài đặt công cụ dòng lệnh XCode. Nếu đúng như vậy, hãy chạy lệnh sau:

xcode-select --install

Linux

Để cài đặt s3cmd trên hệ thống Linux (chẳng hạn như CentOS, Ubuntu hoặc Debian), có thể sử dụng pip trình quản lý gói của Python.

sudo pip cài đặt s3cmd

Một số bản phân phối Linux cũng có thể cài đặt s3cmd từ trình quản lý gói của riêng chúng, nhưng những phiên bản đó có thể không cập nhật. Xem Tải xuống S3cmd để biết thêm thông tin.

Định cấu hình s3cmd

  • Sau khi s3cmd được cài đặt, nó cần được cấu hình để hoạt động với các nhóm và đối tượng trên tài khoản Linode của bạn.

Chạy lệnh sau để bắt đầu quá trình cấu hình.

s3cmd --configure
  • Lệnh này sẽ nhắc bạn với một loạt câu hỏi. Hãy trả lời chúng dựa trên những gợi ý dưới đây:
    • Access Key: Nhập key truy cập bạn muốn sử dụng. Xem Quản lý khóa truy cập.
    • Secret Key: Nhập khóa bí mật tương ứng với khóa truy cập. Điều này đã được hiển thị một lần khi tạo khóa truy cập.
    • Vùng mặc định: Hoa Kỳ (không thay đổi, ngay cả khi bạn sử dụng Bộ lưu trữ đối tượng ở một khu vực khác)
    • Điểm cuối S3 (URL cụm): [cluster-id].linodeobjects.com, trong đó [cluster-id] là id trung tâm dữ liệu của bạn. Xem Truy cập nhóm và tệp thông qua URL > URL cụm (Điểm cuối S3) để biết thêm chi tiết và danh sách ID cụm.
    • Nhóm kiểu DNS+tên máy chủ: mẫu cổng để truy cập nhóm: %(bucket)s.[cluster-id].linodeobjects.com, thay thế [cluster-id] bằng cùng một id được sử dụng trước đó.
    • Mật khẩu mã hóa: Nhập khóa GPG nếu bạn có ý định lưu trữ và truy xuất các tệp được mã hóa (tùy chọn).
    • Đường dẫn đến chương trình GPG: Nhập đường dẫn đến chương trình mã hóa GPG của bạn (tùy chọn).
    • Sử dụng giao thức HTTPS: Có
    • Tên máy chủ HTTP Proxy: (Để trống)
    • Cổng máy chủ HTTP Proxy: (Để trống)
  • Khi lời nhắc xuất hiện để kiểm tra quyền truy cập bằng thông tin xác thực được cung cấp, hãy nhập n để bỏ qua. Hiện tại, quá trình này dẫn đến lỗi sau – ngay cả khi cài đặt đúng.

Khi lời nhắc lưu cài đặt của bạn xuất hiện, hãy nhập Y. Tệp cấu hình có tên .s3cfg được tạo trong thư mục chính của bạn.

Tùy chọn cấu hình bổ sung

S3cmd cung cấp một số tùy chọn cấu hình bổ sung không được trình bày dưới dạng lời nhắc của lệnh S3cmd –configure. Để sửa đổi bất kỳ tùy chọn cấu hình s3cmd nào (bao gồm cả các tùy chọn từ bước trước), bạn có thể chỉnh sửa trực tiếp tệp cấu hình. Tệp cấu hình này có tên là .s3cfg và phải được lưu trữ trong thư mục chính cục bộ của bạn. Vì mục đích của chúng tôi, nên điều chỉnh tùy chọn sau:

website_endpoint: http://%(bucket)s.website-[cluster-id].linodeobjects.com/, thay thế [cluster-id] bằng id tương ứng với trung tâm dữ liệu mà nhóm của bạn nằm trong đó (được liệt kê trên nhóm Access và các tập tin thông qua trang URL).

Tạo bucket

Tạo một nhóm có nhãn nhóm được chỉ định. Xem hướng dẫn Tạo và quản lý nhóm để biết các quy tắc đặt tên cho nhóm.

Lệnh: s3cmd mb s3://[bucket – label], thay thế [bucket – label] bằng nhãn bạn muốn sử dụng cho nhóm mới.

Ví dụ: Tạo một nhóm có nhãn “example-bucket”:

s3cmd mb s3://example-bucket

Xóa bucket

Xóa nhóm có nhãn được chỉ định.

Lệnh: s3cmd rb s3://[bucket-label], thay thế [bucket-label] bằng nhãn của nhóm bạn muốn xóa.

Ví dụ: Xóa nhóm có nhãn “example-bucket

Để xóa một nhóm có tệp trong đó, hãy thêm tùy chọn –recursive (hoặc -r) và tùy chọn –force (hoặc -f). Hãy thận trọng khi chạy lệnh này:

s3cmd rb -r -f s3://example-bucket/

Tương tác với đồ vật

Liệt kê các đối tượng

Lệnh: s3cmd ls s3://[bucket-label]/[path], thay thế [bucket-label] bằng nhãn cho vùng chứa của bạn và [path] bằng đường dẫn đầy đủ của thư mục bạn muốn xem (tùy chọn).

Ví dụ: Liệt kê tất cả các đối tượng trong nhóm có tên là “example-bucket”:

s3cmd ls s3://example-bucket/

Tải lên một đối tượng

Lệnh: s3cmd đặt [tệp] s3://[nhãn nhóm]/[đường dẫn], thay thế [tệp] bằng tên và đường dẫn của tệp bạn muốn tải lên, [nhãn nhóm] bằng nhãn cho nhóm của bạn và [path] bằng thư mục tùy chọn trong nhóm.

Ví dụ: Tải tệp “file.txt” lên nhóm có tên “example-bucket”:

s3cmd put file.txt s3://example-bucket/

Tùy chọn lệnh bổ sung:

-P: Làm cho đối tượng có thể truy cập công khai. Điều này sẽ cho phép bất kỳ ai có URL đều có thể truy cập vào đối tượng. Sau khi tải lên thành công, s3cmd sẽ xuất URL công khai.

-e: Mã hóa đối tượng (nếu bạn đã cấu hình đúng các tùy chọn s3cmd để kích hoạt mã hóa).

Việc tải lên hoặc đổi tên đối tượng bằng cách sử dụng các ký tự đặc biệt không chuẩn và các ký tự ASCII/Unicode bất thường có thể gây ra sự cố. Điều này bao gồm các ký tự: : ” ‘ < > & + =.

Tải xuống một đối tượng hoặc thư mục

Lệnh: s3cmd get s3://[bucket-label]/[path], thay thế [bucket-label] bằng nhãn cho vùng chứa của bạn và [path] bằng đường dẫn đầy đủ và tên tệp tùy chọn của tệp hoặc thư mục bạn muốn tải xuống .

Ví dụ: Tải xuống tệp “file.txt” từ nhóm có tên “example-bucket”:

Tùy chọn lệnh bổ sung:

-e: Giải mã một đối tượng được mã hóa.

Xóa một đối tượng hoặc thư mục

Lệnh: s3cmd rm s3://[bucket-label]/[path], thay thế [bucket-label] bằng nhãn cho vùng chứa của bạn và [path] bằng đường dẫn đầy đủ và tên tệp tùy chọn của tệp hoặc thư mục bạn muốn xóa .

Ví dụ: Xóa tệp “file.txt” trên nhóm có tên “example-bucket”:

s3cmd rm s3://example-bucket/file.txt

Để xóa tất cả các tệp trong một nhóm, hãy bao gồm tùy chọn –recursive (hoặc -r) và tùy chọn –force (hoặc -f). Hãy thận trọng khi chạy lệnh này:

s3cmd rm -r -f s3://example-bucket/

Quyền và kiểm soát truy cập

Áp dụng chính sách nhóm

Lệnh: s3cmd setpolicy [policy-file] s3://[bucket-label], thay thế [bucket-label] bằng nhãn cho vùng lưu trữ của bạn và [policy-file] bằng tên tệp và đường dẫn của tệp chính sách vùng lưu trữ của bạn.

Ví dụ: Áp dụng các chính sách nhóm được xác định trong tệp “policy.json” cho nhóm có tên là “example-bucket”:

s3cmd setpolicy policy.json s3://example-bucket

Để đảm bảo rằng nó đã được áp dụng chính xác, bạn có thể sử dụng lệnh info:

s3cmd info s3://bucket-policy-example

Bạn sẽ thấy đầu ra như sau:

s3://example-bucket/ (bucket):
Location: default
Payer: BucketOwner
Expiration Rule: none
Policy: b'{\n "Version": "2012-10-17",\n "Statement": [{\n "Effect": "Allow",\n "Principal": {"AWS": ["arn:aws:iam:::user/a0000000-000a-0000-0000-00d0ff0f0000"]},\n "Action": ["s3:PutObject","s3:GetObject","s3:ListBucket"],\n "Resource": [\n "arn:aws:s3:::bucket-policy-example/*"\n ]\n }]\n}'
CORS: none
ACL: a0000000-000a-0000-0000-00d0ff0f0000: FULL_CONTROL

ạo url đã ký với s3cmd

Việc tạo URL đã ký cho phép bạn tạo liên kết đến các đối tượng có quyền hạn chế và giới hạn thời gian để truy cập chúng. Để tạo URL đã ký trên một đối tượng có sẵn bằng s3cmd, hãy sử dụng cú pháp sau:

s3cmd signurl s3://my-example-bucket/example.txt +300

Đầu ra của lệnh là một URL có thể được sử dụng trong một khoảng thời gian nhất định để truy cập đối tượng, ngay cả khi ACL được đặt ở chế độ riêng tư. Trong trường hợp này, +300 biểu thị lượng thời gian tính bằng giây mà liên kết vẫn hoạt động hoặc tổng cộng là năm phút. Sau thời gian này, liên kết sẽ hết hạn và không thể sử dụng được nữa.

Tạo một trang web tĩnh với s3cmd

Bạn cũng có thể tạo một trang web tĩnh bằng Object Storage và s3cmd:

  • Để tạo một trang web từ một nhóm, hãy sử dụng lệnh ws-create:
s3cmd ws-create --ws-index=index.html --ws-error=404.html s3://my-example-bucket

Các cờ –ws-index và –ws-error chỉ định những đối tượng mà nhóm sẽ sử dụng để phục vụ trang chỉ mục và trang lỗi của trang tĩnh tương ứng.

  • Bạn cần tải riêng các tệp index.html và 404.html (hoặc tuy nhiên bạn đã đặt tên cho các trang chỉ mục và lỗi) vào nhóm:
echo 'Index page' > index.html echo 'Error page' > 404.html s3cmd put index.html 404.html s3://my-example-bucket
  • Trang web tĩnh được truy cập từ một URL khác với URL chung cho nhóm Lưu trữ đối tượng. Các trang web tĩnh có sẵn tại tên miền phụ website-us-east-1 cho trung tâm dữ liệu Newark, tên miền phụ website-eu-central-1 cho trung tâm dữ liệu Frankfurt và tên miền phụ website-ap-south-1 cho trung tâm dữ liệu Singapore . Sử dụng my-example-bucket làm ví dụ, bạn sẽ điều hướng đến:
    • http://my-example-bucket.website-us-east-1.linodeobjects.com or
    • http://my-example-bucket.website-eu-central-1.linodeobjects.com.

Đồng bộ tập tin và thư mục

Lệnh: s3cmd sync [local-path] s3://[bucket-label]/[path], thay thế [local-path] bằng đường dẫn đến thư mục bạn muốn tải lên, [bucket-label] bằng nhãn cho thư mục của bạn xô và [path] với đường dẫn từ xa mà bạn muốn nhắm mục tiêu để tải lên

Mặc dù bạn có thể sử dụng lệnh put để tải lên toàn bộ thư mục nhưng lệnh đồng bộ hóa có thể mang lại nhiều hành vi mong muốn hơn. đồng bộ hóa xác định những tệp nào đã được thêm hoặc sửa đổi và chỉ tải những tệp đó lên. Điều này có thể đặc biệt hữu ích khi duy trì số lượng lớn tệp, chẳng hạn như nội dung của một trang tĩnh.

Nguồn: https://techdocs.akamai.com/cloud-computing/docs/using-s3cmd-with-object-storage