{"id":35021,"date":"2024-10-04T11:44:49","date_gmt":"2024-10-04T04:44:49","guid":{"rendered":"http:\/\/jupitek.maudemo.vip\/index.php\/2024\/10\/04\/use-s3cmd-with-object-storage\/"},"modified":"2026-05-14T10:35:17","modified_gmt":"2026-05-14T09:35:17","slug":"use-s3cmd-with-object-storage","status":"publish","type":"post","link":"https:\/\/jupitek.maudemo.vip\/index.php\/2024\/10\/04\/use-s3cmd-with-object-storage\/","title":{"rendered":"S\u1eed d\u1ee5ng s3cmd v\u1edbi Object Storage"},"content":{"rendered":"<p>S3cmd l\u00e0 ti\u1ec7n \u00edch d\u00f2ng l\u1ec7nh m\u00e0 b\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng cho b\u1ea5t k\u1ef3 B\u1ed9 l\u01b0u tr\u1eef \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0o t\u01b0\u01a1ng th\u00edch v\u1edbi S3.<\/p>\n<h2>C\u00e0i \u0111\u1eb7t s3cmd<\/h2>\n<p>C\u00e1c l\u1ec7nh sau s\u1ebd c\u00e0i \u0111\u1eb7t s3cmd tr\u00ean nhi\u1ec1u h\u1ec7 \u0111i\u1ec1u h\u00e0nh ph\u1ed5 bi\u1ebfn kh\u00e1c nhau. B\u1ea1n c\u00f3 th\u1ec3 t\u00ecm th\u1ea5y c\u00e1c ph\u01b0\u01a1ng ph\u00e1p c\u00e0i \u0111\u1eb7t s3cmd b\u1ed5 sung trong kho S3cmd GitHub trong ph\u1ea7n C\u00e0i \u0111\u1eb7t t\u1ec7p g\u00f3i s3cmd.<\/p>\n<p>\u0110\u1ec3 c\u00e0i \u0111\u1eb7t s3cmd tr\u00ean m\u00e1y Mac, c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng Homebrew:<\/p>\n<pre class=\"wp-block-code\"><code>c\u00e0i \u0111\u1eb7t bia s3cmd<\/code><\/pre>\n<p>n macOS, s3cmd c\u00f3 th\u1ec3 kh\u00f4ng c\u00e0i \u0111\u1eb7t \u0111\u01b0\u1ee3c n\u1ebfu b\u1ea1n ch\u01b0a c\u00e0i \u0111\u1eb7t c\u00f4ng c\u1ee5 d\u00f2ng l\u1ec7nh XCode. N\u1ebfu \u0111\u00fang nh\u01b0 v\u1eady, h\u00e3y ch\u1ea1y l\u1ec7nh sau:<\/p>\n<pre class=\"wp-block-code\"><code>xcode-select --install<\/code><\/pre>\n<h2><strong>Linux<\/strong><\/h2>\n<p>\u0110\u1ec3 c\u00e0i \u0111\u1eb7t s3cmd tr\u00ean h\u1ec7 th\u1ed1ng Linux (ch\u1eb3ng h\u1ea1n nh\u01b0 CentOS, Ubuntu ho\u1eb7c Debian), c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng pip tr\u00ecnh qu\u1ea3n l\u00fd g\u00f3i c\u1ee7a Python.<\/p>\n<p>sudo pip c\u00e0i \u0111\u1eb7t s3cmd<\/p>\n<p>M\u1ed9t s\u1ed1 b\u1ea3n ph\u00e2n ph\u1ed1i Linux c\u0169ng c\u00f3 th\u1ec3 c\u00e0i \u0111\u1eb7t s3cmd t\u1eeb tr\u00ecnh qu\u1ea3n l\u00fd g\u00f3i c\u1ee7a ri\u00eang ch\u00fang, nh\u01b0ng nh\u1eefng phi\u00ean b\u1ea3n \u0111\u00f3 c\u00f3 th\u1ec3 kh\u00f4ng c\u1eadp nh\u1eadt. Xem T\u1ea3i xu\u1ed1ng S3cmd \u0111\u1ec3 bi\u1ebft th\u00eam th\u00f4ng tin.<\/p>\n<p><strong>\u0110\u1ecbnh c\u1ea5u h\u00ecnh s3cmd<\/strong><\/p>\n<ul>\n<li>Sau khi s3cmd \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t, n\u00f3 c\u1ea7n \u0111\u01b0\u1ee3c c\u1ea5u h\u00ecnh \u0111\u1ec3 ho\u1ea1t \u0111\u1ed9ng v\u1edbi c\u00e1c nh\u00f3m v\u00e0 \u0111\u1ed1i t\u01b0\u1ee3ng tr\u00ean t\u00e0i kho\u1ea3n Linode c\u1ee7a b\u1ea1n.<\/li>\n<\/ul>\n<p>Ch\u1ea1y l\u1ec7nh sau \u0111\u1ec3 b\u1eaft \u0111\u1ea7u qu\u00e1 tr\u00ecnh c\u1ea5u h\u00ecnh.<\/p>\n<pre class=\"wp-block-code\"><code>s3cmd --configure<\/code><\/pre>\n<ul>\n<li>L\u1ec7nh n\u00e0y s\u1ebd nh\u1eafc b\u1ea1n v\u1edbi m\u1ed9t lo\u1ea1t c\u00e2u h\u1ecfi. H\u00e3y tr\u1ea3 l\u1eddi ch\u00fang d\u1ef1a tr\u00ean nh\u1eefng g\u1ee3i \u00fd d\u01b0\u1edbi \u0111\u00e2y:\n<ul>\n<li>Access Key: Nh\u1eadp key truy c\u1eadp b\u1ea1n mu\u1ed1n s\u1eed d\u1ee5ng. Xem Qu\u1ea3n l\u00fd kh\u00f3a truy c\u1eadp.<\/li>\n<li>Secret Key: Nh\u1eadp kh\u00f3a b\u00ed m\u1eadt t\u01b0\u01a1ng \u1ee9ng v\u1edbi kh\u00f3a truy c\u1eadp. \u0110i\u1ec1u n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c hi\u1ec3n th\u1ecb m\u1ed9t l\u1ea7n khi t\u1ea1o kh\u00f3a truy c\u1eadp.<\/li>\n<li>V\u00f9ng m\u1eb7c \u0111\u1ecbnh: Hoa K\u1ef3 (kh\u00f4ng thay \u0111\u1ed5i, ngay c\u1ea3 khi b\u1ea1n s\u1eed d\u1ee5ng B\u1ed9 l\u01b0u tr\u1eef \u0111\u1ed1i t\u01b0\u1ee3ng \u1edf m\u1ed9t khu v\u1ef1c kh\u00e1c)<\/li>\n<li>\u0110i\u1ec3m cu\u1ed1i S3 (URL c\u1ee5m): [cluster-id].linodeobjects.com, trong \u0111\u00f3 [cluster-id] l\u00e0 id trung t\u00e2m d\u1eef li\u1ec7u c\u1ee7a b\u1ea1n. Xem Truy c\u1eadp nh\u00f3m v\u00e0 t\u1ec7p th\u00f4ng qua URL &gt; URL c\u1ee5m (\u0110i\u1ec3m cu\u1ed1i S3) \u0111\u1ec3 bi\u1ebft th\u00eam chi ti\u1ebft v\u00e0 danh s\u00e1ch ID c\u1ee5m.<\/li>\n<li>Nh\u00f3m ki\u1ec3u DNS+t\u00ean m\u00e1y ch\u1ee7: m\u1eabu c\u1ed5ng \u0111\u1ec3 truy c\u1eadp nh\u00f3m: %(bucket)s.[cluster-id].linodeobjects.com, thay th\u1ebf [cluster-id] b\u1eb1ng c\u00f9ng m\u1ed9t id \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng tr\u01b0\u1edbc \u0111\u00f3.<\/li>\n<li>M\u1eadt kh\u1ea9u m\u00e3 h\u00f3a: Nh\u1eadp kh\u00f3a GPG n\u1ebfu b\u1ea1n c\u00f3 \u00fd \u0111\u1ecbnh l\u01b0u tr\u1eef v\u00e0 truy xu\u1ea5t c\u00e1c t\u1ec7p \u0111\u01b0\u1ee3c m\u00e3 h\u00f3a (t\u00f9y ch\u1ecdn).<\/li>\n<li>\u0110\u01b0\u1eddng d\u1eabn \u0111\u1ebfn ch\u01b0\u01a1ng tr\u00ecnh GPG: Nh\u1eadp \u0111\u01b0\u1eddng d\u1eabn \u0111\u1ebfn ch\u01b0\u01a1ng tr\u00ecnh m\u00e3 h\u00f3a GPG c\u1ee7a b\u1ea1n (t\u00f9y ch\u1ecdn).<\/li>\n<li>S\u1eed d\u1ee5ng giao th\u1ee9c HTTPS: C\u00f3<\/li>\n<li>T\u00ean m\u00e1y ch\u1ee7 HTTP Proxy: (\u0110\u1ec3 tr\u1ed1ng)<\/li>\n<li>C\u1ed5ng m\u00e1y ch\u1ee7 HTTP Proxy: (\u0110\u1ec3 tr\u1ed1ng)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>Khi l\u1eddi nh\u1eafc xu\u1ea5t hi\u1ec7n \u0111\u1ec3 ki\u1ec3m tra quy\u1ec1n truy c\u1eadp b\u1eb1ng th\u00f4ng tin x\u00e1c th\u1ef1c \u0111\u01b0\u1ee3c cung c\u1ea5p, h\u00e3y nh\u1eadp n \u0111\u1ec3 b\u1ecf qua. Hi\u1ec7n t\u1ea1i, qu\u00e1 tr\u00ecnh n\u00e0y d\u1eabn \u0111\u1ebfn l\u1ed7i sau &#8211; ngay c\u1ea3 khi c\u00e0i \u0111\u1eb7t \u0111\u00fang.<\/li>\n<\/ul>\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" loading=\"lazy\" width=\"745\" height=\"126\" src=\"http:\/\/jupitek.maudemo.vip\/wp-content\/uploads\/2026\/05\/image.png\" alt=\"\" class=\"wp-image-1846\" srcset=\"http:\/\/jupitek.maudemo.vip\/wp-content\/uploads\/2026\/05\/image.png 745w, http:\/\/jupitek.maudemo.vip\/wp-content\/uploads\/2026\/05\/image-300x51-1.png 300w\" sizes=\"auto, (max-width: 745px) 100vw, 745px\" \/><\/figure>\n<p>Khi l\u1eddi nh\u1eafc l\u01b0u c\u00e0i \u0111\u1eb7t c\u1ee7a b\u1ea1n xu\u1ea5t hi\u1ec7n, h\u00e3y nh\u1eadp Y. T\u1ec7p c\u1ea5u h\u00ecnh c\u00f3 t\u00ean .s3cfg \u0111\u01b0\u1ee3c t\u1ea1o trong th\u01b0 m\u1ee5c ch\u00ednh c\u1ee7a b\u1ea1n.<\/p>\n<p><strong>T\u00f9y ch\u1ecdn c\u1ea5u h\u00ecnh b\u1ed5 sung<\/strong><\/p>\n<p>S3cmd cung c\u1ea5p m\u1ed9t s\u1ed1 t\u00f9y ch\u1ecdn c\u1ea5u h\u00ecnh b\u1ed5 sung kh\u00f4ng \u0111\u01b0\u1ee3c tr\u00ecnh b\u00e0y d\u01b0\u1edbi d\u1ea1ng l\u1eddi nh\u1eafc c\u1ee7a l\u1ec7nh S3cmd &#8211;configure. \u0110\u1ec3 s\u1eeda \u0111\u1ed5i b\u1ea5t k\u1ef3 t\u00f9y ch\u1ecdn c\u1ea5u h\u00ecnh s3cmd n\u00e0o (bao g\u1ed3m c\u1ea3 c\u00e1c t\u00f9y ch\u1ecdn t\u1eeb b\u01b0\u1edbc tr\u01b0\u1edbc), b\u1ea1n c\u00f3 th\u1ec3 ch\u1ec9nh s\u1eeda tr\u1ef1c ti\u1ebfp t\u1ec7p c\u1ea5u h\u00ecnh. T\u1ec7p c\u1ea5u h\u00ecnh n\u00e0y c\u00f3 t\u00ean l\u00e0 .s3cfg v\u00e0 ph\u1ea3i \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef trong th\u01b0 m\u1ee5c ch\u00ednh c\u1ee5c b\u1ed9 c\u1ee7a b\u1ea1n. V\u00ec m\u1ee5c \u0111\u00edch c\u1ee7a ch\u00fang t\u00f4i, n\u00ean \u0111i\u1ec1u ch\u1ec9nh t\u00f9y ch\u1ecdn sau:<\/p>\n<p>website_endpoint: http:\/\/%(bucket)s.website-[cluster-id].linodeobjects.com\/, thay th\u1ebf [cluster-id] b\u1eb1ng id t\u01b0\u01a1ng \u1ee9ng v\u1edbi trung t\u00e2m d\u1eef li\u1ec7u m\u00e0 nh\u00f3m c\u1ee7a b\u1ea1n n\u1eb1m trong \u0111\u00f3 (\u0111\u01b0\u1ee3c li\u1ec7t k\u00ea tr\u00ean nh\u00f3m Access v\u00e0 c\u00e1c t\u1eadp tin th\u00f4ng qua trang URL).<\/p>\n<p><strong>T\u1ea1o<\/strong> <strong>bucket<\/strong><\/p>\n<p>T\u1ea1o m\u1ed9t nh\u00f3m c\u00f3 nh\u00e3n nh\u00f3m \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh. Xem h\u01b0\u1edbng d\u1eabn T\u1ea1o v\u00e0 qu\u1ea3n l\u00fd nh\u00f3m \u0111\u1ec3 bi\u1ebft c\u00e1c quy t\u1eafc \u0111\u1eb7t t\u00ean cho nh\u00f3m.<\/p>\n<p>L\u1ec7nh: s3cmd mb s3:\/\/[bucket &#8211; label], thay th\u1ebf [bucket &#8211; label] b\u1eb1ng nh\u00e3n b\u1ea1n mu\u1ed1n s\u1eed d\u1ee5ng cho nh\u00f3m m\u1edbi.<\/p>\n<p>V\u00ed d\u1ee5: T\u1ea1o m\u1ed9t nh\u00f3m c\u00f3 nh\u00e3n &#8220;example-bucket&#8221;:<\/p>\n<p>s3cmd mb s3:\/\/example-bucket<\/p>\n<p><strong>X\u00f3a bucket<\/strong><\/p>\n<p>X\u00f3a nh\u00f3m c\u00f3 nh\u00e3n \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh.<\/p>\n<p>L\u1ec7nh: s3cmd rb s3:\/\/[bucket-label], thay th\u1ebf [bucket-label] b\u1eb1ng nh\u00e3n c\u1ee7a nh\u00f3m b\u1ea1n mu\u1ed1n x\u00f3a.<\/p>\n<p>V\u00ed d\u1ee5: X\u00f3a nh\u00f3m c\u00f3 nh\u00e3n &#8220;example-bucket<\/p>\n<p>\u0110\u1ec3 x\u00f3a m\u1ed9t nh\u00f3m c\u00f3 t\u1ec7p trong \u0111\u00f3, h\u00e3y th\u00eam t\u00f9y ch\u1ecdn &#8211;recursive (ho\u1eb7c -r) v\u00e0 t\u00f9y ch\u1ecdn &#8211;force (ho\u1eb7c -f). H\u00e3y th\u1eadn tr\u1ecdng khi ch\u1ea1y l\u1ec7nh n\u00e0y:<\/p>\n<p>s3cmd rb -r -f s3:\/\/example-bucket\/<\/p>\n<h2 id=\"h-t\u01b0\u01a1ng-tac-v\u1edbi-d\u1ed3-v\u1eadt\">T\u01b0\u01a1ng t\u00e1c v\u1edbi \u0111\u1ed3 v\u1eadt<\/h2>\n<p><strong>Li\u1ec7t k\u00ea c\u00e1c \u0111\u1ed1i t\u01b0\u1ee3ng<\/strong><\/p>\n<p>L\u1ec7nh: s3cmd ls s3:\/\/[bucket-label]\/[path], thay th\u1ebf [bucket-label] b\u1eb1ng nh\u00e3n cho v\u00f9ng ch\u1ee9a c\u1ee7a b\u1ea1n v\u00e0 [path] b\u1eb1ng \u0111\u01b0\u1eddng d\u1eabn \u0111\u1ea7y \u0111\u1ee7 c\u1ee7a th\u01b0 m\u1ee5c b\u1ea1n mu\u1ed1n xem (t\u00f9y ch\u1ecdn).<\/p>\n<p>V\u00ed d\u1ee5: Li\u1ec7t k\u00ea t\u1ea5t c\u1ea3 c\u00e1c \u0111\u1ed1i t\u01b0\u1ee3ng trong nh\u00f3m c\u00f3 t\u00ean l\u00e0 &#8220;example-bucket&#8221;:<\/p>\n<pre class=\"wp-block-code\"><code>s3cmd ls s3:\/\/example-bucket\/<\/code><\/pre>\n<p><strong>T\u1ea3i l\u00ean m\u1ed9t \u0111\u1ed1i t\u01b0\u1ee3ng<\/strong><\/p>\n<p><strong>L\u1ec7nh<\/strong>: s3cmd \u0111\u1eb7t [t\u1ec7p] s3:\/\/[nh\u00e3n nh\u00f3m]\/[\u0111\u01b0\u1eddng d\u1eabn], thay th\u1ebf [t\u1ec7p] b\u1eb1ng t\u00ean v\u00e0 \u0111\u01b0\u1eddng d\u1eabn c\u1ee7a t\u1ec7p b\u1ea1n mu\u1ed1n t\u1ea3i l\u00ean, [nh\u00e3n nh\u00f3m] b\u1eb1ng nh\u00e3n cho nh\u00f3m c\u1ee7a b\u1ea1n v\u00e0 [path] b\u1eb1ng th\u01b0 m\u1ee5c t\u00f9y ch\u1ecdn trong nh\u00f3m.<\/p>\n<p><strong>V\u00ed d\u1ee5<\/strong>: T\u1ea3i t\u1ec7p &#8220;file.txt&#8221; l\u00ean nh\u00f3m c\u00f3 t\u00ean &#8220;example-bucket&#8221;:<\/p>\n<pre class=\"wp-block-code\"><code>s3cmd put file.txt s3:\/\/example-bucket\/<\/code><\/pre>\n<p><strong>T\u00f9y ch\u1ecdn l\u1ec7nh b\u1ed5 sung:<\/strong><\/p>\n<p>-P: L\u00e0m cho \u0111\u1ed1i t\u01b0\u1ee3ng c\u00f3 th\u1ec3 truy c\u1eadp c\u00f4ng khai. \u0110i\u1ec1u n\u00e0y s\u1ebd cho ph\u00e9p b\u1ea5t k\u1ef3 ai c\u00f3 URL \u0111\u1ec1u c\u00f3 th\u1ec3 truy c\u1eadp v\u00e0o \u0111\u1ed1i t\u01b0\u1ee3ng. Sau khi t\u1ea3i l\u00ean th\u00e0nh c\u00f4ng, s3cmd s\u1ebd xu\u1ea5t URL c\u00f4ng khai.<\/p>\n<p>-e: M\u00e3 h\u00f3a \u0111\u1ed1i t\u01b0\u1ee3ng (n\u1ebfu b\u1ea1n \u0111\u00e3 c\u1ea5u h\u00ecnh \u0111\u00fang c\u00e1c t\u00f9y ch\u1ecdn s3cmd \u0111\u1ec3 k\u00edch ho\u1ea1t m\u00e3 h\u00f3a).<\/p>\n<p class=\"has-background\" style=\"background-color:#cfffeb\">Vi\u1ec7c t\u1ea3i l\u00ean ho\u1eb7c \u0111\u1ed5i t\u00ean \u0111\u1ed1i t\u01b0\u1ee3ng b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng c\u00e1c k\u00fd t\u1ef1 \u0111\u1eb7c bi\u1ec7t kh\u00f4ng chu\u1ea9n v\u00e0 c\u00e1c k\u00fd t\u1ef1 ASCII\/Unicode b\u1ea5t th\u01b0\u1eddng c\u00f3 th\u1ec3 g\u00e2y ra s\u1ef1 c\u1ed1. \u0110i\u1ec1u n\u00e0y bao g\u1ed3m c\u00e1c k\u00fd t\u1ef1: : &#8221; &#8216; &lt; &gt; &amp; + =.<\/p>\n<h2>T\u1ea3i xu\u1ed1ng m\u1ed9t \u0111\u1ed1i t\u01b0\u1ee3ng ho\u1eb7c th\u01b0 m\u1ee5c<\/h2>\n<p><strong>L\u1ec7nh<\/strong>: s3cmd get s3:\/\/[bucket-label]\/[path], thay th\u1ebf [bucket-label] b\u1eb1ng nh\u00e3n cho v\u00f9ng ch\u1ee9a c\u1ee7a b\u1ea1n v\u00e0 [path] b\u1eb1ng \u0111\u01b0\u1eddng d\u1eabn \u0111\u1ea7y \u0111\u1ee7 v\u00e0 t\u00ean t\u1ec7p t\u00f9y ch\u1ecdn c\u1ee7a t\u1ec7p ho\u1eb7c th\u01b0 m\u1ee5c b\u1ea1n mu\u1ed1n t\u1ea3i xu\u1ed1ng .<\/p>\n<p><strong>V\u00ed d\u1ee5<\/strong>: T\u1ea3i xu\u1ed1ng t\u1ec7p &#8220;file.txt&#8221; t\u1eeb nh\u00f3m c\u00f3 t\u00ean &#8220;example-bucket&#8221;:<\/p>\n<p><strong>T\u00f9y ch\u1ecdn l\u1ec7nh b\u1ed5 sung:<\/strong><\/p>\n<p>-e: Gi\u1ea3i m\u00e3 m\u1ed9t \u0111\u1ed1i t\u01b0\u1ee3ng \u0111\u01b0\u1ee3c m\u00e3 h\u00f3a.<\/p>\n<h2>X\u00f3a m\u1ed9t \u0111\u1ed1i t\u01b0\u1ee3ng ho\u1eb7c th\u01b0 m\u1ee5c<\/h2>\n<p><strong>L\u1ec7nh<\/strong>: s3cmd rm s3:\/\/[bucket-label]\/[path], thay th\u1ebf [bucket-label] b\u1eb1ng nh\u00e3n cho v\u00f9ng ch\u1ee9a c\u1ee7a b\u1ea1n v\u00e0 [path] b\u1eb1ng \u0111\u01b0\u1eddng d\u1eabn \u0111\u1ea7y \u0111\u1ee7 v\u00e0 t\u00ean t\u1ec7p t\u00f9y ch\u1ecdn c\u1ee7a t\u1ec7p ho\u1eb7c th\u01b0 m\u1ee5c b\u1ea1n mu\u1ed1n x\u00f3a .<\/p>\n<p><strong>V\u00ed d\u1ee5<\/strong>: X\u00f3a t\u1ec7p &#8220;file.txt&#8221; tr\u00ean nh\u00f3m c\u00f3 t\u00ean &#8220;example-bucket&#8221;:<\/p>\n<pre class=\"wp-block-code\"><code>s3cmd rm s3:\/\/example-bucket\/file.txt<\/code><\/pre>\n<p>\u0110\u1ec3 x\u00f3a t\u1ea5t c\u1ea3 c\u00e1c t\u1ec7p trong m\u1ed9t nh\u00f3m, h\u00e3y bao g\u1ed3m t\u00f9y ch\u1ecdn &#8211;recursive (ho\u1eb7c -r) v\u00e0 t\u00f9y ch\u1ecdn &#8211;force (ho\u1eb7c -f). H\u00e3y th\u1eadn tr\u1ecdng khi ch\u1ea1y l\u1ec7nh n\u00e0y:<\/p>\n<pre class=\"wp-block-code\"><code>s3cmd rm -r -f s3:\/\/example-bucket\/<\/code><\/pre>\n<h2>Quy\u1ec1n v\u00e0 ki\u1ec3m so\u00e1t truy c\u1eadp<\/h2>\n<p><strong>\u00c1p d\u1ee5ng ch\u00ednh s\u00e1ch nh\u00f3m<\/strong><\/p>\n<p><strong>L\u1ec7nh<\/strong>: s3cmd setpolicy [policy-file] s3:\/\/[bucket-label], thay th\u1ebf [bucket-label] b\u1eb1ng nh\u00e3n cho v\u00f9ng l\u01b0u tr\u1eef c\u1ee7a b\u1ea1n v\u00e0 [policy-file] b\u1eb1ng t\u00ean t\u1ec7p v\u00e0 \u0111\u01b0\u1eddng d\u1eabn c\u1ee7a t\u1ec7p ch\u00ednh s\u00e1ch v\u00f9ng l\u01b0u tr\u1eef c\u1ee7a b\u1ea1n.<\/p>\n<p><strong>V\u00ed d\u1ee5:<\/strong> \u00c1p d\u1ee5ng c\u00e1c ch\u00ednh s\u00e1ch nh\u00f3m \u0111\u01b0\u1ee3c x\u00e1c \u0111\u1ecbnh trong t\u1ec7p &#8220;policy.json&#8221; cho nh\u00f3m c\u00f3 t\u00ean l\u00e0 &#8220;example-bucket&#8221;:<\/p>\n<pre class=\"wp-block-code\"><code>s3cmd setpolicy policy.json s3:\/\/example-bucket<\/code><\/pre>\n<p>\u0110\u1ec3 \u0111\u1ea3m b\u1ea3o r\u1eb1ng n\u00f3 \u0111\u00e3 \u0111\u01b0\u1ee3c \u00e1p d\u1ee5ng ch\u00ednh x\u00e1c, b\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng l\u1ec7nh info:<\/p>\n<pre class=\"wp-block-code\"><code>s3cmd info s3:\/\/bucket-policy-example<\/code><\/pre>\n<p>B\u1ea1n s\u1ebd th\u1ea5y \u0111\u1ea7u ra nh\u01b0 sau:<\/p>\n<pre class=\"wp-block-code\"><code>s3:\/\/example-bucket\/ (bucket):<br>Location: default<br>Payer: BucketOwner<br>Expiration Rule: none<br>Policy: b'{\\n \"Version\": \"2012-10-17\",\\n \"Statement\": &#91;{\\n \"Effect\": \"Allow\",\\n \"Principal\": {\"AWS\": &#91;\"arn:aws:iam:::user\/a0000000-000a-0000-0000-00d0ff0f0000\"]},\\n \"Action\": &#91;\"s3:PutObject\",\"s3:GetObject\",\"s3:ListBucket\"],\\n \"Resource\": &#91;\\n \"arn:aws:s3:::bucket-policy-example\/*\"\\n ]\\n }]\\n}'<br>CORS: none<br>ACL: a0000000-000a-0000-0000-00d0ff0f0000: FULL_CONTROL<\/code><\/pre>\n<p>\u1ea1o url \u0111\u00e3 k\u00fd v\u1edbi s3cmd<\/p>\n<p>Vi\u1ec7c t\u1ea1o URL \u0111\u00e3 k\u00fd cho ph\u00e9p b\u1ea1n t\u1ea1o li\u00ean k\u1ebft \u0111\u1ebfn c\u00e1c \u0111\u1ed1i t\u01b0\u1ee3ng c\u00f3 quy\u1ec1n h\u1ea1n ch\u1ebf v\u00e0 gi\u1edbi h\u1ea1n th\u1eddi gian \u0111\u1ec3 truy c\u1eadp ch\u00fang. \u0110\u1ec3 t\u1ea1o URL \u0111\u00e3 k\u00fd tr\u00ean m\u1ed9t \u0111\u1ed1i t\u01b0\u1ee3ng c\u00f3 s\u1eb5n b\u1eb1ng s3cmd, h\u00e3y s\u1eed d\u1ee5ng c\u00fa ph\u00e1p sau:<\/p>\n<pre class=\"wp-block-code\"><code>s3cmd signurl s3:\/\/my-example-bucket\/example.txt +300<\/code><\/pre>\n<p>\u0110\u1ea7u ra c\u1ee7a l\u1ec7nh l\u00e0 m\u1ed9t URL c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng trong m\u1ed9t kho\u1ea3ng th\u1eddi gian nh\u1ea5t \u0111\u1ecbnh \u0111\u1ec3 truy c\u1eadp \u0111\u1ed1i t\u01b0\u1ee3ng, ngay c\u1ea3 khi ACL \u0111\u01b0\u1ee3c \u0111\u1eb7t \u1edf ch\u1ebf \u0111\u1ed9 ri\u00eang t\u01b0. Trong tr\u01b0\u1eddng h\u1ee3p n\u00e0y, +300 bi\u1ec3u th\u1ecb l\u01b0\u1ee3ng th\u1eddi gian t\u00ednh b\u1eb1ng gi\u00e2y m\u00e0 li\u00ean k\u1ebft v\u1eabn ho\u1ea1t \u0111\u1ed9ng ho\u1eb7c t\u1ed5ng c\u1ed9ng l\u00e0 n\u0103m ph\u00fat. Sau th\u1eddi gian n\u00e0y, li\u00ean k\u1ebft s\u1ebd h\u1ebft h\u1ea1n v\u00e0 kh\u00f4ng th\u1ec3 s\u1eed d\u1ee5ng \u0111\u01b0\u1ee3c n\u1eefa.<\/p>\n<h2>T\u1ea1o m\u1ed9t trang web t\u0129nh v\u1edbi s3cmd<\/h2>\n<p><strong>B\u1ea1n c\u0169ng c\u00f3 th\u1ec3 t\u1ea1o m\u1ed9t trang web t\u0129nh b\u1eb1ng Object Storage v\u00e0 s3cmd:<\/strong><\/p>\n<ul>\n<li>\u0110\u1ec3 t\u1ea1o m\u1ed9t trang web t\u1eeb m\u1ed9t nh\u00f3m, h\u00e3y s\u1eed d\u1ee5ng l\u1ec7nh ws-create:<\/li>\n<\/ul>\n<pre class=\"wp-block-code\"><code>s3cmd ws-create --ws-index=index.html --ws-error=404.html s3:\/\/my-example-bucket<\/code><\/pre>\n<p>C\u00e1c c\u1edd &#8211;ws-index v\u00e0 &#8211;ws-error ch\u1ec9 \u0111\u1ecbnh nh\u1eefng \u0111\u1ed1i t\u01b0\u1ee3ng m\u00e0 nh\u00f3m s\u1ebd s\u1eed d\u1ee5ng \u0111\u1ec3 ph\u1ee5c v\u1ee5 trang ch\u1ec9 m\u1ee5c v\u00e0 trang l\u1ed7i c\u1ee7a trang t\u0129nh t\u01b0\u01a1ng \u1ee9ng.<\/p>\n<ul>\n<li>B\u1ea1n c\u1ea7n t\u1ea3i ri\u00eang c\u00e1c t\u1ec7p index.html v\u00e0 404.html (ho\u1eb7c tuy nhi\u00ean b\u1ea1n \u0111\u00e3 \u0111\u1eb7t t\u00ean cho c\u00e1c trang ch\u1ec9 m\u1ee5c v\u00e0 l\u1ed7i) v\u00e0o nh\u00f3m:<\/li>\n<\/ul>\n<pre class=\"wp-block-code\"><code>echo 'Index page' &gt; index.html echo 'Error page' &gt; 404.html s3cmd put index.html 404.html s3:\/\/my-example-bucket<\/code><\/pre>\n<ul>\n<li>Trang web t\u0129nh \u0111\u01b0\u1ee3c truy c\u1eadp t\u1eeb m\u1ed9t URL kh\u00e1c v\u1edbi URL chung cho nh\u00f3m L\u01b0u tr\u1eef \u0111\u1ed1i t\u01b0\u1ee3ng. C\u00e1c trang web t\u0129nh c\u00f3 s\u1eb5n t\u1ea1i t\u00ean mi\u1ec1n ph\u1ee5 website-us-east-1 cho trung t\u00e2m d\u1eef li\u1ec7u Newark, t\u00ean mi\u1ec1n ph\u1ee5 website-eu-central-1 cho trung t\u00e2m d\u1eef li\u1ec7u Frankfurt v\u00e0 t\u00ean mi\u1ec1n ph\u1ee5 website-ap-south-1 cho trung t\u00e2m d\u1eef li\u1ec7u Singapore . S\u1eed d\u1ee5ng my-example-bucket l\u00e0m v\u00ed d\u1ee5, b\u1ea1n s\u1ebd \u0111i\u1ec1u h\u01b0\u1edbng \u0111\u1ebfn:\n<ul>\n<li><code>http:\/\/my-example-bucket.website-us-east-1.linodeobjects.com<\/code>&nbsp;or<\/li>\n<li><code>http:\/\/my-example-bucket.website-eu-central-1.linodeobjects.com<\/code>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>\u0110\u1ed3ng b\u1ed9 t\u1eadp tin v\u00e0 th\u01b0 m\u1ee5c<\/h2>\n<p>L\u1ec7nh: s3cmd sync [local-path] s3:\/\/[bucket-label]\/[path], thay th\u1ebf [local-path] b\u1eb1ng \u0111\u01b0\u1eddng d\u1eabn \u0111\u1ebfn th\u01b0 m\u1ee5c b\u1ea1n mu\u1ed1n t\u1ea3i l\u00ean, [bucket-label] b\u1eb1ng nh\u00e3n cho th\u01b0 m\u1ee5c c\u1ee7a b\u1ea1n x\u00f4 v\u00e0 [path] v\u1edbi \u0111\u01b0\u1eddng d\u1eabn t\u1eeb xa m\u00e0 b\u1ea1n mu\u1ed1n nh\u1eafm m\u1ee5c ti\u00eau \u0111\u1ec3 t\u1ea3i l\u00ean<\/p>\n<p>M\u1eb7c d\u00f9 b\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng l\u1ec7nh put \u0111\u1ec3 t\u1ea3i l\u00ean to\u00e0n b\u1ed9 th\u01b0 m\u1ee5c nh\u01b0ng l\u1ec7nh \u0111\u1ed3ng b\u1ed9 h\u00f3a c\u00f3 th\u1ec3 mang l\u1ea1i nhi\u1ec1u h\u00e0nh vi mong mu\u1ed1n h\u01a1n. \u0111\u1ed3ng b\u1ed9 h\u00f3a x\u00e1c \u0111\u1ecbnh nh\u1eefng t\u1ec7p n\u00e0o \u0111\u00e3 \u0111\u01b0\u1ee3c th\u00eam ho\u1eb7c s\u1eeda \u0111\u1ed5i v\u00e0 ch\u1ec9 t\u1ea3i nh\u1eefng t\u1ec7p \u0111\u00f3 l\u00ean. \u0110i\u1ec1u n\u00e0y c\u00f3 th\u1ec3 \u0111\u1eb7c bi\u1ec7t h\u1eefu \u00edch khi duy tr\u00ec s\u1ed1 l\u01b0\u1ee3ng l\u1edbn t\u1ec7p, ch\u1eb3ng h\u1ea1n nh\u01b0 n\u1ed9i dung c\u1ee7a m\u1ed9t trang t\u0129nh.<\/p>\n<p>Ngu\u1ed3n: https:\/\/techdocs.akamai.com\/cloud-computing\/docs\/using-s3cmd-with-object-storage<\/p>\n","protected":false},"excerpt":{"rendered":"<p>S3cmd l\u00e0 ti\u1ec7n \u00edch d\u00f2ng l\u1ec7nh m\u00e0 b\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng cho b\u1ea5t k\u1ef3 B\u1ed9 l\u01b0u tr\u1eef \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0o t\u01b0\u01a1ng th\u00edch v\u1edbi S3. C\u00e0i \u0111\u1eb7t s3cmd C\u00e1c l\u1ec7nh sau s\u1ebd c\u00e0i \u0111\u1eb7t s3cmd tr\u00ean nhi\u1ec1u h\u1ec7 \u0111i\u1ec1u h\u00e0nh ph\u1ed5 bi\u1ebfn kh\u00e1c nhau. B\u1ea1n c\u00f3 th\u1ec3 t\u00ecm th\u1ea5y c\u00e1c ph\u01b0\u01a1ng ph\u00e1p c\u00e0i \u0111\u1eb7t s3cmd<\/p>\n","protected":false},"author":1,"featured_media":36210,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[103],"tags":[],"class_list":["post-35021","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-clients-and-tooling"],"_links":{"self":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/35021","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/comments?post=35021"}],"version-history":[{"count":1,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/35021\/revisions"}],"predecessor-version":[{"id":36211,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/35021\/revisions\/36211"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media\/36210"}],"wp:attachment":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media?parent=35021"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/categories?post=35021"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/tags?post=35021"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}