> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/datasets/hi/create-and-upload/adding-data/datasources.md).

# Datasources

डेटा स्रोत आपको क्लाउड स्टोरेज से छवियों और मेटाडेटा को लगातार आपके Roboflow एसेट लाइब्रेरी में मिरर करने देते हैं। एक बार मिरर हो जाने पर, छवियों को अर्थ, कस्टम मेटाडेटा, टैग, या छवि समानता के आधार पर खोजा जा सकता है, और लेबलिंग तथा प्रशिक्षण के लिए किसी भी प्रोजेक्ट में जोड़ा जा सकता है।

फिलहाल, AWS S3, S3-संगत स्टोरेज, Google Cloud Storage, और Azure Blob Storage बकेट मिररिंग समर्थित है।

{% hint style="warning" %}
यदि आपका स्रोत डेटा AWS S3, Google Cloud Storage, या Azure Blob Storage जैसे क्लाउड स्टोरेज में है, तो इसे Roboflow में आयात, अंतर्ग्रहण, और सिंक करने के लिए डेटा स्रोतों और बकेट मिरर को डिफ़ॉल्ट मार्ग के रूप में उपयोग करें। signed URL अपलोड या स्थानीय डाउनलोड वर्कफ़्लो का उपयोग केवल एक बार या तदर्थ आयात के लिए करें।
{% endhint %}

## बकेट मिरर कैसे काम करता है

