> 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).

# डेटा स्रोत

बाहरी स्टोरेज से इमेजें और मेटाडेटा अपने Roboflow वर्कस्पेस में स्वचालित रूप से सिंक करें।

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

वर्तमान में, AWS S3, S3-संगत स्टोरेज, Google Cloud Storage, और Azure Blob Storage bucket mirroring समर्थित है।

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

## Bucket Mirror कैसे काम करता है

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

* समर्थित छवि प्रारूप: JPEG, PNG, BMP, WebP, AVIF
* आपके workspace में पहले से मौजूद फ़ाइलें (उनके bucket location और hash से मिलान करके) दोबारा आयात नहीं की जातीं, जिससे egress लागत कम होती है
* यदि कोई `.json` sidecar फ़ाइल उसी base name वाली किसी छवि के साथ मौजूद है, तो उसका मेटाडेटा आयात किया जाता है; nested keys को dot notation का उपयोग करके समतल किया जाता है (उदा., `capture.temperature`) - देखें [Metadata Sidecars](#metadata-sidecars)
* जो फ़ाइलें bucket से गायब हो जाती हैं, उन्हें डिफ़ॉल्ट रूप से रखा जाता है; उन्हें हटाने के लिए orphan removal सक्षम करें (देखें [Orphaned फ़ाइलें हटाना](#removing-orphaned-files))

### वीडियो

Roboflow MP4 और QuickTime (`.mov`) वीडियो भी मिरर करता है, प्रत्येक 3 GB तक। एक वीडियो केवल एसेट लाइब्रेरी में संग्रहीत होता है: इसे किसी Project में नहीं जोड़ा जाता, और उससे कोई फ़्रेम नहीं निकाले जाते। वीडियो उसी तरह `.json` sidecar मेटाडेटा पढ़ते हैं जैसे छवियाँ पढ़ती हैं। वीडियो को बाहर रखने के लिए, ऐसा glob pattern उपयोग करें जो केवल आपकी image files से मेल खाए।

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

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

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

### Roboflow में एक Credential जोड़ें

Roboflow आपके bucket access को सुरक्षित रूप से और एन्क्रिप्ट करके एक पुन: प्रयोज्य credential के रूप में संग्रहीत करता है। provider-विशिष्ट setup steps और least-privilege guidance के लिए, उपयोग करें [AWS S3 Credentials](/datasets/hi/create-and-upload/adding-data/datasource-credentials/aws-s3.md), [Google Cloud Storage Credentials](/datasets/hi/create-and-upload/adding-data/datasource-credentials/gcs.md)या [Azure Blob Storage Credentials](/datasets/hi/create-and-upload/adding-data/datasource-credentials/azure.md).

पर जाएँ [Credentials](https://app.roboflow.com/settings/thirdpartykeys) अपने Workspace settings में और क्लिक करें [Add Credential](https://app.roboflow.com/settings/thirdpartykeys#create).

### Bucket Mirroring के लिए एक Datasource कॉन्फ़िगर करें

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

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

"Bucket" field केवल bucket name लेता है (उदा.: `my-bucket`, `s3://my-bucket`)। नाम के बाद path वाला bucket value अस्वीकार कर दिया जाता है। bucket के केवल किसी हिस्से को mirror करने के लिए, "Mirror Configuration" tab में "File Filters" के अंतर्गत `images/**/*` जैसा कोई glob pattern जोड़ें। Azure Blob Storage के लिए, यही नियम container name पर लागू होता है।

### Import Destination चुनना

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

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

### Glob Patterns से फ़िल्टर करना

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

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

### Pattern semantics

* `*` के अलावा किसी भी वर्ण से मेल खाता है `/` (एकल directory level)
* `**` सहित किसी भी वर्ण से मेल खाता है `/` (एकाधिक directory levels)

### उदाहरण

**उपसर्ग के आधार पर मिलाएँ:**

```
harvest**
```

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

**किसी folder की हर चीज़ से मिलाएँ:**

```
/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`

**किसी नाम pattern के साथ एक विशिष्ट directory level पर मिलाएँ:**

```
/*/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"
```

### Orphaned फ़ाइलें हटाना

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

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

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

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

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

### छवि अपडेट

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

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

### Metadata Sidecars

हर छवि के साथ bucket में उसके समान base name वाली एक `.json` sidecar फ़ाइल रखकर छवियों में मेटाडेटा संलग्न करें:

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

sidecar फ़ाइल में key-value जोड़े होते हैं:

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

Nested objects को dot notation का उपयोग करके समतल किया जाता है। ऊपर दिया गया उदाहरण यह उत्पन्न करता है:

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

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

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

### Metadata Sync रणनीतियाँ

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

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

| रणनीति                       | व्यवहार                                                                                                           |
| ---------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| `mergeBucketWins` (डिफ़ॉल्ट) | दोनों स्रोतों को मिलाता है; key conflicts होने पर bucket मान जीतता है                                             |
| `mergeUserWins`              | दोनों स्रोतों को मिलाता है; key conflicts होने पर user-set मान जीतता है                                           |
| `overwrite`                  | Bucket metadata सभी मौजूदा metadata को पूरी तरह प्रतिस्थापित कर देता है                                           |
| `untilFirstChange`           | bucket से तब तक सिंक करता है जब तक user मैन्युअल रूप से किसी metadata field को संपादित नहीं करता, फिर रुक जाता है |
| `append`                     | केवल bucket से नए keys जोड़ता है; मौजूदा keys को कभी अधिलेखित नहीं करता                                           |

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

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

मैन्युअल ट्रिगर निम्न guards के अधीन है:

* **प्रगति में**: यदि कोई sync पहले से चल रहा है, तो उसके समाप्त होने तक आप दूसरा शुरू नहीं कर सकते।
* **Cooldown**: किसी sync के पूरा होने के बाद, मैन्युअल re-trigger 15 मिनट के लिए अवरुद्ध रहते हैं। button tooltip दिखाता है कि कितने मिनट शेष हैं। cooldown तब छोड़ा जाता है जब:
  * पिछले sync ने आयात करने के लिए कुछ नया नहीं पाया (शून्य files enqueued, या सभी files विफल हुईं)।
  * आपने पिछले रन के बाद Datasource configuration संपादित की है।
  * अंतिम रन त्रुटियों के साथ पूरा हुआ।
* **प्रति घंटा सीमा**: किसी Datasource को rolling hour में अधिकतम 10 बार sync किया जा सकता है। यह सीमा तब भी लागू होती है जब cooldown skip अन्यथा तुरंत retrigger की अनुमति देता।

अनुसूचित (cron) syncs cooldown और hourly cap दोनों को बायपास करती हैं।

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

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

## Synced Assets देखना

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

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

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

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

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

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

1. Datasource के "Connection" tab में, चुनें `S3` को provider के रूप में।
2. हमेशा की तरह bucket name और credentials दर्ज करें।
3. provider का कस्टम `endpoint` URL निर्धारित करें।
4. region को सेट करें `auto` या provider-विशिष्ट region value पर।

provider के S3 API endpoint का उपयोग करें `endpoint`के लिए। CDN URL, public bucket URL, या browser download URL का उपयोग न करें।

endpoint सार्वजनिक इंटरनेट से पहुँच योग्य होना चाहिए। Roboflow ऐसे endpoint को अस्वीकार करता है जो `localhost`की ओर संकेत करता हो, किसी private network address, या किसी link-local address की ओर, और वह ऐसे host name को भी अस्वीकार करता है जो उनमें से किसी एक पर resolve होता हो।

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

### Path-Style Addressing

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

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

समर्थित 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 Server

अपने AI एजेंट को [MCP Server](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>credential से पहली रन तक, end to end एक 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>
