PP مستندات فضای ابری پارس‌پک
آموزش عملی

یک Remote بسازید و اتصال را امتحان کنید

در rclone، مشخصات اتصال در یک Remote ذخیره می‌شود. یک بار آن را با Endpoint و کلیدهای پنل می‌سازید و بعد با چند فرمان مشخص، کل مسیر آپلود تا حذف را امتحان می‌کنید. اگر بعداً قرار است از sync استفاده کنید، اول همین آزمون کوچک را بدون خطا تمام کنید.

یک سناریوشش فرمانخروجی نمونهسه سیستم‌عامل
اتصال خط فرمان به فضای ذخیره‌سازی ابری
نمونه آماده اجرا در سه سیستم‌عامل
۱

قرار است چه چیزی را امتحان کنیم؟

یک فایل کوچک را می‌فرستیم، اطلاعاتش را می‌خوانیم، دوباره دانلودش می‌کنیم و بعد پاکش می‌کنیم. با همین چرخه، هم شکل آدرس‌ها روشن می‌شود و هم مجوزهای Remote.

فرض کنید روی سیستم خودتان فایلی به نام hello.txt دارید. می‌خواهید آن را در باکت خصوصی پارس‌پک با نام tutorial/hello.txt ذخیره کنید. بعد از ذخیره، باید بتوانید در فهرست ببینیدش، حجم و نوعش را بدون دانلود بخوانید، یک کپی روی سیستم خودتان بگیرید و در پایان از باکت حذفش کنید.

در rclone، مشخصات Endpoint و کلیدها زیر نامی به نام Remote ذخیره می‌شوند. اینجا نام Remote را parspack می‌گذاریم تا آدرس هر فایل به شکل parspack:bucket/key خوانده شود.

ترتیب اجرای فرمان‌ها همین است؛ اگر از وسط شروع کنید، فایل هنوز در باکت نیست و فرمان‌های بعدی یا خالی برمی‌گردند یا خطا می‌دهند.
ترتیبفرماندر این سناریو چه می‌کند
۱lsdاتصال Remote را چک می‌کند؛ پوشه‌های سطح بالای باکت را نشان می‌دهد
۲copyto (آپلود)فایل محلی ./hello.txt را با نام tutorial/hello.txt در باکت می‌گذارد
۳lsjson (فهرست)فایل‌هایی را نشان می‌دهد که مسیرشان با tutorial/ شروع می‌شود
۴lsjson (مشخصات)حجم، نوع و زمان تغییر همان یک فایل را می‌گوید؛ خود فایل را نمی‌آورد
۵copyto (دانلود)فایل را از باکت می‌گیرد و روی دیسک شما، مثلاً ./downloads/hello.txt، می‌نویسد
۶deletefileهمان نام را از باکت برمی‌دارد؛ فایل روی سیستم شما دست نمی‌خورد
!

همگام‌سازی پوشه‌ها (sync) و اتصال دائم به‌عنوان درایو (mount) در این آموزش نیست. rclone یک فرمان link برای ساخت URL موقت دارد، ولی پشتیبانی آن به هر بک‌اند S3-سازگار بستگی دارد و روی پارس‌پک اینجا تست نشده؛ اگر برنامه‌تان باید چنین لینکی به کاربر بدهد، همان جریان امضاشده را با یکی از SDKها بسازید — رفتارش مستند و تست‌شده است.

اگر کد برنامه می‌نویسید و به لینک موقت یا اتصال از داخل برنامه نیاز دارید، آموزش S3 همین Bucket را با هشت زبان برنامه‌نویسی پوشش می‌دهد.
۲

پنج مقدار لازم را یک‌جا آماده کنید

از پنل پارس‌پک، Endpoint، نام Bucket، Region، Access Key و Secret Key را بردارید. این مقدارها باید مربوط به همان سرویس و همان Bucket باشند.

شرح کامل هر مقدار — Endpoint، Bucket، Region، Access Key و Secret Key — در صفحه شروع S3 آمده است؛ همان توضیح‌ها اینجا هم صادق است. تنها چیزی که اینجا اضافه می‌شود، نام Remote است.
۱

نام Remote

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

در این آموزش نام Remote را parspack می‌گذاریم. هر فرمان با parspack:نام-باکت/مسیر شروع می‌شود. اگر اسم دیگری انتخاب کنید، فقط کافی است همان اسم را در همه فرمان‌ها هم بگذارید.
۲

