s3cmd یک ابزار خط فرمان برای ساخت باکِت‌های s3، ارسال، استخراج و مدیریت داده برای منبع ذخیره Amazon s3 است. در این مطلب به نحوه استفاده و نصب ابزار s3cmd در سیستم‌عامل‌های CentOS، RHEL، OpenSUSE، اوبونتو، دبیان و LinuxMint خواهیم پرداخت. همچنین به وسیله خط فرمان در چند گام ساده، باکت‌های s3 را مدیریت می‌کنیم. البته برای نصب s3cmd در ویندوز سرور رویکردهای دیگری وجود دارد که در فرصت مناسب به آن می‌پردازیم. ضمناً این امکان وجود دارد که باکت s3 به عنوان یک درایو محلی در سیستم با استفاده از فرمت S3FS در FUSE شناخته شود.

آشنایی با ابزار s3cmd در لینوکس

ابزار s3cmd در لینوکس برای مدیریت باکت‌های s3

نصب 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

امیدواریم که این مطلب نیز مورد توجه شما قرار گرفته باشد. برای اطلاعات بیشتر در این زمینه همچنان وبلاگ آریانت را دنبال کنید.