S3cmd چیست؟
S3cmd یک ابزار و کلاینت خط فرمان رایگان برای آپلود، بازیابی و مدیریت دادهها در Amazon S3 و سایر ارائهدهندگان خدمات ذخیرهسازی ابری است که از پروتکل S3 استفاده میکنند، مانند Google Cloud Storage یا DreamHost DreamObjects. این ابزار برای کاربران حرفهای که با برنامههای خط فرمان آشنا هستند، بسیار مناسب است. همچنین برای batch scripts و بکاپگیری خودکار به S3، که از cron و غیره استفاده میکنند، ایدهآل است.
S3cmd با زبان پایتون نوشته شده و یک پروژه متنباز است که تحت مجوز عمومی GPLv2 در دسترس و برای استفاده تجاری و خصوصی رایگان است. شما فقط باید برای استفاده از فضای ذخیرهسازی آنها به آمازون هزینه بپردازید.
از زمان اولین انتشار S3cmd در سال ۲۰۰۸، ویژگیها و گزینههای زیادی به آن اضافه شده است… که به تازگی بیش از ۶۰ گزینه خط فرمان، از جمله آپلودهای چند قسمتی، رمزگذاری، بکاپگیری افزایشی، همگامسازی s3، مدیریت ACL و متا دیتا، اندازه باکت S3، سیاستهای باکت و موارد دیگر را شمارش کردهایم!
آمازون S3 چیست؟
آمازون S3 یک سرویس ذخیرهسازی مدیریتشده و قابل دسترسی به اینترنت ارائه میدهد که در آن هر کسی میتواند هر مقدار دادهای را ذخیره کرده و بعدا دوباره آن را بازیابی کند.
S3 یک سرویس پولی است که توسط آمازون اداره میشود. قبل از ذخیره هر چیزی در S3، باید برای یک حساب AWS (که AWS = Amazon Web Services) ثبت نام کنید تا یک جفت شناسه دریافت کنید؛ Access Key و Secret Key که باید این کلیدها را به S3cmd بدهید. آنها را مانند نام کاربری و رمز عبور برای حساب S3 خود در نظر بگیرید.
مبانی Amazon S3
فایلهای ذخیره شده در S3 اشیاء (objects) نامیده میشوند که نام آنها به طور رسمی keys است. از آنجایی که این موضوع گاهی اوقات برای کاربران گیجکننده است، ما اغلب به اشیاء به عنوان files یا remote files اشاره میکنیم. هر شی دقیقا متعلق به یک باکت (bucket) است.
برای توصیف اشیاء در ذخیرهسازی S3، یک schema شبیه URI به شکل زیر ابداع کردیم:
باکتها
باکتها (Bucket) چیزی شبیه دایرکتوریها یا پوشهها با محدودیتهایی هستند:
- هر کاربر حداکثر میتواند ۱۰۰ باکت داشته باشد،
- نام باکتها باید در بین همه کاربران S3 منحصر به فرد باشد،
- باکتها را نمیتوان در یک سلسله مراتب عمیقتر تو در تو کرد.
- نام یک باکت فقط میتواند شامل کاراکترهای الفبایی-عددی پایه به علاوه نقطه (.) و خط تیره (-) باشد. بدون فاصله، بدون حروف برجسته یا حروف UTF-8 و غیره.
استفاده از نامهای باکت سازگار با DNS ایده خوبی است. به عنوان مثال، این بدان معناست که نباید از حروف بزرگ استفاده کنید. در حالی که رعایت DNS کاملا الزامی نیست، برخی از ویژگیهای شرح داده شده در زیر برای باکتهای نامگذاری شده ناسازگار با DNS در دسترس نیستند. یک قدم دیگر، استفاده از یک نام دامنه کاملا واجد شرایط (FQDN) برای یک باکت است – که مزایای بیشتری نیز دارد.
- برای مثال “s3://–My-Bucket–” با DNS سازگار نیست.
- از طرف دیگر “s3://my-bucket” با DNS سازگار است اما FQDN نیست.
- در نهایت “s3://my-bucket.s3tools.org” با DNS سازگار است و FQDN است، البته به شرطی که شما مالک دامنه s3tools.org باشید و بتوانید رکورد دامنه را برای “my-bucket.s3tools.org” ایجاد کنید.
اشیاء (فایلهای ذخیره شده در Amazon S3)
برخلاف باکتها (سطلها)، تقریبا هیچ محدودیتی برای نام اشیاء وجود ندارد. اینها میتوانند هر رشته UTF-8 با طول حداکثر 1024 بایت باشند. جالب اینجاست که نام شیء میتواند شامل کاراکتر اسلش (/) باشد، بنابراین my/funny/picture.jpg یک نام شیء معتبر است. توجه داشته باشید که هیچ دایرکتوری یا سطلی به نامهای my و funny وجود ندارد – در واقع یک نام شیء واحد به نام my/funny/picture.jpg است و S3 اصلاً اهمیتی نمیدهد که شبیه یک ساختار دایرکتوری باشد.
URI کامل چنین تصویری میتواند، به عنوان مثال، این باشد:
فایلهای عمومی در مقابل خصوصی
فایلهای ذخیره شده در S3 میتوانند خصوصی یا عمومی باشند. فایلهای خصوصی فقط توسط کاربری که آنها را آپلود کرده است قابل خواندن هستند در حالی که فایلهای عمومی توسط هر کسی قابل خواندن هستند. علاوه بر این، فایلهای عمومی را میتوان با استفاده از پروتکل HTTP، نه فقط با استفاده از s3cmd یا ابزاری مشابه، دسترسی داشت.
ACL (لیست کنترل دسترسی) یک فایل را میتوان در زمان آپلود با استفاده از گزینههای –acl-public یا –acl-private با دستورات s3cmd put یا s3cmd sync (به پایین مراجعه کنید) تنظیم کرد.
به طور جایگزین، ACL را میتوان برای فایلهای راه دور موجود با دستور s3cmd setacl –acl-public (یا –acl-private) تغییر داد.
سرور مجازی یک ماشین مجازی کامل است که امکان انتخاب سیستم عامل و منابع را فراهم میکند.
خرید سرور مجازی در پنج موقعیت جغرافیایی ایران، ترکیه، هلند، آلمان و آمریکا با قابلیت تحویل آنی در پارسدو فراهم است.
راهنمای مبتدی برای s3cmd
ابزار s3cmd یک رابط خط فرمان همه کاره برای مدیریت اشیاء و سطلهای Amazon S3 است. این ابزار به کاربران امکان میدهد سطلها را ایجاد و حذف کنند، فایلها را آپلود، دانلود، حذف و همگامسازی کنند و پیکربندیهای S3 را مدیریت کنند. در اینجا مروری سریع بر برخی از سناریوها و نکات رایج استفاده از s3cmd داریم:
برای نصب s3cmd، میتوانید این مراحل را بر اساس سیستم عامل خود دنبال کنید:
برای لینوکس یا macOS:
نصب از طریق Package Manager:
در اوبونتو/دبیان:
در CentOS/RHEL:
در macOS (با استفاده از Homebrew):
نصب از طریق pip (Python Package Manager):
اگر پایتون و pip نصب شدهاند، میتوانید s3cmd را از طریق pip نصب کنید:
برای ویندوز:
نصب با استفاده از pip:
جایگزین — استفاده از Chocolatey:
اگر Chocolatey را نصب کردهاید، دستور زیر را اجرا کنید:
پیکربندی
برای شروع استفاده از s3cmd، باید آن را با AWS خود پیکربندی کنید. اعتبارنامهها:
از شما خواسته میشود کلید دسترسی AWS، کلید مخفی و برخی پارامترهای دیگر را وارد کنید.
مثال پیکربندی:
دستورات رایج
1. ایجاد یک سطل:
یک سطل جدید با نام مشخص شده در S3 ایجاد میکند.
2. حذف یک سطل:
یک سطل را از S3 حذف میکند (برای حذف سطل باید خالی باشد).
3. فهرست سطلها و اشیاء:
لیست همه سطلها:
لیست اشیاء در یک سطل خاص:
4. آپلود فایلها به S3:
یک فایل را از سیستم محلی شما به سطل S3 مشخص شده آپلود میکند.
5. دانلود فایلها از S3:
یک فایل را از سطل S3 در یک دایرکتوری محلی دانلود میکند.
6. حذف فایلها از S3:
یک فایل خاص را از سطل S3 حذف میکند.
7. همگامسازی دایرکتوری محلی با S3:
برای همگامسازی یک دایرکتوری محلی با سطل S3:
برای همگامسازی از S3 به دایرکتوری محلی شما:
جمعبندی
s3cmd ابزاری قدرتمند برای هر کسی است که با Amazon S3 کار میکند و یک رابط خط فرمان آسان برای مدیریت وظایف ذخیرهسازی ارائه میدهد. چه در حال آپلود، دانلود، همگامسازی یا مدیریت باکتها و فایلها باشید، s3cmd این عملیات را تنها با چند دستور ساده میکند. پس از پیکربندی با اعتبارنامههای AWS شما، به یک ابزار همهکاره برای توسعهدهندگان، مدیران سیستم و مهندسان ابری تبدیل میشود. با تسلط بر دستورات رایج، میتوانید محیط S3 خود را به طور مؤثر مدیریت کنید. این امر s3cmd را به بخشی ارزشمند از مجموعه ابزار شما تبدیل میکند.