# RecoveryTool

## Duplicati Recovery Tool

This tool performs a recovery of as much data as possible in small steps that must be performed in order. We recommend that you use duplicati-cli to do the restore, and rely only on this tool if all else fails.

The recovery tool is called `Duplicati.CommandLine.RecoveryTool.exe` on Windows and `duplicati-recovery-tool` on Linux and MacOS.

### The steps to perform a disaster recovery are:

1: **Download:** Download files from the remote store and keep them unencrypted on a location available in the local filesystem.

2: **Index:** Builds an index file to figure out what data is contained inside the files downloaded

3: **Restore:** Restores the files to a destination you choose

### Optionally you can also run:

4: **List:** Shows what files are available and tests filters

5: **Recompress:** Ability to change compression type of files on remote backend e.g. from 7z to ZIP

### Download

```
duplicati-recovery-tool download <backend url> <working folder> [options]
```

Downloads all files matching the Duplicati filenames from the remote storage to the current directory, and decrypts them in the process. The remote url must be one supported by Duplicati. Use `duplicati-cli help backends` to see backends and options.

### Index

```
duplicati-recovery-tool index <working folder> [options]
```

Examines all files found in the current folder and produces an `index.txt` file, which is a list of all block hashes found in the files. The index file can be rather large. It defaults to being stored in the current working directory, but can be specified with `--indexfile`. Some files are created in the system temporary folder, use `--tempdir` to set an alternative temporary folder location.

### Restore

```
duplicati-recovery-tool restore <working folder> [version] [options]
```

Restores all files to their respective destinations. Use `--targetpath` to choose another folder where the files are restored into. Use the filters, `--exclude`, to perform a partial restore. Version can be either a number, a filename or a date. If omitted the most recent backup is used.

The restore process requires a fast lookup, which is optimal if all the hashes can be kept in memory. Use the option to `--reduce-memory-use=true` to toggle a slower low-memory restore. If the process is interrupted for any reason, note the file counter and use `--offset=<count>` to start the restore after the last restored file.

Advanced performance options are:

* `--reduce-memory-use`: Disables keeping all hashes in memory; use if memory is limited on the restoring machine
* `--disable-file-verify`: Disables the initial hashing of the restored file
* `--disable-wrapped-zip`: Disable using the faster .NET native ZIP archive in favor of the more resilient one in Duplicati
* `--max-open-archives`: Sets the number of archives to keep open for faster access (uses some memory pr. archive); default 200

### List

```
duplicati-recovery-tool list <working folder> [version] [options]
```

Lists contents of backups. Version can be either a number, a filename or a date. If \[version] is omitted a list of backup versions are shown, if \[version] is supplied, files from that version are listed. Use the filters, `--exclude`, to show a subset of files.

### Recompress

```
duplicati-recovery-tool recompress zip <backend url> <working folder> \
  --reupload --reencrypt [options]
```

1. Downloads whole remote storage to the current working folder.
2. Recompress from existing compression type to the chosen compression format.
3. If `--reencrypt` is supplied, again reencrypts using same passphrase (needs to be decrypted for compression type change)
4. If `--reupload` is supplied, files with old compression are deleted and recompressed files are uploaded back to remote storage (it is recommended to take at least temporary copy of remote storage before enabling this switch)

**Warning**: If `--reupload` is supplied it is advisable to specify `--reencrypt` otherwise the files will be uploaded unencrypted!

**Warning**: Before recompress delete the [local database](https://docs.duplicati.com/database-and-storage/the-local-database) and after recompress recreate local database before executing any operation on backup. This allows Duplicati to read new file names from remote storage.

### Supported Options

The backend modules support all their normal options. To see what options a specific backend supports, type:

```
duplicati-cli help
```

The environment variables `AUTH_USERNAME` and `AUTH_PASSWORD` are supported. The options `--parameters-file` and `--tempdir` are supported.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.duplicati.com/duplicati-programs/command-line-interface-cli-1/recoverytool.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
