# Deduplication: Skip, Overwrite, or Keep Both

> Choose what Blober does when a file already exists at the destination. Compare skip, overwrite, and keep both, and see which providers support it.

**Deduplication** is a destination setting. It decides what Blober does when the exact destination path it is about to write is already occupied.

## What counts as a duplicate

Deduplication compares the full destination path: destination folder, path template, and filename. Two files are duplicates when they would land on the same path.

It does not compare file contents. Nothing is hashed or read back from the destination to make this decision.

## The policies

| Policy                                       | What happens                                                                            | Where it is available                                               |
| -------------------------------------------- | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
| **Skip if a file with the same name exists** | The file is not written. Blober records it as skipped and continues with the next file. | Every destination that supports deduplication. This is the default. |
| **Overwrite the existing file**              | The file at the destination is replaced.                                                | Destinations that can replace a file in place.                      |
| **Keep both (rename the new copy)**          | The new file is saved as `name (1).ext`, then `name (2).ext`, and so on.                | Local destinations only.                                            |

## Where to set it

Open the workflow, select the destination, and look for **Deduplication** in the destination configuration. The choice is saved with the workflow, so it applies to every run of that workflow.

## Not every destination supports deduplication

The control only appears for destinations that can act on an existing file. Two cases have no setting:

* **Source-only providers.** A provider that can only be read from has nothing to deduplicate.
* **Destinations with no reliable way to check whether a name already exists.**

There is also one destination-specific rule:

> **Caution**
>
> **Archived Azure blobs are always skipped**, whichever policy is selected. An archived blob cannot be rewritten, so Blober records it as skipped rather than failing the transfer. Rehydrate the blob first if you want to replace it.

## Skipping by name is not a content comparison

Two different files can share a filename. Cameras, phones, and shared folders produce `IMG_0001.JPG` again and again, and Google Photos libraries commonly contain unrelated files with identical names.

Skip by name keeps one file per exact destination path. If your source can contain different files with the same name, either keep both or separate them with folder and path-template rules.

## Deduplication compared to resuming

These solve different problems, and you can use both:

| Situation                                                          | What handles it                                                                                         |
| ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------- |
| A task was paused, cancelled, or interrupted by a crash or restart | **Resume** the same task. It keeps per-file progress and does not process records it already completed. |
| You deliberately want to run the workflow again                    | **Deduplication** decides whether files that are already at the destination get transferred again.      |

Resuming needs no setting and works on every provider. Deduplication is a per-destination choice and is limited to the providers listed above.

## Rerunning a workflow

A rerun enumerates the source again and considers every file it finds. On a destination with deduplication, the setting is what stops the repeats:

* With **Skip if a file with the same name exists**, files already at the destination are skipped and the run only transfers what is missing. This is the setting to use for a repeat export into the same folder.
* With **Overwrite the existing file**, the destination copies are replaced on providers that support it.
* On a destination without deduplication, a rerun transfers the files again.

For a worked example with a long Google Photos export, read [How Blober Handles Duplicate Files in Long-Running Backups](/kb/articles/avoid-duplicate-files-long-running-backups/).

## Provider references

Every cloud destination that supports deduplication uses the same two policies, skip and overwrite. Two providers document extra rules:

* [Local](/kb/docs/providers/local/#option-deduplication) adds the keep-both policy
* [Azure Blob Storage](/kb/docs/providers/azure-blob/#option-deduplication) always skips archived blobs

The option control in the app is the source of truth for a given destination: if the destination does not support deduplication, the control is not shown.