پرش به مطلب اصلی

اتصال به آبجکت استوریج از طریق Rclone

Rclone یک ابزار خط فرمان ساده و قدرتمند است که برای کار با سرویس‌های ذخیره‌سازی ابری استفاده می‌شود. این ابزار از سرویس‌های زیادی مثل آبجکت استوریج آبالون پشتیبانی می‌کند و امکان آپلود و دانلود فایل‌ها را فراهم می‌سازد. یکی از قابلیت‌های مهم آن همگام‌سازی (Sync) است؛ یعنی می‌توانید یک پوشه روی سیستم خود را طوری تنظیم کنید که محتوای آن همیشه با یک باکت در آبالون یکسان بماند. به این ترتیب هر فایلی که اضافه یا حذف شود یا تغییر داده شود، به‌صورت خودکار در باکت هم اعمال می‌شود.

نصب Rclone

برای استفاده از Rclone در لینوکس، مک و ویندوز می‌توانید از روش‌های زیر اقدام کنید.

نصب روی Linux

برای دانلود و نصب خودکار آخرین نسخه Rclone روی توزیع‌های مختلف لینوکس می‌توانید دستور زیر را وارد کنید.

 curl https://Rclone.org/install.sh | sudo bash

نصب روی macOS

برای نصب روی مک دو راهکار وجود دارد. ساده‌ترین راهکار استفاده از Homebrew است.

 brew install Rclone

در صورت دسترسی نداشتن به Homebrew می‌توانید آخرین نسخه را از وب‌سایت Rclone دانلود کرده و فایل باینری را در مسیر /usr/local/bin/ کپی کنید.

نصب روی Windows

برای نصب Rclone روی ویندوز مراحل زیر را انجام دهید.

۱. به صفحه دانلود Rclone بروید.

۲. نسخه مناسب (۳۲ یا ۶۴ بیتی) را دانلود کنید.

۳. فایل ZIP را استخراج کنید.

۴. فایل Rclone.exe را به یک مسیر دلخواه (مثلاً C:\Program Files\Rclone) منتقل کنید.

۵. مسیر مربوطه را به Path سیستم اضافه کنید تا در Command Prompt یا PowerShell در دسترس باشد. برای این کار مراحل زیر را دنبال کنید:

  • کلیدهای Win + S را فشار دهید و عبارت Environment Variables را جستجو کنید.

  • روی گزینه Edit the system environment variables کلیک کنید.

  • در پنجره باز شده، روی دکمه Environment Variables کلیک کنید.

  • در بخش System variables، گزینه Path را انتخاب کرده و روی Edit کلیک کنید.

  • روی New کلیک کرده و مسیری که فایل Rclone.exe را در آن قرار دادید وارد کنید (مثلاً C:\Program Files\Rclone). در نهایت روی OK کلیک کنید.

بعد از نصب در هر یک از سیستم‌عامل‌ها می‌توانید با دستور زیر مطمئن شوید Rclone درست نصب شده است:

rclone version

پیکربندی Rclone

برای پکیربندی،‌ ابتدا باید فایل تنظیمات را پیدا کنید.

پیدا کردن فایل تنظیمات Rclone

برای مشاهده مسیر فایل پیکربندی، دستور زیر را اجرا کنید:

rclone config file

اگر فایل پیکربندی وجود نداشته باشد، خروجی مشابه زیر نمایش داده می‌شود.

Configuration file doesn't exist, but rclone will use this path:
/home/user/.config/rclone/rclone.conf

ایجاد فایل پیکربندی

برای ساخت فایل پیکربندی در لینوکس، دستور زیر را اجرا کنید.

nano /home/user/.config/rclone/rclone.conf

سپس محتوای زیر را در فایل قرار دهید. مقادیر YOUR_ACCESS_KEY ،YOUR_SECRET_ACCESS_KEY و ENDPOINT_URL را با اطلاعات دریافتی از آبالون جایگزین کنید:

[abalon]
type = s3
provider = Other
env_auth = false
access_key_id = YOUR_ACCESS_KEY
secret_access_key = YOUR_SECRET_ACCESS_KEY
region =
endpoint = ENDPOINT_URL
location_constraint =
acl = private
server_side_encryption =
storage_class =

فایل را ذخیره کرده و از ویرایشگر خارج شوید. برای این‌کار از ctrl+x استفاده کنید و سپس با فشردن کلید «y» فرایند ذخیره‌سازی را تایید کنید.

فایلی که در بالا ساختیم شامل تنظیمات زیر است:

[abalon]: ابتدای فایل پیکربندی با یک عنوان برای سرویس آبجکت استوریج شروع می‌شود. می‌توانید از هر نامی استفاده کنید.

type: نوع سرویس‌دهنده را مشخص می‌کند. برای مثال، در سرویس‌های سازگار با S3 مقدار آن باید s3 باشد.