Provider

به rclone می‌گوید این یک فضای S3-سازگار عمومی است، نه AWS.

مقدار Other را انتخاب کنید. اگر AWS بگذارید، rclone فرض می‌کند Endpoint شما یکی از منطقه‌های آمازون است و درخواست‌ها به جای درستی نمی‌رسند.
۳

no_check_bucket

مخصوص تنظیم rclone؛ در SDKها معادلی ندارد.

این گزینه را روشن (true) بگذارید. بدون آن، rclone قبل از هر عملیات یک HeadBucket برای چک‌کردن وجود باکت می‌فرستد. AWS این را پیاده کرده؛ خیلی از فضاهای S3-سازگار غیر از AWS این متد را ندارند و با خطا جواب می‌دهند — نتیجه این می‌شود که اولین فرمان شما با خطای اتصال شکست می‌خورد، در حالی که خود Endpoint، کلیدها و باکت هیچ مشکلی ندارند.
۳

Remote را متناسب با محل اجرا بسازید

برای کار دستی، ویزارد rclone config خواناتر است. در CI یا اسکریپت، متغیرهای محیطی امکان اجرای بدون فایل تنظیمات را می‌دهند.

۱

روش تعاملی: rclone config

برای استفاده روزمره از ترمینال شخصی خودتان

فرمان rclone config را بزنید و همین ترتیب را دنبال کنید: n برای Remote جدید، نام parspack، نوع را از فهرست طولانی سرویس‌ها s3 انتخاب کنید، Provider را Other بگذارید، Endpoint و Access Key و Secret Key را از پنل کپی کنید، Region را us-east-1 بگذارید مگر پنل چیز دیگری گفته باشد، و برای no_check_bucket جواب true بدهید. در پایان y بزنید تا ذخیره شود.
مسیر دقیق فایل تنظیمات را با rclone config file ببینید؛ روی لینوکس و macOS معمولاً ~/.config/rclone/rclone.conf است.
rclone.conf
[parspack]
type = s3
provider = Other
endpoint = https://c123456.parspack.net
access_key_id = YOUR_ACCESS_KEY
secret_access_key = YOUR_SECRET_KEY
region = us-east-1
no_check_bucket = true
۲

روش متغیر محیطی: برای اسکریپت و CI

بدون فایل تنظیمات؛ مشخصات اتصال فقط در محیط همان Process قرار می‌گیرد

rclone هر تنظیم Remote را به‌شکل RCLONE_CONFIG_<REMOTE>_<KEY> هم از متغیر محیطی می‌خواند. این روش برای اسکریپت‌های نمونه همین مستندات و برای اجرای خودکار (CI) استفاده می‌شود؛ نیازی به فایل rclone.conf نیست.
terminal · export مستقیم
export RCLONE_CONFIG_PARSPACK_TYPE=s3
export RCLONE_CONFIG_PARSPACK_PROVIDER=Other
export RCLONE_CONFIG_PARSPACK_ENDPOINT=https://c123456.parspack.net
export RCLONE_CONFIG_PARSPACK_ACCESS_KEY_ID=YOUR_ACCESS_KEY
export RCLONE_CONFIG_PARSPACK_SECRET_ACCESS_KEY=YOUR_SECRET_KEY
export RCLONE_CONFIG_PARSPACK_REGION=us-east-1
export RCLONE_CONFIG_PARSPACK_NO_CHECK_BUCKET=true
چهار متغیر Endpoint، Region، Access Key و Secret Key از پنل می‌آیند. سه مقدار type، provider و no_check_bucket رفتار rclone را تعیین می‌کنند؛ نام Bucket داخل آدرس هر فرمان نوشته می‌شود. اسکریپت examples/rclone/run.sh این نگاشت را از متغیرهای PARSPACK_S3_* انجام می‌دهد.
!

هر دو روش کلید API را روی همان سیستمی نگه می‌دارند که rclone را اجرا می‌کنید. فایل rclone.conf را Commit نکنید؛ اگر متغیر محیطی استفاده می‌کنید، آن‌ها را در اسکریپت‌های Public قرار ندهید.

۴

آدرس rclone را درست بخوانید

