Amazon S3 là một nơi tốt để sao lưu và lưu trữ các tệp của bạn với giá rẻ trên đám mây. Trong khi một số người sử dụng nó để lưu trữ dữ liệu cá nhân của họ, có những người khác sử dụng nó để lưu trữ hình ảnh và tập lệnh cho trang web của họ, và thậm chí sử dụng nó như là một CDN. Trên máy tính của bạn, bạn có thể dễ dàng truy cập và quản lý tài khoản Amazon S3 của mình bằng các ứng dụng như S3Fox, CloudBerry, DragonDisk, v.v., nhưng nếu bạn cần truy cập nó từ dòng lệnh thì sao? Đây là nơi S3cmd có ích.

S3cmd là một công cụ dòng lệnh miễn phí để tải lên, truy xuất và quản lý dữ liệu trong Amazon S3. Ngoài S3, nó cũng hỗ trợ các nhà cung cấp dịch vụ lưu trữ đám mây khác sử dụng giao thức S3, chẳng hạn như Google Cloud Storage hoặc DreamHost DreamObjects. Việc sử dụng tốt nhất cho công cụ này là trên máy chủ từ xa, nơi tất cả mọi thứ được thực hiện trên dòng lệnh. Ngoài ra, bạn cũng có thể sử dụng nó để tạo tập lệnh batch và tự động sao lưu sang S3.

S3cmd được viết bằng Python, vì vậy nó chỉ là về hỗ trợ trong tất cả các hệ điều hành, miễn là Python được cài đặt.

Cài đặt

S3cmd được tìm thấy trong hầu hết các kho lưu trữ Linux. Trong Debian / Ubuntu, hoặc bất kỳ distro dựa trên apt nào khác, bạn có thể cài đặt S3cmd bằng lệnh:

 sudo apt-get cài đặt s3cmd 

Đối với Fedora, Centos hoặc bất kỳ bản phát hành dựa trên yum nào khác:

 sudo yum cài đặt s3cmd 

Ngoài ra, bạn có thể tải xuống mã nguồn, giải nén gói và chạy trình cài đặt:

 sudo python setup.py cài đặt 

Bắt đầu

Trước khi bắt đầu, bạn cần có sẵn các khóa Bí mật và Truy cập của Amazon S3. Bạn có thể định vị các khóa Access và Secret trong Amazon Management Console.

Để bắt đầu, hãy mở terminal và gõ:

 s3cmd --configure 

Đầu tiên nó sẽ nhắc bạn nhập các khóa Truy cập và Bí mật của bạn.

Tiếp theo, bạn phải nhập khóa mã hóa và đường dẫn đến chương trình GPG.

Sau khi khóa mã hóa là lời nhắc cho việc sử dụng giao thức HTTPS. Tùy chọn mặc định là “Không”, nhưng bạn có thể đặt thành “Có” để có kết nối an toàn hơn với Amazon S3. Lưu ý rằng việc sử dụng giao thức HTTPS sẽ làm chậm tốc độ truyền và không thể sử dụng nếu bạn đang sử dụng proxy.

Một khi bạn đã cấu hình và kiểm tra các thiết lập, bạn có thể tiến hành sử dụng S3cmd. Nếu bạn cần thay đổi cài đặt, bạn có thể chỉnh sửa tệp .s3cfg trong thư mục Nhà của bạn hoặc chạy lại lệnh s3cmd --configure .

Sử dụng

Đầu tiên, để xem các thùng trong tài khoản S3 của bạn, bạn có thể sử dụng ls .

 s3cmd ls 

Để tạo một nhóm, hãy sử dụng lệnh mb :

 s3cmd mb s3: // test-s3cmd-bucket 

Lưu ý rằng bạn sẽ cần đặt tiền tố tên nhóm bằng “s3: //”

Để liệt kê nội dung trong một nhóm, hãy sử dụng ls cùng với tên nhóm. Ví dụ:

 s3cmd ls s3: // test-s3cmd-bucket 

Đang tải tệp lên thùng

Cách dễ nhất để tải lên một tệp thông qua S3cmd là với lệnh put . Ví dụ:

 s3cmd đặt text.txt s3: // test-s3cmd-bucket 

Ngoài ra, bạn có thể sử dụng tham số --encrypt để mã hóa tệp trước khi tải lên S3.

 s3cmd đặt --encrypt text.txt s3: // test-s3cmd-bucket 

Quyền mặc định cho lệnh put là riêng tư, có nghĩa là tập tin chỉ có thể được bạn xem. Nếu bạn cần tệp có thể truy cập công khai, bạn có thể thêm tham số --acl-public

 s3cmd đặt --acl-public text.txt s3: // test-s3cmd-bucket 

Để kiểm soát chi tiết hơn, hãy sử dụng tham số --acl-grant=PERMISSION:EMAIL or USER_CANONICAL_ID . Ví dụ:

 s3cmd đặt --acl-grant = đã đọc: [email protected] text.txt s3: // test-s3cmd-bucket 

“PERMISSION” có thể là “read”, “write”, “read_acp”, “write_acp, ” “full_control, ” “tất cả.”

Đang truy xuất tệp từ thùng

Để lấy một tập tin, sử dụng lệnh get .

 s3cmd nhận được s3: //test-s3cmd-bucket/text.txt text.txt 

Để tải xuống tất cả các tệp trong nhóm, chỉ cần nối tham số --recursive .

 s3cmd nhận - s3: // test-s3cmd-bucket 

Xóa tệp khỏi nhóm

Lệnh xóa cho s3cmd chỉ đơn giản là del . Ví dụ:

 s3cmd del s3: //test-s3cmd-bucket/text.txt 

Bạn cũng có thể sử dụng tham số --recursive để xóa tất cả các tệp trong nhóm.

 s3cmd del --recursive s3: // test-s3cmd-bucket 

Để biết thêm các lệnh S3cmd, hãy xem hướng dẫn sử dụng của nó tại đây.

Sử dụng nâng cao: Đồng bộ hóa một thư mục với S3

Giả sử bạn lưu trữ tất cả các tệp quan trọng trong một thư mục và bạn muốn nó được đồng bộ hóa với S3. S3cmd đi kèm với lệnh sync có thể đồng bộ hóa thư mục cục bộ với đích đến từ xa.

 đồng bộ hóa s3cmd - xóa xóa ~ / SecretFolder s3: // my-secret-bucket / 

Tất cả những gì bạn phải làm là tạo một cronjob để chạy lệnh đồng bộ thường xuyên.

1. Mở crontab.

 crontab -e 

2. Thêm dòng sau vào cuối crontab. Lưu và thoát khỏi crontab.

 Đồng bộ hóa 5 * * * * s3cmd - xóa xóa ~ / SecretFolder s3: // my-secret-bucket / 

Đó là nó. Bây giờ hệ thống của bạn sẽ đồng bộ thư mục bí mật với S3 sau 5 phút. Bạn có thể thay đổi giá trị để chạy lệnh đồng bộ hóa tại khoảng thời gian bạn muốn. Mọi tệp bạn đã xóa khỏi thư mục bí mật cũng sẽ bị xóa khỏi S3.

Phần kết luận

Đối với những người cần làm việc trong môi trường dòng lệnh, S3cmd thực sự là một công cụ tuyệt vời để bạn truy cập và quản lý Amazon S3 từ dòng lệnh. Không chỉ dễ sử dụng, nó còn đi kèm với rất nhiều lựa chọn cho nhu cầu sử dụng và viết kịch bản nâng cao.