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 به شکل زیر ابداع کردیم:
s3://BUCKET or s3://BUCKET/OBJECT
باکتها
باکتها (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 با طول حداکثر ۱۰۲۴ بایت باشند. جالب اینجاست که نام شیء میتواند شامل کاراکتر اسلش (/) باشد، بنابراین my/funny/picture.jpg یک نام شیء معتبر است. توجه داشته باشید که هیچ دایرکتوری یا سطلی به نامهای my و funny وجود ندارد – در واقع یک نام شیء واحد به نام my/funny/picture.jpg است و S3 اصلاً اهمیتی نمیدهد که شبیه یک ساختار دایرکتوری باشد.
URI کامل چنین تصویری میتواند، به عنوان مثال، این باشد:
s3://my-bucket/my/funny/picture.jpg
فایلهای عمومی در مقابل خصوصی
فایلهای ذخیره شده در 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:
در اوبونتو/دبیان:
sudo apt-get update sudo apt-get install s3cmd
در CentOS/RHEL:
sudo yum install s3cmd
در macOS (با استفاده از Homebrew):
brew install s3cm
نصب از طریق pip (Python Package Manager):
اگر پایتون و pip نصب شدهاند، میتوانید s3cmd را از طریق pip نصب کنید:
pip install s3cmd
برای ویندوز:
نصب با استفاده از pip:
pip install s3cmd
جایگزین — استفاده از Chocolatey:
اگر Chocolatey را نصب کردهاید، دستور زیر را اجرا کنید:
choco install s3cmd
پیکربندی
برای شروع استفاده از s3cmd، باید آن را با AWS خود پیکربندی کنید. اعتبارنامهها:
s3cmd –configure
از شما خواسته میشود کلید دسترسی AWS، کلید مخفی و برخی پارامترهای دیگر را وارد کنید.
مثال پیکربندی:
New settings: Access Key: 8d384-....-8b06f Secret Key: GCOSU-....-b3P Default Region: arc-is-haf-1 S3 Endpoint: s3.arc-is-haf-1.genesiscloudusercontent.com DNS-style bucket+hostname:port template for accessing a bucket: s3.arc-is-haf-1.genesiscloudusercontent.com/%(bucket) Encryption password: Path to GPG program: /opt/homebrew/bin/gpg Use HTTPS protocol: True HTTP Proxy server name: HTTP Proxy server port: 0
دستورات رایج
۱. ایجاد یک سطل:
یک سطل جدید با نام مشخص شده در S3 ایجاد میکند.
s3cmd mb s3://your-bucket-name
۲. حذف یک سطل:
یک سطل را از S3 حذف میکند (برای حذف سطل باید خالی باشد).
s3cmd rb s3://your-bucket-name
۳. فهرست سطلها و اشیاء:
لیست همه سطلها:
s3cmd ls
لیست اشیاء در یک سطل خاص:
s3cmd ls s3://your-bucket-name/
۴. آپلود فایلها به S3:
یک فایل را از سیستم محلی شما به سطل S3 مشخص شده آپلود میکند.
s3cmd put your-file.txt s3://your-bucket-name/
۵. دانلود فایلها از S3:
یک فایل را از سطل S3 در یک دایرکتوری محلی دانلود میکند.
s3cmd get s3://your-bucket-name/your-file.txt local-path/
۶. حذف فایلها از S3:
یک فایل خاص را از سطل S3 حذف میکند.
s3cmd del s3://your-bucket-name/your-file.txt
۷. همگامسازی دایرکتوری محلی با S3:
برای همگامسازی یک دایرکتوری محلی با سطل S3:
s3cmd sync /local/directory/ s3://your-bucket-name/
برای همگامسازی از S3 به دایرکتوری محلی شما:
s3cmd sync s3://your-bucket-name/ /local/directory/
جمعبندی
s3cmd ابزاری قدرتمند برای هر کسی است که با Amazon S3 کار میکند و یک رابط خط فرمان آسان برای مدیریت وظایف ذخیرهسازی ارائه میدهد. چه در حال آپلود، دانلود، همگامسازی یا مدیریت باکتها و فایلها باشید، s3cmd این عملیات را تنها با چند دستور ساده میکند. پس از پیکربندی با اعتبارنامههای AWS شما، به یک ابزار همهکاره برای توسعهدهندگان، مدیران سیستم و مهندسان ابری تبدیل میشود. با تسلط بر دستورات رایج، میتوانید محیط S3 خود را به طور مؤثر مدیریت کنید. این امر s3cmd را به بخشی ارزشمند از مجموعه ابزار شما تبدیل میکند.