در parspack:c123456/tutorial/hello.txt، بخش قبل از دونقطه نام Remote، بخش بعدی نام Bucket و ادامهٔ آدرس Key فایل است. اشتباه در هر یک، خطای متفاوتی می‌سازد.

در همین آموزش، فایل روی سیستم شما ./hello.txt است. داخل باکت همان محتوا با نام tutorial/hello.txt ذخیره می‌شود. اسلش داخل مسیر پوشه واقعی روی دیسک باکت نمی‌سازد؛ فقط بخشی از نام است. اگر مسیر با / تمام شود، rclone آن را «پوشه» حساب می‌کند و فهرست همان سطح را نشان می‌دهد؛ اگر بدون / باشد، دنبال یک فایل دقیق با همان نام می‌گردد.
چیزی که می‌گوییدمثال این آموزشمعنی‌اش چیست
Remoteparspackاسم کوتاهی که به تنظیمات اتصال شما اشاره می‌کند
مسیر کاملparspack:c123456/tutorial/hello.txtRemote، Bucket و Key در یک رشته
مسیر محلی./hello.txtفایل روی همین سیستم
Object Keytutorial/hello.txtنام کامل فایل داخل باکت
مسیر با اسلش انتهاparspack:c123456/tutorial/یک پوشه؛ برای فهرست‌گیری استفاده می‌شود
جایگزینیآپلود دوباره با همان مسیرمحتوای قبلی همان نام عوض می‌شود؛ نسخه جدا ساخته نمی‌شود
اگر lsjson را روی tutorial/ (با اسلش) بزنید، همه فایل‌های همان پوشه را می‌بینید. اگر همان مسیر را بدون اسلش و بدون نام فایل بزنید، rclone گیج می‌شود که پوشه می‌خواهید یا فایل؛ همیشه برای پوشه از اسلش انتها و برای فایل از نام کامل استفاده کنید.
۵

اتصال را با یک چرخهٔ کامل بسنجید

تست فقط با دیدن نام Bucket کامل نیست. یک فایل کوچک بفرستید، متادیتای آن را بخوانید، دانلودش کنید و در پایان فایل آزمایشی را پاک کنید.

اول یک فایل محلی بسازید، بعد فرمان‌ها را پشت سر هم بزنید. اگر Remote هنوز مقدار پنل ندارد، همه فرمان‌ها همان اول با خطای اتصال یا امضا شکست می‌خورند.
terminal · ساخت فایل نمونه
printf 'hello ParsPack\n' > hello.txt
۱

اول ببینید Remote می‌تواند Bucket را بخواند

rclone lsd parspack:c123456

این فرمان پوشه‌های سطح بالای باکت را نشان می‌دهد؛ هنوز کاری با فایل شما ندارد. اگر Endpoint یا کلیدها اشتباه باشد، همین‌جا خطا می‌گیرید — نه در آپلود. اگر باکت تازه ساخته شده و هنوز فایلی ندارد، خروجی خالی طبیعی است.
خروجی نمونه
-1 2026-08-18 10:00:00 -1 tutorial
۲

آپلود: فایل را در باکت بگذارید

rclone copyto ./hello.txt parspack:c123456/tutorial/hello.txt

copyto دقیقاً یک فایل را با یک نام مشخص کپی می‌کند؛ با copy اشتباه نگیرید که مقصد را همیشه پوشه فرض می‌کند. بعد از آپلود، rclone خودش حجم فایل را با نسخه روی باکت مقایسه می‌کند؛ اگر یکی نبود، خطای «corrupted on transfer» می‌دهد و دوباره تلاش می‌کند.
خروجی نمونه
(بدون خروجی؛ یعنی موفق بوده — برای دیدن جزئیات از -v استفاده کنید)
۳

فهرست: ببینید فایل ذخیره شده

rclone lsjson parspack:c123456/tutorial/

اسلش انتهای مسیر یعنی «این یک پوشه است»؛ خروجی یک آرایه JSON از فایل‌های همان پوشه است، نه خود فایل‌ها. اگر آرایه خالی بود، یا آپلود انجام نشده یا مسیر را اشتباه نوشته‌اید.
خروجی نمونه
[ {"Path":"hello.txt","Name":"hello.txt","Size":15,"MimeType":"text/plain","ModTime":"2026-08-18T10:00:00.000000000Z","IsDir":false} ]
۴

مشخصات: حجم و نوع را بدون دانلود بخوانید