provider: نام ارائه‌دهنده S3 را تعیین می‌کند. مقدار Other برای هر سرویس‌دهنده‌ای است که به‌طور رسمی در وب‌سایت rclone تعریف نشده اما با S3 سازگار است. (مانند آبالون)

env_auth: اگر فعال باشد، مجوزهای دسترسی S3 را از متغیرهای محیطی سیستم (environment variables) می‌خواند. این گزینه تنها زمانی کاربرد دارد که شما access_key_id و secret_access_key را به‌طور مستقیم در فایل تنظیم نکرده باشید. این متغیرهای محیطی باید پیش از اجرای Rclone در محیط سیستم‌عامل تعریف شده باشند. تعریف آن‌ها می‌تواند به‌صورت دستی توسط کاربر یا مدیر سیستم انجام شود (برای مثال از طریق تنظیمات Environment Variables در ویندوز یا فایل‌هایی مانند .bashrc و .zshrc در لینوکس و macOS) یا به‌صورت خودکار توسط ابزارهایی مانند Docker، اسکریپت‌های اجرایی یا سامانه‌های CI/CD در زمان اجرای برنامه تنظیم شود.

access_key_id: کلید دسترسی (Access Key) شما برای اتصال به سرویس آبجکت استوریج.

secret_access_key: کلید مخفی (Secret Key) مرتبط با Access Key که برای احراز هویت استفاده می‌شود.

region: ناحیه‌ای را که باید به آن متصل شوید مشخص می‌کند. در سرویس‌های سازگار با S3 معمولاً خالی گذاشته می‌شود. برای سرویس‌های آبالون این مقدار را خالی بگذارید.

endpoint: آدرس هاست یا نقطه‌ی پایانی (API Endpoint) سرویس S3 را مشخص می‌کند. اطلاعات مرتبط با endpoint توسط آبالون در اختیار شما قرار می‌گیرد.

location_constraint: هنگام ایجاد یک باکت برای مشخص کردن موقعیت (region) به‌کار می‌رود. در سرویس‌های سازگار با S3 می‌توان آن را خالی گذاشت.

acl: تعیین می‌کند که سطح دسترسی (Permissions) پیش‌فرض فایل‌ها چه باشد. مقدار private یعنی مالک فضای ذخیره‌سازی دسترسی کامل دارد و هیچ کاربر دیگری مجاز به دسترسی نیست. به‌طور کلی پیشنهاد می‌شود از حالت private استفاده کنید، مگر در مواقعی که می‌خواهید فایل‌ها را از طریق لینک عمومی به اشتراک بگذارید. در این حالت‌ها می‌توانید مقدار public-read را قرار دهید.

server_side_encryption: این گزینه تعیین می‌کند که داده‌های ذخیره‌شده در باکت S3 با چه الگوریتم یا استانداردی در سمت سرور رمزگذاری شوند (مانند AES256 یا aws:kms). در صورتی که مقدار مشخصی برای آن تعیین نشود، رمزگذاری سمت سرور انجام نخواهد شد مگر اینکه تنظیمات پیش‌فرض سرویس‌دهنده آن را اعمال کند. در سرویس‌های سازگار با S3، بسته به پشتیبانی آن سرویس از رمزگذاری سمت سرور، می‌توان این گزینه را خالی گذاشت یا مقدار مناسب را مطابق مستندات آن سرویس انتخاب کرد.

storage_class: این گزینه نوع کلاس ذخیره‌سازی داده‌ها را مشخص می‌کند و بسته به نیاز کاربر به عملکرد، سطح دسترسی، ماندگاری اطلاعات و هزینه، قابل تنظیم است. مقادیر رایج شامل STANDARD ،REDUCED_REDUNDANCY ،STANDARD_IA و GLACIER هستند. در صورتی که مقدار مشخصی برای این گزینه تعیین نشود، سرویس S3 یا سرویس‌های سازگار با آن معمولاً از کلاس پیش‌فرض STANDARD استفاده می‌کنند. برای سرویس‌های آبالون مقدار پیش‌فرض STANDARD را انتخاب کنید.

تست عملکرد Rclone با یک مثال ساده

در این مثال قابلیت Sync کردن یک پوشه با یک باکت را تست می‌کنیم.

ابتدا یک پوشه بسازید و وارد آن شوید.

mkdir tmp
cd tmp

فرض می‌کنیم پوشه‌ی tmp خالی است. سه فایل را داخل آن ایجاد کنید:

echo "hello rclone" > test1.txt
echo "hello rclone" > test2.txt
echo "hello rclone" > test3.txt

ساخت باکت جدید

برای ساخت باکت جدید با استفاده از Rclone می‌توانید دستور زیر را وارد کنید.

rclone mkdir abalon:mybucket

در این مثال:

abalon: نامی که در ابتدای فایل پیکربندی برای دسترسی به سرویس آبجکت استوریج تعریف کردیم.

mybucket: نام باکت جدیدی که قصد ساختن‌ش را داریم.

کپی کردن یک فایل در باکت

حال فایل test1.txt که قبلا ساختیم را داخل باکت جدید آپلود کنید:

rclone copy test1.txt abalon:mybucket

لیست‌گیری از محتوای باکت

دستور زیر نشان می‌دهد که فایل test1.txt در باکت وجود دارد و حجم آن ۱۳ بایت است.

rclone ls abalon:mybucket

خروجی:

13 test1.txt

حال فایل test1.txt را از سیستم خود حذف کنید.

rm test1.txt

توجه کنید که فایل با وجود حذف شدن در فضای محلی سیستم، هنوز در باکت باقی مانده است. با استفاده از دستور زیر می‌توانید محتویات داخل باکت را مشاهده کنید:

rclone ls abalon:mybucket

خروجی

13 test1.txt

همگام‌سازی پوشه با باکت

با اجرای دستور sync، پوشه محلی و باکت با یکدیگر هماهنگ می‌شوند. در این حالت فایل test1.txt که از سیستم حذف شده بود، از باکت هم حذف خواهد شد و دو فایل دیگر جایگزین آن می‌شوند.

rclone sync . abalon:mybucket

توجه داشته باشید که ما این دستور را از داخل دایرکتوری tmp که در مراحل اول ساختیم انجام می‌دهیم. در نتیجه علامت . در دستور بالا، به دایرکتوری کنونی که در آن حضور دارید اشاره می‌کند.

بررسی نتیجه همگام‌سازی

بعد از همگام‌سازی حال یکبار دیگر محتویات داخل باکت را مشاهده می‌کنیم.

rclone ls abalon:mybucket

خروجی

13 test2.txt
13 test3.txt

همگام‌سازی باکت‌ها با همدیگر

شما می‌توانید همان‌گونه که یک پوشه محلی را با باکت همگام کردید، دو باکت را نیز با همدیگر همگام کنید. برای این کار کافی‌ست دستور زیر را وارد کنید.

rclone sync abalon:mybucket1 abalon:mybucket2

اگر باکت‌های‌تان در دو سرویس آبجکت استوریج متفاوت قرار دارد می‌توانید مشخصات آبجکت استوریج دیگرتان را نیز در فایل کانفیگ به ترتیب وارد کنید. برای مثال:

[abalon-private-1]
type = s3
provider = Other
env_auth = false
access_key_id = SAMPLE_KEY1
secret_access_key = SAMPLE_SECRET_KEY1
region =
endpoint = ENDPOINT_URL_1
location_constraint =
acl = private
server_side_encryption =
storage_class =

[abalon-public-2]
type = s3
provider = Other
env_auth = false
access_key_id = SAMPLE_KEY2
secret_access_key = SAMPLE_SECRET_KEY2
region =
endpoint = ENDPOINT_URL_2
location_constraint =
acl = public-read
server_side_encryption =
storage_class =

راهنمای دستورات پرکاربرد Rclone

عملکرد دستوردستور
نمایش نسخه و اطلاعات بیلد Rclonerclone version
نمایش لیست ریموت‌های کانفیگ‌شدهrclone listremotes
لیست کردن فایل‌های موجود در یک باکتrclone ls remote-name:mybucket
نمایش جزئیات کامل فایل‌ها شامل سایز و تاریخrclone lsl remote-name:mybucket
کپی یک فایل از سیستم محلی به باکتrclone copy test.txt remote-name:mybucket
کپی کامل یک پوشه به باکتrclone copy ./myfolder remote-name:mybucket
دانلود یک فایل از باکت به سیستم محلیrclone copy remote-name:mybucket/test.txt ./
همگام‌سازی پوشه محلی با باکت (local → bucket)rclone sync ./localfolder remote-name:mybucket
همگام‌سازی باکت با پوشه محلی (bucket → local)rclone sync remote-name:mybucket ./localfolder
بررسی تفاوت‌ها بین فایل‌های محلی و باکتrclone check ./localfolder remote-name:mybucket
حذف یک فایل مشخص از باکتrclone delete remote-name:mybucket/test.txt
حذف کل محتوای یک باکتrclone purge remote-name:mybucket
ایجاد یک پوشه جدید در باکتrclone mkdir remote-name:mybucket/newdir
حذف یک پوشه خالی از باکتrclone rmdir remote-name:mybucket/newdir
نمایش ساختار فایل‌ها در باکت به صورت درختیrclone tree remote-name:mybucket
مانت کردن باکت به عنوان فایل‌سیستم در سیستم میزبانrclone mount remote-name:mybucket ~/mountpoint