rclone را در macOS راه بیندازید
rclone را با Homebrew نصب میکنید، مشخصات پارسپک را در یک Remote میگذارید و آپلود، خواندن و دانلود یک فایل کوچک را از Terminal امتحان میکنید.

پس از نصب rclone در macOS، با یک فایل کوچک مطمئن میشوید همهچیز درست است: hello.txt را با کلید tutorial/hello.txt میفرستید، فهرست و مشخصاتش را بررسی میکنید، یک کپی محلی میگیرید و سپس آن را حذف میکنید. نمای کلی این آزمون در صفحهٔ اصلی rclone است.
اگر Remote هنوز مقدار پنل ندارد، هیچ فرمانی کار نمیکند. اگر آپلود را نزدهاید، مشخصات و دانلود معمولاً آرایه خالی یا خطا میدهند.
rclone را با Homebrew نصب کنید
پس از نصب، با rclone version مطمئن شوید Terminal نسخهٔ درست را اجرا میکند.
xattr -d com.apple.quarantine ./rclone را بزنید.brew install rclone
rclone versionexamples/
├── .env.example
└── rclone/
└── run.sh # آپلود، فهرست، مشخصات، دانلود و حذف با rcloneRemote را با مقدارهای پنل بسازید
Endpoint، Region و دو کلید را در Remote میگذارید و نام Bucket را در فرمانها مینویسید. برای دیدن محل واقعی تنظیمات از rclone config file استفاده کنید؛ مسیر معمول در macOS برابر ~/.config/rclone/rclone.conf است.
examples/rclone/run.sh از متغیر محیطی استفاده میکند، نه فایل تنظیمات؛ پنج مقدار PARSPACK_S3_* را میخواند و خودش به نامهای rclone تبدیل میکند. اگر rclone config را برای استفاده تعاملی هم زدهاید، مشکلی ندارد — متغیر محیطی همیشه روی مقدار داخل فایل تنظیمات اولویت دارد.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این مقدارها را در اسکریپتهای Public قرار ندهید. اگر از rclone config برای فایل تنظیمات استفاده میکنید، همان فایل را هم جایی Commit نکنید.
Remote را پیش از انتقال فایل امتحان کنید
rclone lsd parspack:c123456
rclone lsd parspack:c123456آپلود: فایل را در باکت بگذارید
rclone copyto ./hello.txt parspack:c123456/tutorial/hello.txt
copyto دقیقاً یک فایل را با یک نام مشخص کپی میکند؛ با copy اشتباه نگیرید که مقصد را همیشه پوشه فرض میکند و اسم فایل محلی را زیر آن پوشه تکرار میکند. بعد از آپلود، rclone حجم فایل محلی را با چیزی که همان لحظه از باکت خوانده مقایسه میکند؛ اگر یکی نبود «corrupted on transfer» میدهد و حداکثر سه بار دوباره میفرستد.rclone copyto ./hello.txt parspack:c123456/tutorial/hello.txt-v استفاده کنید)اگر tutorial/hello.txt از قبل وجود داشته باشد، Upload جدید همان مسیر را جایگزین میکند.
فهرست فایلها و مشخصات یک فایل
بعد از آپلود، اول ببینید فایل در فهرست هست؛ بعد حجم و نوع را بدون دانلود بخوانید.
rclone lsd روی یک سطح بالاتر از هم جدا کنید.lsjson را با مسیری بزنید که دقیقاً به نام فایل ختم میشود، نه اسلش؛ rclone یک آرایه تکعضوی برمیگرداند، نه یک شیء تنها — کد شما باید عضو صفرم آرایه را بخواند.rclone lsjson parspack:c123456/tutorial/rclone lsjson parspack:c123456/tutorial/hello.txt/ یعنی پوشه؛ بدون آن یعنی یک فایل دقیق.false است؛ برای پوشه true.دانلود: فایل را روی سیستم خودتان بنویسید
rclone copyto parspack:c123456/tutorial/hello.txt ./downloads/hello.txt
copyto است، فقط جهت را برعکس کردهاید: مبدأ مسیر روی باکت، مقصد مسیر محلی. پوشه مقصد اگر نباشد، rclone خودش میسازدش؛ اگر مسیر محلی از قبل با همین نام وجود داشته باشد، بدون هشدار رویش مینویسد.rclone copyto parspack:c123456/tutorial/hello.txt ./downloads/hello.txt-v استفاده کنید)حذف: نام را از باکت بردارید
rclone deletefile parspack:c123456/tutorial/hello.txt
deletefile دقیقاً یک فایل را حذف میکند. با delete اشتباه نگیرید؛ آن دستور روی مسیر پوشهای اجرا میشود و همه محتوایش را پاک میکند.rclone deletefile parspack:c123456/tutorial/hello.txt-v استفاده کنید)خطا را از مبدا پیدا کنید
اول دوباره فهرست Bucket را بگیرید. اگر همان فرمان هم خطا دارد، تنظیمات Remote یا دسترسی شبکه را بررسی کنید؛ بقیهٔ فرمانها به همان اتصال وابستهاند.
0 یعنی موفق؛ هر عدد دیگری یعنی حداقل یک فرمان شکست خورده. متن خطا همیشه روی stderr است، نه stdout — اگر خروجی را redirect کردهاید، پیام خطا در فایل شما نیست. برای دیدن چه درخواستی واقعاً رفته، -vv اضافه کنید؛ این پرچم هر HTTP request را هم نشان میدهد.| خطا | علت معمول | بررسی |
|---|---|---|
command not found: rclone | نصب کامل نشده یا Homebrew در PATH نیست | brew doctor و دوباره باز کردن ترمینال را امتحان کنید |
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 را اشتباه تایپ کردهاید | نام دقیقاً باید parspack باشد |
Timeout / connection refused | Endpoint در دسترس نیست | آدرس HTTPS پنل، بدون تغییر و بدون / انتها |
کل آزمون را یکجا اجرا کنید
اسکریپت نمونه، همان مراحل را با متغیرهای محیطی تکرار میکند. آن را از ریشهٔ پروژه اجرا کنید تا مسیرهای نسبی درست باشند.
brew install rclone
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
printf 'hello ParsPack\n' > hello.txt
rclone lsd parspack:c123456
rclone copyto ./hello.txt parspack:c123456/tutorial/hello.txt
rclone lsjson parspack:c123456/tutorial/
rclone lsjson parspack:c123456/tutorial/hello.txt
rclone copyto parspack:c123456/tutorial/hello.txt ./downloads/hello.txt
rclone deletefile parspack:c123456/tutorial/hello.txtrclone version را قبل از گزارش مشکل چک کنید؛ رفتار بین نسخههای قدیمی و جدید کمی فرق دارد.