
واجهة سطر أوامر لتخزين الكائنات المتوافق مع S3 عبر السحابات المتعددة لسرد وتصدير وتنزيل الحاويات (buckets) عبر AWS وAliyun وTencent وHuawei وغيرها، مع التصفح المجهول وفحص اكتشاف الحاويات.
中文 | English
أداة سطر أوامر للتخزين الكائني عبر السحابات المختلفة مبنية على بروتوكول S3. ملف تنفيذي واحد للتعامل مع التخزين الكائني لمزودي السحابة الرئيسيين: AWS S3، وAlibaba Cloud OSS، وTencent Cloud COS، وHuawei Cloud OBS، وBaidu Cloud BOS، وKingsoft Cloud KS3، وUCloud US3، وJD Cloud OSS، وGoogle Cloud Storage، وCloudflare R2، وScaleway، وWasabi، وDigitalOcean Spaces، وBackblaze B2، وMinIO وغيرها من الخدمات المتوافقة مع S3.
https://...، ويتعرف على نطاقات مختلف المزودين ويحلل اسم الحاوية/المنطقة؛
معاملات استعلام URL (prefix، delimiter، max-keys، continuation-token، marker، start-after)
تُستخدم مباشرة كشروط تصفية، على غرار aws-s3-bucket-browserhttps://files.example.com/mybucket/)، ويحللها تلقائيًا بنمط path-style، ويمكن سردها وتنزيلها بتمرير S3 API مباشرة?token=abc لبوابة المصادقة) تُحقن تلقائيًا في
كل طلب API (السرد/التنزيل/الرفع/التوقيع المسبق)، وذلك قبل توقيع SigV4-d التي تتطلب مسحًا كاملًا تتسارع مئات المرات)txt / csv / xlsx / yaml / markdown (--export)cp -r ينزّل كل الملفات المطابقة وفق --include/--exclude/--prefix، مع الحفاظ على بنية أدلة المفاتيحfind يكتشف بشكل جماعي (عدة حاويات من سطر الأوامر/المدخل القياسي) في أي تخزين سحابي توجد الحاوية،
ويدعم أسماء الحاويات وروابط الحاويات الكاملة؛ يكتشف بشكل مجهول ويتعرف في الوقت نفسه على إمكانية سرد الدليل بشكل مجهول، والحاويات القابلة للسرد بشكل مجهول
تُبرَز في سطر الأوامر بنجمة ★ خضراء زاهية، ويشمل --export حقل listable_url مخصصًا في txt/csv/xlsx/yaml/mdoss serve يوفّر على منفذ واحد REST API + وثائق OpenAPI 3 + نقطة نهاية أدوات MCP،
وoss mcp stdio|http|sse يوفّر ls/stat/cat/presign/find كأدوات MCP لعملاء مثل Claude--color auto|always|never)OSS_LANG=zh|en).part-x للوكيل، و-H لرؤوس مخصصة (UA / Cookie …)، و-k لتخطي التحقق من الشهادةالطريقة الأولى: Homebrew (macOS / Linux، موصى بها)```bash brew install ejfkdev/tap/oss
**الطريقة الثانية: go install** (تتطلب Go 1.24+)```bash
go install github.com/ejfkdev/oss@latest
الطريقة الثالثة: ملفات ثنائية مُجمَّعة مسبقًا
قم بتنزيل الحزمة المضغوطة الخاصة بالمنصة المقابلة من GitHub Releases
(linux/darwin/windows × amd64/arm64)، وفك الضغط لاستخدامها مباشرة. تم تجريد جدول الرموز من مخرجات الإصدار،
وتم ضغط إصدارات Linux/Windows باستخدام UPX (إصدار macOS غير مضغوط: Mach-O المُعبَّأ بـ UPX يتم اعتراضه من قبل النواة).
كل إصدار مرفق بملف تحقق SHA256.
الطريقة الرابعة: التجميع من المصدر (يتطلب Go 1.24+):```bash git clone https://github.com/ejfkdev/oss && cd oss make build # 产物为 ./oss make install # 安装到 $GOPATH/bin make release # 本地交叉编译全部平台到 dist/
## البدء السريع```bash
# 匿名浏览公共桶(无需凭证)
oss ls https://noaa-nwm-pds.s3.amazonaws.com/?delimiter=/
oss ls "https://noaa-nwm-pds.s3.amazonaws.com/?prefix=nwm.20250101/&delimiter=/&max-keys=20"
oss cp -r https://noaa-nwm-pds.s3.amazonaws.com/nwm.20250101/ ./nwm/ --jobs 32
# 阿里云 OSS
oss ls oss://mybucket/logs/ --ak <AK> --sk <SK> --region cn-hangzhou
export OSS_ACCESS_KEY_ID=xxx OSS_SECRET_ACCESS_KEY=yyy # 或者用环境变量
oss ls mybucket --provider aliyun # 裸桶名写法
# 腾讯云 COS / 华为云 OBS
oss ls s3://bucket-1250000000 --provider tencent --region ap-guangzhou
oss ls https://bucket.obs.cn-north-4.myhuaweicloud.com/prefix/
# Yandex / Exoscale / Arvan
oss ls s3://mybucket --provider yandex
oss ls s3://mybucket --provider exoscale --region ch-gva-2
# MinIO / 自建 S3
oss ls s3://mybucket -e http://127.0.0.1:9000 --ak minioadmin --sk minioadmin
oss ls http://127.0.0.1:9000/mybucket/prefix/ # IP/端口自动识别为 path-style
# 走代理、自定义 UA / Cookie
oss ls s3://mybucket -x http://127.0.0.1:7890 \
-H "User-Agent: my-agent/1.0" -H "Cookie: session=abc"
# 目录形式转发的桶(反代把桶挂在路径下,S3 API 透传)
oss ls "https://files.example.com/mybucket/?prefix=2026/&max-keys=10"
oss cp "https://files.example.com/mybucket/<key>" ./
# 附带额外参数的访问(token 等会自动带到每个请求)
oss ls "http://gateway.example.com/bucket?token=abc"
oss cp "http://gateway.example.com/bucket/file.bin?token=abc" ./
| الشكل | المثال |
|---|---|
| scheme | s3://bucket/prefix、oss://、cos://、obs:// |
| اسم الحاوية المجرد | mybucket/prefix(مع --provider / -e) |
| HTTP URL | https://bucket.s3.us-east-1.amazonaws.com/prefix?prefix=logs/ |
نطاقات المزوّدين التي يتعرّف عليها URL تلقائيًا (استخراج endpoint / region / bucket):
| المزوّد | مثال النطاق |
|---|---|
| AWS | bucket.s3.region.amazonaws.com、s3.region.amazonaws.com/bucket |
| Alibaba Cloud | bucket.oss-cn-hangzhou.aliyuncs.com(يتضمن accelerate) |
| Tencent Cloud | bucket-appid.cos.ap-guangzhou.myqcloud.com |
| Huawei Cloud | bucket.obs.cn-north-4.myhuaweicloud.com |
| Baidu Cloud BOS | bucket.s3.bj.bcebos.com、s3.bj.bcebos.com/bucket |
| Kingsoft Cloud KS3 | bucket.ks3-cn-beijing.ksyuncs.com |
| UCloud US3 | bucket.s3-cn-sh2.ufileos.com |
| JD Cloud OSS | s3.cn-north-1.jdcloud-oss.com/bucket(path-style) |
| China Telecom Cloud OOS | bucket.oos-cn.ctyunapi.cn(يتضمن endpoint لمجموعة الموارد وعقدة هونغ كونغ) |
| China Unicom Cloud OSS | bucket.obs-helf.cucloud.cn(مناطق السحابة الصناعية) |
| China Mobile Cloud EOS | bucket.eos-wuxi-1.cmecloud.cn(30 منطقة) |
| QingCloud QStor | bucket.s3.pek3a.qsstor.com(نطاق متوافق مع S3 وهو qsstor.com) |
| Scaleway | bucket.s3.fr-par.scw.cloud(fr-par/nl-ams/pl-waw) |
| Wasabi | bucket.s3.us-east-1.wasabisys.com(14 منطقة) |
| DigitalOcean Spaces | nyc3.digitaloceanspaces.com/bucket(9 مناطق) |
| Yandex | bucket.storage.yandexcloud.net |
| Exoscale SOS | bucket.ch-gva-2.sos.exoscale.com(6 مناطق) |
| Arvan Cloud | bucket.s3.ir-thr-at1.arvanstorage.ir |
| Cloudflare R2 | bucket.<account_id>.r2.cloudflarestorage.com |
| GCS | storage.googleapis.com/bucket(مفتاح HMAC) |
تُحلَّل المضيفات الأخرى (MinIO، Ceph، حاويات إعادة التوجيه العكسي، CNAME…) بشكل موحّد وفق path-style:
يُعتبر المقطع الأول من المسار اسم الحاوية، والباقي هو key، على سبيل المثال
https://files.example.com/mybucket/sub/key.jpg → الحاوية mybucket، وkey هو sub/key.jpg.
إذا كان المضيف يشير مباشرةً إلى الحاوية (CNAME)، فحدّدها صراحةً باستخدام --bucket NAME. عندما يكون URL فارغًا (oss ls) تُعدَّد جميع الحاويات.
تنقسم معاملات استعلام URL إلى فئتين: