Hub Python Library documentation
الدلاء
الدلاء
توفّر الدلاء (Buckets) تخزينًا للأشياء يشبه S3 على Hugging Face، مدعومًا بواجهة التخزين الخلفية Xet. على عكس المستودعات (التي تعتمد على git وتتتبع تاريخ الملفات)، فإن الدلاء هي حاويات تخزين عن بُعد للأشياء مصممة للملفات واسعة النطاق مع إزالة التكرار المعتمدة على المحتوى. وهي مصممة لاستخدامات تتطلب تخزينًا بسيطًا وسريعًا وقابلًا للتعديل، مثل تخزين نقاط التفتيش للتدريب، والسجلات، والمنتجات الوسيطة، أو أي مجموعة كبيرة من الملفات التي لا تحتاج إلى التحكم في الإصدارات.
يمكنك التفاعل مع الدلاء (buckets) باستخدام واجهة برمجة التطبيقات بلغة بايثون (HfApi) أو سطر الأوامر (hf buckets). في هذا الدليل، سنستعرض جميع العمليات المتاحة.
جميع أوامر سطر الأوامر متاحة تحت
hf buckets <command>. نفّذhf buckets --helpلمعرفة المزيد.
إنشاء الدلاء وإدارتها
إنشاء دلو
أنشئ حاوية باستخدام create_bucket(). يجب عليك تقديم اسم للحاوية. إذا لم تحدد مساحة أسماء، فسيتم إنشاء الحاوية تحت اسم المستخدم الخاص بك.
>>> from huggingface_hub import create_bucket
# Create a bucket under your namespace
>>> url = create_bucket("my-bucket")
>>> url.bucket_id
'username/my-bucket'
>>> url.uri.to_uri()
'hf://buckets/username/my-bucket'
# Create a private bucket
>>> create_bucket("my-private-bucket", private=True)
BucketUrl(...)
# Don't error if bucket already exists
>>> create_bucket("my-bucket", exist_ok=True)
BucketUrl(...)
# Create a bucket in a specific region
>>> create_bucket("my-bucket", region="us")
BucketUrl(...)أو عبر سطر الأوامر:
>>> hf buckets create my-bucket
✓ Bucket created
uri: hf://buckets/Wauplin/my-bucket
url: https://huggingface.co/buckets/Wauplin/my-bucket
# Create a private bucket
>>> hf buckets create my-bucket --private
# Don't error if bucket already exists
>>> hf buckets create my-bucket --exist-ok
# Create a bucket in a specific region
>>> hf buckets create my-bucket --region usيمكنك أيضًا تحديد صيغة namespace/bucket_name الكاملة لإنشاء دلو تحت منظمة:
>>> from huggingface_hub import create_bucket
>>> create_bucket("my-org/shared-bucket")أو عبر سطر الأوامر:
>>> hf buckets create my-org/shared-bucketالحصول على معلومات الدلو
استخدم bucket_info() للحصول على البيانات الوصفية الخاصة بالحاوية، بما في ذلك مستوى ظهورها، وحجمها الإجمالي، وعدد الملفات، وتاريخ إنشائها.
>>> from huggingface_hub import bucket_info
>>> bucket_info("username/my-bucket")
BucketInfo(
id='username/my-bucket',
private=False,
created_at=datetime.datetime(2026, 2, 12, 17, 42, 12,
tzinfo=datetime.timezone.utc),
size=8411791508,
total_files=128
)أو عبر سطر الأوامر:
# JSON output
>>> hf buckets info username/my-bucket
{
"id": "username/my-bucket",
"private": false,
...
}قائمة الدلاء
استخدم list_buckets() لعرض جميع الأوعية (buckets) في مساحة الاسم. بشكل افتراضي، يعرض الأوعية في مساحة اسم المستخدم الحالي.
>>> from huggingface_hub import list_buckets
# List your own buckets
>>> for bucket in list_buckets():
... print(bucket.id, bucket.size, bucket.total_files)
# List buckets in an organization
>>> for bucket in list_buckets(namespace="huggingface"):
... print(bucket.id)أو عبر سطر الأوامر (hf buckets ls اختصار لـ hf buckets list):
# Table format (default)
>>> hf buckets list
ID PRIVATE SIZE TOTAL_FILES CREATED_AT
-------------------- ------- --------- ----------- ----------
username/my-bucket 32 5 2026-02-16
username/checkpoints 117609095 700 2026-02-13
username/logs 321757477 2000 2026-02-13
# Human-readable sizes
>>> hf buckets list -h
ID PRIVATE SIZE TOTAL_FILES CREATED_AT
-------------------- ------- -------- ----------- ----------
username/my-bucket 32 B 5 2026-02-16
username/checkpoints 117.6 MB 700 2026-02-13
username/logs 321.8 MB 2000 2026-02-13
# List buckets in a specific namespace
>>> hf buckets ls huggingface
# Filter buckets by name
>>> hf buckets list --search "checkpoint"يمكنك أيضًا تصفية الدلاء حسب الاسم باستخدام search:
>>> for bucket in list_buckets(search="checkpoint"):
... print(bucket.id)يمكنك استخدام خيارات --quiet و--format json للحصول على صيغ مخرجات مختلفة. وهذا مثير للاهتمام بشكل خاص إذا كنت ترغب في تمرير المخرجات إلى أداة أخرى مثل grep أو jq.
# Quiet mode: prints one bucket ID per line
>>> hf buckets list --quiet
username/my-bucket
username/checkpoints
username/logs
# JSON format
>>> hf buckets list --format json
[
{
"id": "username/my-bucket",
"private": false,
"created_at": "2026-02-16T15:28:32+00:00",
"size": 32,
"total_files": 5
},
...
]تغيير حالة عرض الدلو
استخدم update_bucket_settings() للتبديل بين وضع خاص وعام لسلة موجودة مسبقًا.
>>> from huggingface_hub import update_bucket_settings
# Make a bucket private
>>> update_bucket_settings("username/my-bucket", private=True)
# Make it public again
>>> update_bucket_settings("username/my-bucket", private=False)أو عبر سطر الأوامر:
# Make a bucket private
>>> hf buckets settings username/my-bucket --private
✓ Bucket settings updated
bucket_id: username/my-bucket
private: True
# Make it public again
>>> hf buckets settings username/my-bucket --publicحذف دلو
استخدم delete_bucket() لحذف الدلو. هذه العملية غير قابلة للتراجع.
>>> from huggingface_hub import delete_bucket
>>> delete_bucket("username/my-bucket")
# Don't error if bucket doesn't exist
>>> delete_bucket("username/my-bucket", missing_ok=True)أو عبر سطر الأوامر:
# Prompts for confirmation
>>> hf buckets delete username/my-bucket
# Skip confirmation
>>> hf buckets delete username/my-bucket --yes
# Don't error if bucket doesn't exist
>>> hf buckets delete username/my-bucket --yes --missing-okحذف الملفات
استخدم batch_bucket_files() مع معامل delete لحذف الملفات من الدلو:
>>> from huggingface_hub import batch_bucket_files
# Delete specific files
>>> batch_bucket_files("username/my-bucket", delete=["old-model.bin", "logs/debug.log"])أو عبر سطر الأوامر باستخدام hf buckets rm (أو hf buckets remove):
# Remove a single file
>>> hf buckets rm username/my-bucket/old-model.bin
# Remove all files under a prefix (requires --recursive)
>>> hf buckets rm username/my-bucket/logs/ --recursive
# Remove only files matching a pattern across the entire bucket
>>> hf buckets rm username/my-bucket --recursive --include "*.tmp"
# Exclude specific files from removal
>>> hf buckets rm username/my-bucket/data/ --recursive --exclude "*.safetensors"
# Preview what would be deleted
>>> hf buckets rm username/my-bucket/checkpoints/ --recursive --dry-runنقل دلو
استخدم move_bucket() لنقل أو إعادة تسمية دلو. يمكنك إعادة التسمية ضمن نفس مساحة الأسماء أو النقل إلى مساحة أسماء مختلفة (مستخدم أو منظمة).
>>> from huggingface_hub import move_bucket
# Rename a bucket
>>> move_bucket(from_id="username/old-name", to_id="username/new-name")
# Transfer to an organization
>>> move_bucket(from_id="username/my-bucket", to_id="my-org/my-bucket")أو عبر سطر الأوامر:
# Rename a bucket
>>> hf buckets move username/old-bucket username/new-bucket
# Transfer to an organization
>>> hf buckets move username/my-bucket my-org/my-bucket
# Using the hf://buckets/ format
>>> hf buckets move hf://buckets/username/old-bucket hf://buckets/username/new-bucketلمزيد من المعلومات حول نقل المستودعات والدلاء، راجع توثيق Hub.
تصفح محتويات الدلو
قائمة الملفات
استخدم list_bucket_tree() لعرض الملفات والمجلدات في الدلو.
>>> from huggingface_hub import list_bucket_tree
# List all files
>>> for item in list_bucket_tree("username/my-bucket"):
... print(item.path, item.size)
file.txt 5
big.bin 2048
sub/nested.txt 14
sub/deep/file.txt 4
# List top-level entries only
>>> for item in list_bucket_tree("username/my-bucket", recursive=False):
... print(item.type, item.path)
file file.txt
file big.bin
directory sub
# Filter by prefix
>>> for item in list_bucket_tree("username/my-bucket", prefix="sub"):
... print(item.path)أو عبر سطر الأوامر، مع دعم لتنسيقات الجدول والقابل للقراءة من الإنسان وشجرة ASCII. افتراضيًا، سطر الأوامر غير تكراري.
# Default table format (non-recursive, directories shown as entries)
>>> hf buckets list username/my-bucket
2048 2026-01-15 10:30:00 big.bin
5 2026-01-15 10:30:00 file.txt
2026-01-15 10:30:00 sub/
# Recursive listing (all files, including nested)
>>> hf buckets list username/my-bucket -R
2048 2026-01-15 10:30:00 big.bin
5 2026-01-15 10:30:00 file.txt
14 2026-01-15 10:30:00 sub/nested.txt
4 2026-01-15 10:30:00 sub/deep/file.txt
# Human-readable sizes and short dates
>>> hf buckets list username/my-bucket -R -h
2.0 KB Jan 15 10:30 big.bin
5 B Jan 15 10:30 file.txt
14 B Jan 15 10:30 sub/nested.txt
4 B Jan 15 10:30 sub/deep/file.txt
# ASCII tree format
>>> hf buckets list username/my-bucket --tree -h -R
2.0 KB Jan 15 10:30 ├── big.bin
5 B Jan 15 10:30 ├── file.txt
└── sub/
├── deep/
4 B Jan 15 10:30 │ └── file.txt
14 B Jan 15 10:30 └── nested.txt
# Tree structure only (no sizes/dates)
>>> hf buckets list username/my-bucket --tree --quiet -R
├── big.bin
├── file.txt
└── sub/
├── deep/
│ └── file.txt
└── nested.txt
# Quiet mode: one path per line
>>> hf buckets list username/my-bucket -q
big.bin
file.txt
sub/
# Filter by prefix
>>> hf buckets list username/my-bucket/sub -Rيقبل الأمر
hf buckets listكلا من الصيغة المختصرة (username/my-bucket/sub) والمعرّف الكامل (hf://buckets/username/my-bucket/sub) كحجج.
يعمل سرد محتويات الدلو باستخدام HfFileSystem على تخزينها مؤقتًا. مرّر
HfFileSystem(live_follow=True)لتحديث القوائم تلقائيًا عند إضافة الملفات أو تحديثها أو حذفها في الدلو من قبل أقران آخرين، راجع دليل نظام الملفات.
رفع الملفات
الرفع باستخدام Python
استخدم batch_bucket_files() لرفع الملفات إلى الدلو. يمكنك الرفع من مسارات الملفات المحلية أو من البايتات الخام:
>>> from huggingface_hub import batch_bucket_files
# Upload from local file paths
>>> batch_bucket_files(
... "username/my-bucket",
... add=[
... ("./model.safetensors", "models/model.safetensors"),
... ("./config.json", "models/config.json"),
... ],
... )
# Upload from raw bytes
>>> batch_bucket_files(
... "username/my-bucket",
... add=[
... (b'{"key": "value"}', "config.json"),
... ],
... )يمكنك أيضًا نسخ ملفات xet من دلو أو مستودع آخر باستخدام معامل copy. هذه عملية جانب الخادم — لا يتم تنزيل البيانات أو إعادة رفعها:
# Copy files by xet hash (source_repo_type, source_repo_id, xet_hash, destination)
>>> batch_bucket_files(
... "username/my-bucket",
... copy=[
... ("bucket", "username/source-bucket", "<xethash_1>", "models/model.safetensors"),
... ("model", "username/my-model", "<xethash_2>", "models/config.safetensors"),
... ],
... )يمكن استرداد تجزئات Xet باستخدام list_repo_tree.
يمكنك أيضًا حذف الملفات أثناء رفع ملفات أخرى.
# Upload and delete in one batch
>>> batch_bucket_files(
... "username/my-bucket",
... add=[("./new-model.safetensors", "model.safetensors")],
... delete=["old-model.bin"],
... )الاستدعاءات إلى batch_bucket_files() غير معاملة. إذا حدث خطأ أثناء العملية، فقد تكون بعض الملفات قد تم رفعها أو نسخها أو حذفها بينما لم يتم ذلك لغيرها. عندما يُبلغ الخادم عن فشل بعض العمليات، يتم رفع
BucketBatchErrorمع المسارات الفاشلة في خاصيةfailuresالخاصة به.
رفع ملف واحد باستخدام سطر الأوامر
استخدم hf buckets cp لرفع ملف واحد:
hf buckets cpهو اسم بديل للأمر الموحّدhf cp(والذي يُعرَض أيضاً باسمhf repos cp). جميع الأوامر الثلاثة متطابقة، لذا فإن أي مثال علىhf buckets cpأدناه يعمل أيضاً معhf cp.
# Upload to bucket root (uses local filename as remote name)
>>> hf buckets cp ./config.json hf://buckets/username/my-bucket
# Upload to a subdirectory
>>> hf buckets cp ./data.csv hf://buckets/username/my-bucket/logs/
# Upload with a different remote filename
>>> hf buckets cp ./model.safetensors hf://buckets/username/my-bucket/v2/model.safetensorsيمكنك أيضًا تمرير نتيجة الأمر مباشرةً إلى ملف جديد باستخدام -:
# Upload from stdin
>>> echo "hello" | hf buckets cp - hf://buckets/username/my-bucket/hello.txt
>>> cat model.safetensors | hf buckets cp - hf://buckets/username/my-bucket/model.safetensorsرفع مجلد باستخدام سطر الأوامر
استخدم hf buckets sync لرفع مجلد محلي بالكامل إلى دلو:
# Upload a local directory to a bucket
>>> hf buckets sync ./data hf://buckets/username/my-bucket
# Upload to a specific prefix in the bucket
>>> hf buckets sync ./data hf://buckets/username/my-bucket/trainراجع قسم مزامنة المجلدات أدناه للاطلاع على مجموعة كاملة من خيارات المزامنة.
تنزيل الملفات
التحميل باستخدام Python
استخدم download_bucket_files() لتنزيل الملفات من الدلو:
>>> from huggingface_hub import download_bucket_files
# Download specific files by path
>>> download_bucket_files(
... "username/my-bucket",
... files=[
... ("models/model.safetensors", "./local/model.safetensors"),
... ("config.json", "./local/config.json"),
... ],
... )للحصول على أداء أفضل، يمكنك تمرير كائنات BucketFile التي تم الحصول عليها من list_bucket_tree() بدلاً من مسارات النصوص. يتخطى هذا خطوة جلب البيانات الوصفية:
>>> from huggingface_hub import list_bucket_tree, download_bucket_files
# List and filter files, then download
>>> parquet_files = [
... item for item in list_bucket_tree("username/my-bucket", recursive=True)
... if item.type == "file" and item.path.endswith(".parquet")
... ]
>>> download_bucket_files(
... "username/my-bucket",
... files=[(f, f"./local/{f.path}") for f in parquet_files],
... )تنزيل ملف واحد باستخدام سطر الأوامر
استخدم hf buckets cp لتنزيل ملف واحد:
# Download to a specific file
>>> hf buckets cp hf://buckets/username/my-bucket/config.json ./config.json
# Download to a directory (uses original filename)
>>> hf buckets cp hf://buckets/username/my-bucket/config.json ./data/
# Download to current directory (omit destination)
>>> hf buckets cp hf://buckets/username/my-bucket/config.jsonيمكنك أيضًا تمرير محتوى ملف مباشرة إلى stdout باستخدام -:
# Download to stdout and pretty-print with jq
>>> hf buckets cp hf://buckets/username/my-bucket/config.json - | jq .تنزيل مجلد باستخدام سطر الأوامر
استخدم hf buckets sync لتنزيل جميع الملفات من الدلو إلى مجلد محلي:
# Download bucket contents to a local directory
>>> hf buckets sync hf://buckets/username/my-bucket ./data
# Download only a specific prefix
>>> hf buckets sync hf://buckets/username/my-bucket/models ./local-modelsراجع قسم مزامنة المجلدات أدناه للاطلاع على مجموعة كاملة من خيارات المزامنة.
نسخ الملفات إلى Bucket
استخدم copy_files() لنسخ الملفات المستضافة مسبقًا على Hub إلى Bucket:
>>> from huggingface_hub import copy_files
# Bucket to bucket (same or different bucket)
>>> copy_files(
... "hf://buckets/username/source-bucket/checkpoints/model.safetensors",
... "hf://buckets/username/destination-bucket/archive/model.safetensors",
... )
# Repo to bucket
>>> copy_files(
... "hf://datasets/username/my-dataset/processed/",
... "hf://buckets/username/my-bucket/datasets/processed/",
... )يتوفر الأمر نفسه من سطر الأوامر عبر الأمر الموحّد hf cp (كما يُعرَض أيضاً على شكل hf buckets cp وhf repos cp — جميعها متطابقة):
# Bucket to bucket
>>> hf cp hf://buckets/username/source-bucket/logs/ hf://buckets/username/destination-bucket/logs/
# Repo to bucket
>>> hf cp hf://username/my-model/config.json hf://buckets/username/my-bucket/models/config.jsonعند نسخ المجلدات، فإن وجود / في نهاية المسار المصدر يستخدم دلالات على غرار rsync — حيث يتم نسخ المحتويات الخاصة بالمجلد فقط، دون تضمين المجلد نفسه:
# Without trailing slash: "logs" dir is nested => destination/logs/...
>>> hf cp hf://buckets/username/source-bucket/logs hf://buckets/username/destination-bucket/
# With trailing slash: only contents of "logs" are copied => destination/...
>>> hf cp hf://buckets/username/source-bucket/logs/ hf://buckets/username/destination-bucket/ملاحظات:
- نسخة من الدلو إلى المستودع غير مدعومة بعد.
- تعمل النسخ على جانب الخادم فقط ضمن نطاق تخزين واحد.
- تُنسخ الملفات المُتتبَّعَة بواسطة Xet (سواءً في الدلاء أو المستودعات) على جانب الخادم عبر التجزئة — دون الحاجة إلى تنزيل البيانات أو إعادة رفعها.
- تُحمَّل ملفات النص الصغيرة غير المُتبعة عبر Xet في مصادر المستودع وتُعاد رفعها إلى الدلو الوجهة.
- يمكن أيضًا استخدام copy_files() لنسخ المستودعات من مستودع إلى آخر. راجع دليل المستودعات لمزيد من التفاصيل.
مزامنة المجلدات
يُعدّ الأمر hf buckets sync (ومقابلها في واجهة برمجة التطبيقات sync_bucket()) الطريقة الأقوى لنقل الملفات بين مجلد محلي ودلو. فهو يقارن المصدر والوجهة، ولا ينقل إلا الملفات التي طرأ عليها تغيير.
المزامنة الأساسية
# Upload: local directory -> bucket
>>> hf buckets sync ./data hf://buckets/username/my-bucket
# Download: bucket -> local directory
>>> hf buckets sync hf://buckets/username/my-bucket ./data
hf syncهو اسم بديل مريح لـhf buckets sync. كلا الأمرين متطابقان.>>> hf sync ./data hf://buckets/username/my-bucket
أو عبر بايثون:
>>> from huggingface_hub import sync_bucket
# Upload: local directory -> bucket
>>> sync_bucket("./data", "hf://buckets/username/my-bucket")
# Download: bucket -> local directory
>>> sync_bucket("hf://buckets/username/my-bucket", "./data")حذف الملفات غير الضرورية
بشكل افتراضي، يضيف sync أو يحدّث الملفات فقط. استخدم --delete (أو delete=True في بايثون) لإزالة الملفات الموجودة في الوجهة والتي لا توجد في المصدر أيضاً:
# Upload and remove remote files not present locally
>>> hf buckets sync ./data hf://buckets/username/my-bucket --delete
# Download and remove local files not present in bucket
>>> hf buckets sync hf://buckets/username/my-bucket ./data --deleteأو عبر بايثون:
>>> sync_bucket("./data", "hf://buckets/username/my-bucket", delete=True)
>>> sync_bucket("hf://buckets/username/my-bucket", "./data", delete=True)التصفية
يمكنك التحكم في الملفات التي تتم مزامنتها باستخدام أنماط الإدراج/الاستبعاد:
# Only sync .txt files
>>> hf buckets sync ./data hf://buckets/username/my-bucket --include "*.txt"
# Exclude log files
>>> hf buckets sync ./data hf://buckets/username/my-bucket --exclude "*.log"
# Combine include and exclude
>>> hf buckets sync ./data hf://buckets/username/my-bucket --include "*.safetensors" --exclude "*.tmp"أو عبر بايثون:
# Only sync .txt files
>>> sync_bucket("./data", "hf://buckets/username/my-bucket", include=["*.txt"])
# Exclude log files
>>> sync_bucket("./data", "hf://buckets/username/my-bucket", exclude=["*.log"])
# Combine include and exclude
>>> sync_bucket("./data", "hf://buckets/username/my-bucket", include=["*.safetensors"], exclude=["*.tmp"])لتصفية أكثر تعقيدًا، استخدم ملف تصفية مع --filter-from (أو filter_from في بايثون):
>>> hf buckets sync ./data hf://buckets/username/my-bucket --filter-from filters.txtيستخدم ملف التصفية بادئات + (تضمين) و- (استبعاد). الأسطر التي تبدأ بـ# هي تعليقات. تُقيَّم القواعد بالترتيب (القاعدة المطابقة الأولى هي الغالبة):
# filters.txt - *.log - *.tmp + *.safetensors + *.json
أنواع المقارنة
بشكل افتراضي، يقارن sync الملفات باستخدام كل من الحجم وزمن التعديل. يمكنك تخصيص هذا السلوك:
# Only compare sizes (ignore modification times)
>>> hf buckets sync ./data hf://buckets/username/my-bucket --ignore-times
# Only compare modification times (ignore sizes)
>>> hf buckets sync ./data hf://buckets/username/my-bucket --ignore-sizes
# Only update files that already exist on the receiver (skip new files)
>>> hf buckets sync ./data hf://buckets/username/my-bucket --existing
# Only create new files (skip files that already exist on the receiver)
>>> hf buckets sync ./data hf://buckets/username/my-bucket --ignore-existingأو عبر بايثون:
>>> sync_bucket("./data", "hf://buckets/username/my-bucket", ignore_times=True)
>>> sync_bucket("./data", "hf://buckets/username/my-bucket", ignore_sizes=True)
>>> sync_bucket("./data", "hf://buckets/username/my-bucket", existing=True)
>>> sync_bucket("./data", "hf://buckets/username/my-bucket", ignore_existing=True)التخطيط والتطبيق
بالنسبة إلى العمليات الحرجة، يمكنك مراجعة خطة المزامنة قبل تنفيذها:
# Step 1: Generate a plan file (nothing is transferred)
>>> hf buckets sync ./data hf://buckets/username/my-bucket --plan sync-plan.jsonl
Sync plan: ./data -> hf://buckets/username/my-bucket
Uploads: 3
Downloads: 0
Deletes: 0
Skips: 1
Plan saved to: sync-plan.jsonl
# Step 2: Review the plan file (JSONL format)
>>> cat sync-plan.jsonl
# Step 3: Apply the plan
>>> hf buckets sync --apply sync-plan.jsonlأو عبر بايثون:
# Step 1: Generate a plan file (nothing is transferred)
>>> sync_bucket("./data", "hf://buckets/username/my-bucket", plan="sync-plan.jsonl")
# Step 2: Review the plan file (JSONL format), then apply
>>> sync_bucket(apply="sync-plan.jsonl")ملف الخطة هو ملف بصيغة JSONL يتكوّن من سطر ترويسة يليه سطر واحد لكل عملية. تتضمن كل عملية الإجراء (
upload،download،delete، أوskip)، ومسار الملف، والسبب وراء الإجراء. يمكنك تحرير هذا الملف يدويًا قبل تطبيقه، لكن يرجى توخي الحذر مع الصياغة.
تشغيل تجريبي
استخدم --dry-run (أو dry_run=True في Python) للحصول على خطة المزامنة دون تنفيذ أي شيء:
# Preview what would be synced
>>> hf buckets sync ./data hf://buckets/username/my-bucket --dry-run | jq '.action'أو عبر بايثون:
>>> plan = sync_bucket("./data", "hf://buckets/username/my-bucket", dry_run=True)
>>> plan.summary()
{'uploads': 3, 'downloads': 0, 'deletes': 0, 'skips': 1, 'total_size': 4096}
--dry-runيُخرج نفس صيغة JSONL التي تُخرجها--planلكنه يطبعها في stdout بدلاً من حفظها في ملف. يتم طباعة محتوى JSONL فقط، مما يجعله آمناً للتوجيه عبر أنبوب.
الوضعان المفصّل والصامت
# Show per-file operations
>>> hf buckets sync ./data hf://buckets/username/my-bucket --verbose
# Suppress all output
>>> hf buckets sync ./data hf://buckets/username/my-bucket --quietأو عبر بايثون:
>>> sync_bucket("./data", "hf://buckets/username/my-bucket", verbose=True)
>>> sync_bucket("./data", "hf://buckets/username/my-bucket", quiet=True)متقدم
لحالات الاستخدام على مستوى أدنى، تتوفر أيضًا الطرق التالية:
- get_bucket_paths_info(): جلب معلومات عن مسارات محددة في الدلو عبر طلب دفعة واحدة. مفيد عندما تعرف بالضبط الملفات التي تحتاج إلى بيانات وصفية لها.
>>> from huggingface_hub import get_bucket_paths_info
>>> for info in get_bucket_paths_info("username/my-bucket", ["file.txt", "models/model.safetensors"]):
... print(info.path, info.size, info.xet_hash)- get_bucket_file_metadata(): جلب البيانات الوصفية (الحجم وبيانات xet) لملف واحد. تُستخدم داخليًا بواسطة download_bucket_files().
>>> from huggingface_hub import get_bucket_file_metadata
>>> metadata = get_bucket_file_metadata("username/my-bucket", "models/model.safetensors")
>>> metadata.size
42000