اتصال به آبجکت استوریج از طریق 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
| عملکرد دستور | دستور |
|---|---|
| نمایش نسخه و اطلاعات بیلد Rclone | rclone 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 |