> 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-संगत स्टोरेज बकेट मिररिंग समर्थित है। Azure Blob Storage और Google Cloud Storage का समर्थन जल्द आ रहा है।

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

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

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

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

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

### पूर्व-आवश्यकताएँ

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

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

Roboflow आपके bucket access को सुरक्षित रूप से और encrypted रूप में एक पुन: उपयोग योग्य credential के तौर पर संग्रहीत करता है। AWS setup steps और least-privilege guidance के लिए, उपयोग करें [AWS S3 क्रेडेंशियल्स](/datasets/hi/create-and-upload/adding-data/datasource-credentials/aws-s3.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 से। फ़ॉर्म में दो टैब हैं:

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

### Import Destination चुनना

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

* "Workspace" में मिरर करता है [एसेट लाइब्रेरी](https://docs.roboflow.com/platform/workspaces/asset-library). "Import into" dropdown का उपयोग files को workspace root में रखने के लिए करें, या उन्हें उस 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 import की जाती हैं। आप glob patterns का उपयोग करके यह सीमित कर सकते हैं कि कौन-सी files import हों, चाहे सीधे निर्दिष्ट करके या किसी `.txt` file जो bucket में संग्रहीत है।

आप glob patterns के बजाय file paths की एक स्पष्ट whitelist भी प्रदान कर सकते हैं।

### Pattern semantics

* `*` को छोड़कर किसी भी वर्ण से मेल खाता है `/` (single directory level)
* `**` किसी भी वर्ण से मेल खाता है, जिसमें शामिल है `/` (multiple directory levels)

### उदाहरण

**prefix के आधार पर मिलान करें:**

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

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

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

**सटीक path:**

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

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

**Filenames में literal wildcards:**\
Pattern को quotes में लपेटें ताकि `*` को एक literal character के रूप में माना जाए:

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

### Orphaned Files हटाना

Orphan removal डिफ़ॉल्ट रूप से बंद है, इसलिए जो files आपके bucket से गायब हो जाती हैं उन्हें बनाए रखा जाता है। जब `removeOrphanedSourcesWhenDisappeared` सक्षम होता है, तो जो files अब आपके S3 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 अक्षम करें।

### File Naming

यह `namingStrategy` सेटिंग नियंत्रित करती है कि imported files को Roboflow में कैसे नाम दिया जाए और कैसे दिखाया जाए:

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

### Image Updates

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

* `updateImageWhenNewer` (default: `true`) - जब S3 object संग्रहीत संस्करण से नया होता है, तो image को फिर से import करता है
* `updateImageStrategy` - नियंत्रित करता है कि update कैसे लागू हो; वर्तमान में `overwrite` (मौजूदा image को प्रतिस्थापित करता है) समर्थित है

### Metadata Sidecars

हर image के साथ bucket में एक `.json` sidecar file रखकर images में metadata जोड़ें, उसी base name का उपयोग करते हुए:

```
my-bucket/
  images/
    photo_001.jpg
    photo_001.json      # photo_001.jpg के लिए metadata
    photo_002.jpg
    photo_002.json      # photo_002.jpg के लिए metadata
```

sidecar file में key-value pairs होते हैं:

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

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

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

Sidecar file सीमाएँ:

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

### Metadata Sync Strategies

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

* `updateMetadataWhenNewer` (default: `true`) - जब sidecar file संग्रहीत संस्करण से नई होती है, तो metadata को फिर से sync करता है
* `updateMetadataStrategy` - नियंत्रित करता है कि synced metadata, UI या API के माध्यम से आपने manually सेट किए गए metadata के साथ कैसे इंटरैक्ट करता है:

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

## एक Mirroring ट्रिगर करना

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

एक मैन्युअल trigger निम्न guards के अधीन है:

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

Scheduled (cron) syncs cooldown और hourly cap दोनों को बायपास करते हैं।

### Daily Schedule पर चलाना

स्वचालित रूप से mirror करने के लिए, "Mirror Configuration" tab के अंतर्गत "Scheduling" अनुभाग खोलें और "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 की images और videos पर फ़िल्टर किया गया है। जब तक Datasource कम से कम एक sync पूरा नहीं कर लेता, icon निष्क्रिय रहता है।

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

दोनों links आपको Asset Library पर pre-filled tag filter के साथ ले जाते हैं ताकि आप केवल अपने Workspace images के bucket-mirrored subset को browse, search, और manage कर सकें।

## S3-compatible storage

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

इन providers में से किसी एक को configure करने के लिए:

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

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

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

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