s3cmd یک ابزار خط فرمان برای ساخت باکِتهای s3، ارسال، استخراج و مدیریت داده برای منبع ذخیره Amazon s3 است. در این مطلب به نحوه استفاده و نصب ابزار s3cmd در سیستمعاملهای CentOS، RHEL، OpenSUSE، اوبونتو، دبیان و LinuxMint خواهیم پرداخت. همچنین به وسیله خط فرمان در چند گام ساده، باکتهای s3 را مدیریت میکنیم. البته برای نصب s3cmd در ویندوز سرور رویکردهای دیگری وجود دارد که در فرصت مناسب به آن میپردازیم. ضمناً این امکان وجود دارد که باکت s3 به عنوان یک درایو محلی در سیستم با استفاده از فرمت S3FS در FUSE شناخته شود.
نصب s3cmd در لینوکس
ابزار s3cmd در توزیعهای لینوکس CentOS، CentOS و اوبونتو به صورت پیشفرض در منابع rpm وجود دارد. بر این اساس، میتوانید به راحتی آن را با استفاده از فرمانهای زیر نصب کنید.
در CentOS/RHEL داریم:
yum install s3cmd
در اوبونتو / دبیان:
sudo apt-get install s3cmd
در SUSE لینوکس اینترپرایز سرور 11:
zypper addrepo http://s3tools.org/repo/SLE_11/s3tools.repo zypper install s3cmd
نصب آخرین نسخه s3cmd با استفاده از کد منبع
در صورتی که نتوانید از طریق برنامههای مدیریت بستههای سیستمعاملتان به آخرین نسخه ابزار s3cmd دست پیدا کنید، میتوانید این کار را با استفاده از کد منبع نیز امتحان کنید. با بازدید از این آدرس و یا فرمان زیر میتوانید آخرین نسخه s3cmd را دریافت نمایید.
wget https://sourceforge.net/projects/s3tools/files/s3cmd/2.0.1/s3cmd-2.0.1.tar.gz tar xzf s3cmd-2.0.1.tar.gz
حالا میتوانید با کمک فرمان زیر و از طریق فایلهای منبع، آن را نصب کنید.
cd s3cmd-2.0.1 sudo python setup.py install
تنظیم محیط s3cmd
برای تنظیم s3cmd میتوانیم درخواست Access Key و Secret Key از حساب کاربری S3 Amazon داشته باشیم. این کلیدهای امنیتی را میتوانید از صفحه aws securityCredentials دریافت کنید. در اینجا از شما خواسته میشود که به حساب کاربری آمازون خود وارد شوید.
پس از دریافت این کلیدها، تنظیمات ابزار s3cmd را با استفاده از فرمان زیر انجام دهید.
# s3cmd --configure
مقادیر جدید وارد کنید و یا با زدن دکمه Enter، مقادیر پیشفرض را تأیید نمایید. همچنین به راهنمای کاربری برای توضیحات بیشتر در مورد گزینهها توجه کنید.
Enter new values or accept defaults in brackets with Enter. Refer to user manual for detailed description of all options. Access key and Secret key are your identifiers for Amazon S3 Access Key: xxxxxxxxxxxxxxxxxxxxxx Secret Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Encryption password is used to protect your files from reading by unauthorized persons while in transfer to S3 Encryption password: xxxxxxxxxx Path to GPG program [/usr/bin/gpg]: When using secure HTTPS protocol all communication with Amazon S3 servers is protected from 3<sup>rd</sup> party eavesdropping. This method is slower than plain HTTP and can’t be used if you’re behind a proxy Use HTTPS protocol [No]: Yes New settings: Access Key: xxxxxxxxxxxxxxxxxxxxxx Secret Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Encryption password: xxxxxxxxxx Path to GPG program: /usr/bin/gpg Use HTTPS protocol: True HTTP Proxy server name: HTTP Proxy server port: 0 Test access with supplied credentials? [Y/n] Y Please wait, attempting to list all buckets… Success. Your access key and secret key worked fine J Now verifying that encryption works… Success. Encryption and decryption worked fine J Save settings? [y/N] y Configuration saved to ‘/root/.s3cfg’
موارد استفاده ابزار خط فرمان s3cmd
وقتی تنظیمات به اتمام رسید، میتوانید استفاده از s3cmd را شروع کنید. این ابزار برای منظورهای زیر میتواند مورد استفاده قرار گیرد.
۱) تهیه لیست از تمام باکتهای S3
از فرمان زیر برای تهیه لیست از تمام باکتهای S3 در حساب کاربری aws خودتان استفاده کنید.
# s3cmd ls
۲) ایجاد باکت جدید
برای ساخت یک باکت جدید در Amazon s3 از فرمان زیر کمک بگیرید. این فرمان موجب ساخت یک باکت جدید با نام ariaservice در حساب کاربری S3 خواهد شد.
# s3cmd mb s3://ariaservice Bucket 's3://ariaservice/' created
۳) ارسال فایل در باکت
فرمان موجب ارسال فایلی به نام file.txt به باکت s3 میشود.
# s3cmd put file.txt s3://ariaservice/
file.txt -> s3://ariaservice/file.txt [1 of 1]
190216 of 190216 100% in 0s 1668.35 kB/s done
[/php]
۴) ارسال دایرکتوری در باکت
در صورتی که بخواهیم کل دایرکتوری را آپلود کنیم، از گزینه -r استفاده خواهیم کرد.
# s3cmd put -r backup s3://ariaservice/ backup/file1.txt -> s3://ariaservice/backup/file1.txt [1 of 2] 9984 of 9984 100% in 0s 18.78 kB/s done backup/file2.txt -> s3://ariaservice/backup/file2.txt [2 of 2] 0 of 0 0% in 0s 0.00 B/s done
حتماً دقت کنید که علامت اسلش یا / بعد از عنوان دایرکتوری (مثلاً backup/) نداشته باشید. در غیر این صورت، فقط محتوای این دایرکتوری ارسال خواهد شد.
# s3cmd put -r backup/ s3://ariaservice/ backup/file1.txt -> s3://ariaservice/file1.txt [1 of 2] 9984 of 9984 100% in 0s 21.78 kB/s done backup/file2.txt -> s3://ariaservice/file2.txt [2 of 2] 0 of 0 0% in 0s 0.00 B/s done
۵) لیست دادههای باکت s3
گزینه ls در ابزار s3cmd موجب تهیه لیست از تمام آبجکتهای باکت s3 میشود.
# s3cmd ls s3://ariaservice/ DIR s3://ariaservice/backup/ 2013-09-03 10:58 190216 s3://ariaservice/file.txt
۶) دریافت فایل از باکت
گاهی اوقات لازم است که از باکت s3 فایل دانلود کنید. در این صورت از فرمان زیر استفاده خواهیم کرد.
# s3cmd get s3://ariaservice/file.txt
s3://ariaservice/file.txt -> ./file.txt [1 of 1]
4 of 4 100% in 0s 10.84 B/s done
[/php]
۷) حذف داده از باکت S3
برای حذف فایلها و فولدرهای باکت s3 از فرمانهای زیر استفاده میکنیم.
Removing file from s3 bucket # s3cmd del s3://ariaservice/file.txt File s3://ariaservice/file.txt deleted Removing directory from s3 bucket # s3cmd del s3://ariaservice/backup File s3://ariaservice/backup deleted
۸) حذف باکت S3
اگر به باکت S3 احتیاجی نداشته باشیم، میتوانیم بهراحتی با استفاده از فرمان زیر آن را حذف کنیم. البته حتماً قبل از پاککردن باکت، از خالیبودن آن مطمئن شوید.
# s3cmd rb s3://ariaservice ERROR: S3 error: 409 (BucketNotEmpty): The bucket you tried to delete is not empty
پیغام خطای بالا به خاطر خالی نبودن باکت s3 است.
برای حذف باکت، ابتدا تمام آبجکتهای داخل آن را پاک کنید و سپس دوباره فرمان را به کار بگیرید.
# s3cmd rb s3://ariaservice Bucket 's3://ariaservice/' removed
امیدواریم که این مطلب نیز مورد توجه شما قرار گرفته باشد. برای اطلاعات بیشتر در این زمینه همچنان وبلاگ آریانت را دنبال کنید.