> 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/roboflow/roboflow-hi/datasets/adding-data/datasources.md).

# Datasources

Datasources आपको cloud storage से images और metadata को निरंतर Roboflow asset library में mirror करने देती हैं। एक बार mirror हो जाने पर, images को semantics, custom metadata, tags, या image similarity से खोजा जा सकता है, और labeling तथा training के लिए किसी भी Project में जोड़ा जा सकता है।

फिलहाल, AWS S3 और S3-compatible storage bucket mirroring समर्थित है। Azure Blob Storage और Google Cloud Storage support जल्द ही उपलब्ध होगा।

{% hint style="warning" %}
यदि आपका source data AWS S3 जैसी cloud storage में है, तो Roboflow में जाने के लिए default path के रूप में Datasources और Bucket Mirror का उपयोग करें। signed URL uploads या local download workflows का उपयोग केवल one-time या ad hoc imports के लिए करें।
{% endhint %}

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

जब आप किसी Datasource को configure करते हैं, Roboflow आपके S3 bucket को crawl करता है और सभी matching image files को आपके Workspace के [Asset Library](/roboflow/roboflow-hi/workspaces/asset-library.md).

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

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

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

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

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

Roboflow आपके bucket access को सुरक्षित रूप से और encrypted रूप में एक reusable credential के तौर पर store करता है। AWS setup steps और least-privilege guidance के लिए, उपयोग करें [AWS S3 Credentials](/roboflow/roboflow-hi/datasets/adding-data/datasources/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 configure करें

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

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

### Import Destination चुनना

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

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

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

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

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

### Pattern semantics

* `*` को छोड़कर किसी भी characters से मेल खाता है `/` (single directory level)
* `**` सभी characters सहित किसी भी characters से मेल खाता है, `/` (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`

**किसी name 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`

**सटीक path:**

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

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

**फ़ाइल नामों में literal wildcards:**\
pattern को quotes में रखें ताकि `*` को एक literal character के रूप में माना जाए:

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

### Removing Orphaned Files

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

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

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

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

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

### Image Updates

जब S3 में कोई image modify होती है, Roboflow आपके workspace में उसकी copy को update कर सकता है:

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

### Metadata Sidecars

प्रत्येक image के साथ bucket में उसी base name वाली एक `.json` sidecar file रखकर images में metadata संलग्न करें:

```
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` values फ़िल्टर कर दिए जाते हैं

### Metadata Sync Strategies

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

* `updateMetadataWhenNewer` (डिफ़ॉल्ट: `true`) — जब sidecar file stored version से नया होता है, metadata को फिर से sync करता है
* `updateMetadataStrategy` — नियंत्रित करता है कि synced metadata, UI या API के माध्यम से आपने manually set किए गए metadata के साथ कैसे interact करता है:

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

## Mirroring शुरू करना

आप किसी भी समय [Datasources list](https://app.roboflow.com/settings/datasources) से, किसी Datasource के पास मौजूद play button पर क्लिक करके, मिरर को manually trigger कर सकते हैं।

एक manual trigger निम्न guards के अधीन है:

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

Scheduled (cron) syncs cooldown और hourly cap दोनों को bypass करती हैं।

### दैनिक schedule पर चलाना

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

## Synced Assets देखना

आपकी प्रत्येक [datasource entries](https://app.roboflow.com/settings/datasources) में एक eye icon होता है जो खोलता है [Asset Library](/roboflow/roboflow-hi/workspaces/asset-library.md) उस विशिष्ट Datasource की images और videos के लिए फ़िल्टर किया हुआ दृश्य। यह icon तब तक disabled रहता है जब तक Datasource कम से कम एक sync पूरा नहीं कर लेता।

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

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

## S3-compatible storage

Datasources उन S3-compatible 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-specific 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-compatible 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`                            |
