---
name: "desync-extract"
section: "1"
platform: "linux"
package: "desync"
version: "1.1.5-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/desync-extract"
---

# desync-extract(1)

Read an index and build a blob from it

## NAME

desync-extract - Read an index and build a blob from it

## SYNOPSIS

**desync extract \<index\> \<output\> \[flags\]**

## DESCRIPTION

Reads an index and builds a blob reading chunks from one or more chunk stores. Use '-' to read the index from STDIN.

When using -k, the blob will be extracted in-place utilizing existing data and the target file will not be deleted on error. This can be used to restart a failed prior extraction without having to retrieve completed chunks again.

Multiple optional seed indexes can be given with --seed. The matching blob should have the same name as the index file without the .caibx extension. If the blob data is in another location, or has a different name, the path can be set explicitly by appending a colon and the data path to the index path, as in --seed \<index\>:\<blob\>. If several seed files and indexes are available, the --seed-dir option can be used to automatically select all .caibx files in a directory as seeds, expecting the matching blobs next to them.

If a seed is invalid, the extract operation is aborted by default. With --skip-invalid-seeds, invalid seeds are discarded and the extraction continues without them. Alternatively, --regenerate-invalid-seeds regenerates invalid seed indexes in memory from the available data; neither data nor indexes are changed on disk. Also, if a seed changes while processing, its invalid chunks will be taken from the self seed, or the store, instead of aborting.

## OPTIONS

**--ca-cert**=""\
 	trust authorities in this file, instead of OS trust store

**-c**, **--cache**=""\
 	store to be used as cache

**-r**, **--cache-repair**\[=true\]\
 	replace invalid chunks in the cache from source

**--client-cert**=""\
 	path to client certificate for TLS authentication

**--client-key**=""\
 	path to client key for TLS authentication

**-n**, **--concurrency**=10\
 	number of concurrent goroutines, -1 to let desync choose: the number of CPUs for chunking and hashing, adapting to each store up to 128 for transfers

**-e**, **--error-retry**=3\
 	number of times to retry in case of network error

**-b**, **--error-retry-base-interval**=500ms\
 	initial retry delay, increases linearly with each subsequent attempt

**-h**, **--help**\[=false\]\
 	help for extract

**-k**, **--in-place**\[=false\]\
 	extract the file in place and keep it in case of error

**--print-stats**\[=false\]\
 	print extraction statistics to stdout when done

**--regenerate-invalid-seeds**\[=false\]\
 	regenerate seed indexes with invalid chunks

**--seed**=\[\]\
 	seed indexes

**--seed-dir**=\[\]\
 	directory with seed index files

**--skip-invalid-seeds**\[=false\]\
 	skip seeds with invalid chunks

**-s**, **--store**=\[\]\
 	source store(s)

**-t**, **--trust-insecure**\[=false\]\
 	trust invalid certificates

## OPTIONS INHERITED FROM PARENT COMMANDS

**--config**=""\
 	config file (default $HOME/.config/desync/config.json)

**--digest**="sha512-256"\
 	digest algorithm, sha512-256 or sha256

**--verbose**\[=false\]\
 	verbose mode

## EXAMPLE

```
  desync extract -s http://192.168.1.1/ -c /path/to/local file.caibx largefile.bin
  desync extract -s /mnt/store -s /tmp/other/store file.tar.caibx file.tar
  desync extract -s /mnt/store --seed /mnt/v1.caibx v2.caibx v2.vmdk
  desync extract -s /mnt/store --seed /tmp/v1.caibx:/mnt/v1 v2.caibx v2.vmdk
```

## SEE ALSO

**[desync(1)](/desync/1.md)**

## HISTORY

20-Oct-2026 Auto generated by spf13/cobra