जब आप एक Datasource कॉन्फ़िगर करते हैं, Roboflow आपकी bucket को क्रॉल करता है और सभी मेल खाते image files को आपके Workspace के [एसेट लाइब्रेरी](https://docs.roboflow.com/platform/workspaces/asset-library).

* समर्थित छवि प्रारूप: JPEG, PNG, BMP, WebP, AVIF
* आपके workspace में पहले से मौजूद फ़ाइलें (उनके bucket स्थान और hash से मिलान होने पर) फिर से आयात नहीं की जातीं, जिससे egress लागत घटती है
* यदि एक `.json` साइडकार फ़ाइल किसी चित्र के साथ समान आधार नाम के साथ मौजूद है, तो उसका मेटाडेटा आयात किया जाता है; नेस्टेड कुंजियों को डॉट नोटेशन का उपयोग करके समतल किया जाता है (उदा., `capture.temperature`) - देखें [मेटाडेटा साइडकार्स](#metadata-sidecars)
* जो फ़ाइलें bucket से गायब हो जाती हैं, उन्हें डिफ़ॉल्ट रूप से रखा जाता है; उन्हें हटाने के लिए orphan removal सक्षम करें (देखें [अनाथ फ़ाइलें हटाना](#removing-orphaned-files))

## अपने बकेट को Roboflow में मिरर करें

### पूर्वापेक्षाएँ

1. एक क्लाउड स्टोरेज बकेट (AWS S3, Google Cloud Storage, या Azure Blob Storage) जिसमें आपका image data हो
2. एक पुन: उपयोग योग्य Roboflow credential जो उस bucket से पढ़ सके। देखें [डेटा स्रोत क्रेडेंशियल्स](/datasets/hi/create-and-upload/adding-data/datasource-credentials.md), फिर अनुसरण करें [AWS S3 क्रेडेंशियल्स](/datasets/hi/create-and-upload/adding-data/datasource-credentials/aws-s3.md) या [Google Cloud Storage क्रेडेंशियल्स](/datasets/hi/create-and-upload/adding-data/datasource-credentials/gcs.md).

### Roboflow में एक क्रेडेंशियल जोड़ें

Roboflow आपके bucket एक्सेस को सुरक्षित और एन्क्रिप्टेड रूप में एक पुन: उपयोग योग्य क्रेडेंशियल के तौर पर संग्रहीत करता है। प्रदाता-विशिष्ट सेटअप चरणों और न्यूनतम-अधिकार मार्गदर्शन के लिए, उपयोग करें [AWS S3 क्रेडेंशियल्स](/datasets/hi/create-and-upload/adding-data/datasource-credentials/aws-s3.md) या [Google Cloud Storage क्रेडेंशियल्स](/datasets/hi/create-and-upload/adding-data/datasource-credentials/gcs.md).

जाएँ [क्रेडेंशियल्स](https://app.roboflow.com/settings/thirdpartykeys) अपने Workspace सेटिंग्स में और क्लिक करें [क्रेडेंशियल जोड़ें](https://app.roboflow.com/settings/thirdpartykeys#create).

### बकेट मिररिंग के लिए डेटा स्रोत कॉन्फ़िगर करें

[एक नया डेटा स्रोत बनाएँ](https://app.roboflow.com/settings/datasources) अपने workspace settings से। फ़ॉर्म में दो टैब हैं:

* "Connection" में bucket विवरण और एक्सेस होती है: नाम, प्रदाता, bucket, region, और Credential. अपने सहेजे गए Credential को "Credential" dropdown से चुनें, या उसके पास वाले "+" का उपयोग करके फ़ॉर्म छोड़े बिना एक जोड़ें।
* "Mirror Configuration" में import destination, file filters, और mirror व्यवहार होता है।

### आयात गंतव्य चुनना

"Mirror Configuration" के अंतर्गत, "Import Destination" अनुभाग नियंत्रित करता है कि mirrored files कहाँ पहुँचेंगी। प्रत्येक Datasource केवल एक गंतव्य में आयात करता है; कहीं और आयात करने के लिए एक और Datasource जोड़ें।

* "Workspace" में mirror होकर [एसेट लाइब्रेरी](https://docs.roboflow.com/platform/workspaces/asset-library). "Import into" dropdown का उपयोग करके फ़ाइलों को workspace root पर रखें, या उन्हें उस Project में जोड़ने के लिए किसी Project को चुनें।
* "Folder" mirrored images को एक प्रोजेक्ट फ़ोल्डर तक सीमित करता है ताकि केवल उस फ़ोल्डर की टीम उन्हें देख सके। यह विकल्प उन योजनाओं में उपलब्ध है जिनमें [प्रोजेक्ट फ़ोल्डर अनुमतियाँ](/datasets/hi/manage/project-folders/project-folder-permissions.md).

### ग्लॉब पैटर्न के साथ फ़िल्टर करना

डिफ़ॉल्ट रूप से, bucket में मौजूद सभी समर्थित image files आयात की जाती हैं। आप glob patterns का उपयोग करके यह सीमित कर सकते हैं कि कौन-सी फ़ाइलें आयात हों, चाहे सीधे निर्दिष्ट करके या किसी `.txt` फ़ाइल जो bucket में संग्रहीत है।

आप glob patterns के बजाय फ़ाइल पथों की एक स्पष्ट whitelist भी दे सकते हैं।

### पैटर्न की अर्थवत्ता

* `*` सभी अक्षरों से मेल खाता है सिवाय `/` (एकल निर्देशिका स्तर)
* `**` सभी अक्षरों से मेल खाता है, जिसमें शामिल हैं `/` (कई निर्देशिका स्तर)

### उदाहरण

**प्रीफ़िक्स के अनुसार मिलाएँ:**

```
harvest**
```

मिलते हैं: `harvest`, `harvest2024`, `harvest/sun/file.jpg`, `harvest-data.png`\
मिलते नहीं हैं: `Harvest`, `my-harvest`

**किसी फ़ोल्डर की हर चीज़ से मिलाएँ:**

```
/harvest/sun/**
```

मिलते हैं: `/harvest/sun/file.txt`, `/harvest/sun/subfolder/image.jpg`, `/harvest/sun/deep/nested/path/data.png`\
मिलते नहीं हैं: `/harvest/moon/file.txt`, `/other/sun/file.txt`

**किसी subtree के भीतर suffix के अनुसार मिलाएँ:**

```
/planting/**/*crops.png
```

मिलते हैं: `/planting/wheat-crops.png`, `/planting/subfolder/rice-crops.png`\
मिलते नहीं हैं: `/planting/wheat.png`, `/other/wheat-crops.png`

**नाम पैटर्न के साथ किसी विशिष्ट निर्देशिका स्तर पर मिलाएँ:**

```
/*/a/**/*weed*2025-10-27.png
```

मिलते हैं: `/farm/a/field/weed-2025-10-27.png`, `/garden/a/plot/seaweed-data-2025-10-27.png`\
मिलते नहीं हैं: `/farm/b/field/weed-2025-10-27.png`

**सटीक पथ:**

```
/exact/path/to/file.jpg
```

केवल उसी विशिष्ट फ़ाइल से मेल खाता है।

**फ़ाइलनामों में लिटरल वाइल्डकार्ड:**\
पैटर्न को उद्धरणों में रखें ताकि `*` को एक लिटरल अक्षर के रूप में माना जाए:

```
"/path/to/file*.jpg"
```

### अनाथ फ़ाइलें हटाना

अनाथ हटाना डिफ़ॉल्ट रूप से बंद है, इसलिए जो फ़ाइलें आपके bucket से गायब हो जाती हैं वे रखी जाती हैं। जब `removeOrphanedSourcesWhenDisappeared` सक्षम होता है, तो जो फ़ाइलें अब आपके bucket में मौजूद नहीं हैं (या अब आपके glob patterns से मेल नहीं खातीं) उन्हें आपके Roboflow workspace से हटा दिया जाता है, बशर्ते वे किसी Project या किसी अन्य Datasource configuration द्वारा संदर्भित न हों।

यह तब भी लागू होता है जब आप किसी Datasource को हटाते हैं। यदि orphan removal सक्षम है और bucket को कम से कम एक बार मिरर किया गया है, तो उस bucket से उत्पन्न वे images जो किसी अन्य Project में उपयोग नहीं हो रही हैं, cleanup worker द्वारा हटाई जा सकती हैं। delete confirmation dialog आपको इसके बारे में चेतावनी देगा और आगे बढ़ने से पहले स्पष्ट पुष्टि माँगेगा। इससे बचने के लिए, इसे हटाने से पहले Datasource के mirror configs पर orphan removal अक्षम करें।

### फ़ाइल नामकरण

यह `namingStrategy` सेटिंग नियंत्रित करती है कि आयातित फ़ाइलों के नाम Roboflow में कैसे रखे और प्रदर्शित किए जाते हैं:

| रणनीति     | विवरण                                                                                                                 |
| ---------- | --------------------------------------------------------------------------------------------------------------------- |
| `fullPath` | पूर्ण S3 key path को फ़ाइलनाम के रूप में उपयोग करता है (डिफ़ॉल्ट)                                                     |
| `fileName` | S3 key के केवल फ़ाइलनाम हिस्से का उपयोग करता है                                                                       |
| `eTag`     | S3 object ETag का उपयोग करता है                                                                                       |
| `metadata` | छवि के मेटाडेटा से एक मान का उपयोग करता है, जिसे इस प्रकार निर्दिष्ट किया गया है `namingStrategyMetadataKey` (आवश्यक) |

### छवि अद्यतन

जब S3 में किसी छवि को संशोधित किया जाता है, तो Roboflow आपके workspace में उसकी प्रति को अद्यतन कर सकता है:

* `updateImageWhenNewer` (डिफ़ॉल्ट: `true`) - जब S3 object संग्रहीत संस्करण से नया हो, तब छवि को फिर से आयात करता है
* `updateImageStrategy` - नियंत्रित करता है कि अद्यतन कैसे लागू किया जाए; वर्तमान में `overwrite` (मौजूदा छवि को प्रतिस्थापित करता है) समर्थित है

### मेटाडेटा साइडकार्स

प्रत्येक छवि के साथ bucket में एक `.json` साइडकार फ़ाइल रखकर छवियों में मेटाडेटा जोड़ें, वही आधार नाम उपयोग करके:

```
my-bucket/
  images/
    photo_001.jpg
    photo_001.json      # photo_001.jpg के लिए मेटाडेटा
    photo_002.jpg
    photo_002.json      # photo_002.jpg के लिए मेटाडेटा
```

साइडकार फ़ाइल में key-value pairs होते हैं:

```json
{
  "camera_id": "cam001",
  "location": "warehouse-3",
  "capture": { "temperature": 72.5, "humidity": 45 }
}
```

नेस्टेड objects को डॉट नोटेशन का उपयोग करके समतल किया जाता है। ऊपर का उदाहरण यह उत्पन्न करता है:

| कुंजी                 | मान             |
| --------------------- | --------------- |
| `camera_id`           | `"cam001"`      |
| `location`            | `"warehouse-3"` |
| `capture.temperature` | `72.5`          |
| `capture.humidity`    | `45`            |

साइडकार फ़ाइल की सीमाएँ:

* अधिकतम फ़ाइल आकार: 256 KB
* मान्य JSON होना चाहिए
* `null` और `undefined` मानों को फ़िल्टर कर दिया जाता है

### मेटाडेटा सिंक रणनीतियाँ

जब किसी छवि की मेटाडेटा साइडकार `.json` फ़ाइल S3 में अपडेट होती है, तो दो सेटिंग्स नियंत्रित करती हैं कि अद्यतन कैसे लागू किया जाए:

* `updateMetadataWhenNewer` (डिफ़ॉल्ट: `true`) - जब साइडकार फ़ाइल संग्रहीत संस्करण से नई हो, तब मेटाडेटा को फिर से सिंक करता है
* `updateMetadataStrategy` - नियंत्रित करता है कि सिंक किया गया मेटाडेटा UI या API के माध्यम से आपने जो मेटाडेटा मैन्युअली सेट किया है, उसके साथ कैसे इंटरैक्ट करता है:

| रणनीति                       | व्यवहार                                                                                                             |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| `mergeBucketWins` (डिफ़ॉल्ट) | दोनों स्रोतों को मिलाता है; कुंजी टकराव होने पर bucket का मान जीतता है                                              |
| `mergeUserWins`              | दोनों स्रोतों को मिलाता है; कुंजी टकराव होने पर उपयोगकर्ता-सेट मान जीतता है                                         |
| `overwrite`                  | bucket मेटाडेटा मौजूदा सभी मेटाडेटा को पूरी तरह प्रतिस्थापित करता है                                                |
| `untilFirstChange`           | bucket से सिंक करता है जब तक कोई उपयोगकर्ता मैन्युअली किसी भी मेटाडेटा फ़ील्ड को संपादित नहीं करता, फिर रुक जाता है |
| `append`                     | केवल bucket से नई कुंजियाँ जोड़ता है; मौजूदा कुंजियों को कभी अधिलेखित नहीं करता                                     |

## मिररिंग को ट्रिगर करना

आप किसी भी समय मैन्युअली एक मिरर ट्रिगर कर सकते हैं [डेटा स्रोतों की सूची](https://app.roboflow.com/settings/datasources) में, किसी Datasource के पास वाले play button पर क्लिक करके।

मैन्युअल ट्रिगर निम्नलिखित शर्तों के अधीन है:

* **प्रगति में**: यदि कोई सिंक पहले से चल रहा है, तो उसके समाप्त होने तक आप दूसरा शुरू नहीं कर सकते।
* **कूलडाउन**: सिंक पूरा होने के बाद, मैन्युअल पुनः-ट्रिगर 15 मिनट के लिए अवरुद्ध रहते हैं। बटन का tooltip दिखाता है कि कितने मिनट शेष हैं। कूलडाउन तब छोड़ दिया जाता है जब:
  * पिछले सिंक को आयात करने के लिए कुछ भी नया नहीं मिला (शून्य फ़ाइलें कतारबद्ध हुईं, या सभी फ़ाइलें विफल हुईं)।
  * आपने अंतिम रन के बाद से Datasource कॉन्फ़िगरेशन संपादित किया है।
  * अंतिम रन त्रुटियों के साथ पूरा हुआ।
* **प्रति घंटा सीमा**: एक Datasource को रोलिंग घंटे में अधिकतम 10 बार सिंक किया जा सकता है। यह सीमा तब भी लागू होती है जब कूलडाउन छोड़ने से तुरंत पुनः-ट्रिगर की अनुमति मिल सकती हो।

निर्धारित (cron) सिंक कूलडाउन और प्रति घंटा सीमा दोनों को बायपास करते हैं।

### दैनिक अनुसूची पर चलाना

स्वचालित रूप से मिरर करने के लिए, "Mirror Configuration" टैब के अंतर्गत "Scheduling" अनुभाग खोलें और "Run automatically on a daily schedule" को चेक करें। तब datasource हर 24 घंटे में सिंक होता है। Scheduling डिफ़ॉल्ट रूप से बंद है।

## सिंक किए गए एसेट्स देखना

आपकी प्रत्येक [डेटा स्रोत प्रविष्टि](https://app.roboflow.com/settings/datasources) में एक eye icon होता है जो खोलता है [एसेट लाइब्रेरी](https://docs.roboflow.com/platform/workspaces/asset-library) जो उस विशिष्ट Datasource के चित्रों और वीडियो के लिए फ़िल्टर किया गया है। Datasource के कम से कम एक बार सिंक पूरा करने तक icon निष्क्रिय रहता है।

किसी भी Datasource से सिंक की गई सभी छवियाँ देखने के लिए, Datasources सूची के नीचे "View Datasource Assets" पर क्लिक करें। यह लिंक तब दिखाई देता है जब कम से कम एक Datasource चल चुका हो।

दोनों लिंक Asset Library पर पूर्व-भरे हुए tag filter के साथ जाते हैं ताकि आप केवल अपने Workspace images के bucket-मिरrored subset को ब्राउज़, खोज, और प्रबंधित कर सकें।

## S3-संगत स्टोरेज

Datasources उन S3-संगत storage providers के साथ काम करते हैं जो आवश्यक S3 API operations लागू करते हैं।

इनमें से किसी provider को कॉन्फ़िगर करने के लिए:

1. Datasource के "Connection" टैब में, `S3` को प्रदाता के रूप में चुनें।
2. bucket का नाम और credentials सामान्य रूप से दर्ज करें।
3. प्रदाता का custom `endpoint` URL परिभाषित करें।
4. region को सेट करें `auto` या प्रदाता-विशिष्ट region मान पर।

provider के S3 API endpoint का उपयोग `endpoint`. किसी CDN URL, सार्वजनिक bucket URL, या browser download URL का उपयोग न करें।

इसी तरह के glob pattern filtering, metadata sidecar व्यवहार, और mirror settings इन providers के साथ भी काम करते हैं।

### पथ-शैली पता लगाना

कुछ प्रदाता URL path में bucket नाम की अपेक्षा करते हैं (`endpoint/bucket/key`) न कि hostname में (`bucket.endpoint/key`). एक बार जब आप endpoint दर्ज करते हैं, तो "Connection" टैब में "Use path-style addressing" checkbox दिखाई देता है। Roboflow आपके endpoint से मेल खाने वाली सेटिंग को पहले से चुनता है और यदि आप इसे बदलते हैं तो आपकी पसंद को बनाए रखता है।

इसे MinIO और अन्य self-hosted या NAS gateways, Oracle Cloud compatibility endpoints, किसी IP address या port द्वारा पहुँचे जाने वाले किसी भी endpoint, तथा नाम में बिंदु वाले buckets के लिए चालू करें। virtual-hosted URLs देने वाले providers के लिए इसे बंद रखें (उदा: Cloudflare R2, Backblaze B2, Wasabi, DigitalOcean Spaces, Alibaba Cloud OSS)। यदि गलत सेटिंग उपयोग की जाती है, तो connection test फ़ाइलें सूचीबद्ध करते समय विफल हो जाता है, और त्रुटि आपको स्विच करने के लिए बताती है।

समर्थित S3-संगत storage providers में शामिल हैं:

| प्रदाता                                                     | उदाहरण endpoint hostname                           |
| ----------------------------------------------------------- | -------------------------------------------------- |
| Cloudflare R2                                               | `<account-id>.r2.cloudflarestorage.com`            |
| Backblaze B2                                                | `s3.<region>.backblazeb2.com`                      |
| DigitalOcean Spaces                                         | `<region>.digitaloceanspaces.com`                  |
| Akamai Linode Object Storage                                | `<region>.linodeobjects.com`                       |
| Wasabi                                                      | `s3.<region>.wasabisys.com`                        |
| Vultr Object Storage                                        | `<region>.vultrobjects.com`                        |
| OVHcloud Object Storage                                     | `s3.<region>.io.cloud.ovh.net`                     |
| Scaleway Object Storage                                     | `s3.<region>.scw.cloud`                            |
| Open Telekom Cloud                                          | `obs.<region>.otc.t-systems.com`                   |
| Exoscale SOS                                                | `sos-<region>.exo.io`                              |
| IONOS Cloud Object Storage                                  | `s3-<region>.ionoscloud.com`                       |
| IBM Cloud Object Storage                                    | `s3.<region>.cloud-object-storage.appdomain.cloud` |
| Oracle Cloud Infrastructure Object Storage S3 Compatibility | `compat.objectstorage.<region>.oraclecloud.com`    |
| Seagate Lyve Cloud                                          | `s3.<region>.lyvecloud.seagate.com`                |
| Huawei Cloud OBS                                            | `obs.<region>.myhuaweicloud.com`                   |
| Alibaba Cloud OSS                                           | `oss-<region>.aliyuncs.com`                        |
| Tencent Cloud COS                                           | `cos.<region>.myqcloud.com`                        |
| Yandex Object Storage                                       | `storage.yandexcloud.net`                          |
| Storj Hosted S3 Gateway                                     | `gateway.storjshare.io`                            |

## MCP सर्वर

अपने AI एजेंट को जोड़ें [MCP सर्वर](https://docs.roboflow.com/agents/mcp-server) और यह इन उपकरणों के साथ किसी bucket को किसी project में मिरर कर सकता है:

<table data-search="false"><thead><tr><th width="290">टूल</th><th>विवरण</th></tr></thead><tbody><tr><td><code>connect_cloud_storage</code></td><td>क्रेडेंशियल से पहली रन तक, शुरुआत से अंत तक एक bucket mirror सेट अप करें।</td></tr><tr><td><code>credentials_create</code></td><td>एक cloud storage credential बनाएँ।</td></tr><tr><td><code>credentials_list</code></td><td>workspace में cloud storage credentials सूचीबद्ध करें।</td></tr><tr><td><code>datasource_create</code></td><td>एक datasource बनाएँ जो किसी bucket path को किसी project में mirror करता है।</td></tr><tr><td><code>datasource_validate</code></td><td>जाँचें कि Roboflow bucket तक पहुँच सकता है।</td></tr><tr><td><code>datasource_trigger</code></td><td>एक mirror run शुरू करें।</td></tr><tr><td><code>datasource_job_get</code></td><td>एक mirror run की स्थिति और आँकड़े प्राप्त करें।</td></tr></tbody></table>