rclone lsjson parspack:c123456/tutorial/hello.txt

همان فرمان فهرست است، فقط این‌بار مسیر دقیقاً به نام فایل ختم می‌شود، نه اسلش. rclone یک آرایه تک‌عضوی برمی‌گرداند. اگر آن مسیر فایل نباشد یا وجود نداشته باشد، آرایه خالی می‌گیرید.
خروجی نمونه
[ {"Path":"hello.txt","Name":"hello.txt","Size":15,"MimeType":"text/plain","ModTime":"2026-08-18T10:00:00.000000000Z","IsDir":false} ]
۵

دانلود: فایل را روی سیستم خودتان بنویسید

rclone copyto parspack:c123456/tutorial/hello.txt ./downloads/hello.txt

همان copyto است، فقط جهت را برعکس کرده‌اید: مبدأ حالا مسیر روی باکت است، مقصد مسیر محلی. پوشه downloads اگر نباشد، rclone خودش می‌سازدش.
خروجی نمونه
(بدون خروجی؛ فایل در ./downloads/hello.txt نوشته شده است)
۶

حذف: نام را از باکت بردارید

rclone deletefile parspack:c123456/tutorial/hello.txt

deletefile دقیقاً یک فایل را حذف می‌کند. با delete اشتباه نگیرید؛ آن دستور روی یک مسیر پوشه‌ای اجرا می‌شود و همه محتوایش را پاک می‌کند — اگر به‌جای deletefile از delete روی مسیر پوشه استفاده کنید، ممکن است بیشتر از یک فایل حذف شود.
خروجی نمونه
(بدون خروجی؛ یعنی موفق بوده)
۶

عیب‌یابی را از اولین فرمان شروع کنید

اگر فهرست Bucket باز نمی‌شود، هنوز نوبت بررسی فرمان آپلود نیست. متن کامل خطا را بخوانید و Endpoint، Region، کلیدها و ساعت سیستم را به‌ترتیب چک کنید.

وقتی lsd خطا می‌دهد، ابتدا خود اتصال را درست کنید: Endpoint، Provider، Region و دو کلید را با پنل مقایسه کنید. بررسی نام پوشه و فایل زمانی مفید است که Remote بتواند باکت را ببیند.
خطاعلت معمولبررسی
directory not foundمسیر روی باکت وجود ندارد یا اسلش انتها را فراموش کرده‌ایدابتدا با lsd ریشه باکت را چک کنید
NoSuchBucketنام Bucket با پنل یکی نیستبخش بعد از parspack: در مسیر
SignatureDoesNotMatch / AccessDeniedکلیدها یا Region درست نیست، یا Provider را AWS گذاشته‌ایدaccess_key_id، secret_access_key، region، provider = Other
didn't find section in config fileنام Remote را اشتباه تایپ کرده‌ایدنام دقیقاً باید همان چیزی باشد که با rclone config ساختید — اینجا parspack
Timeout / connection refusedEndpoint در دسترس نیستآدرس HTTPS پنل، بدون تغییر و بدون / انتها
Local file not foundمسیر فایل روی سیستم اشتباه استمسیر را نسبت به جایی که فرمان را اجرا کرده‌اید چک کنید
rclone برای دانلود و آپلود لینک موقت امضاشده مثل S3 SDK نمی‌سازد؛ اگر برنامه‌تان باید چنین لینکی به کاربر بدهد، آن بخش را از صفحه S3 · لینک امضاشده بردارید.
۷

ادامه را براساس سیستم‌عامل پیش ببرید

مفهوم‌ها در هر سه پلتفرم یکی است؛ صفحهٔ هر سیستم‌عامل، روش نصب، محل فایل تنظیمات و فرمان‌های آمادهٔ کپی را دارد.

صفحهٔ سیستم‌عامل انتخابی، آزمون hello.txt را با فرمان‌های مناسب همان محیط کامل می‌کند. پس از موفقیت آپلود، فهرست و دانلود، مسیر آزمایشی را با مسیر واقعی کارتان جایگزین کنید.
project tree
examples/
├── .env.example
└── rclone/
  └── run.sh      # آپلود، فهرست، مشخصات، دانلود و حذف با rclone
صفحه سیستم‌عامل خود را باز کنید.نصب، تنظیم Remote و شش فرمان با نحو همان سیستم‌عامل آن‌جاست.