id = "kopia"
name = "Kopia"
homepage = "https://kopia.io/"
description = "Fast and secure open-source backup/restore tool."
executables = ["kopia"]
[dotfiles]
paths = ["[configHome]/kopia/", "[appData]/kopia/", "%APPDATA%/kopia/"]
secret = [
"[configHome]/kopia/repository.config",
"[appData]/kopia/repository.config",
"%APPDATA%/kopia/repository.config",
]
[commands]
format = 1
label = "Create a snapshot"
description = "Back up a directory or file to the connected Kopia repository. Repository setup, policies and restore are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false }
[[commands.source]]
id = "help"
kind = "manual"
url = "https://kopia.io/docs/reference/command-line/common/snapshot-create/"
revision = "2026-10"
evidence = """
kopia snapshot create [source]
--description Free-form snapshot description.
--fail-fast, --no-fail-fast (shown as --[no-]fail-fast) Fail fast when creating snapshot.
--parallel Upload N files in parallel
--pin Create a pinned snapshot that will not expire automatically
--tags Tags applied on the snapshot.
--all, --no-all (shown as --[no-]all) Create snapshots for files or directories previously backed up by this user on this computer.
--json, --no-json (shown as --[no-]json) Output result in JSON format to stdout
"""
[[commands.subcommand]]
path = ["snapshot", "create"]
label = "Create a snapshot"
[[commands.subcommand.source]]
id = "help"
kind = "manual"
url = "https://kopia.io/docs/reference/command-line/common/snapshot-create/"
revision = "2026-10"
evidence = """
kopia snapshot create [source]
--description Free-form snapshot description.
--fail-fast, --no-fail-fast (shown as --[no-]fail-fast) Fail fast when creating snapshot.
--parallel Upload N files in parallel
--pin Create a pinned snapshot that will not expire automatically
--tags Tags applied on the snapshot.
--all, --no-all (shown as --[no-]all) Create snapshots for files or directories previously backed up by this user on this computer.
--json, --no-json (shown as --[no-]json) Output result in JSON format to stdout
"""
[[commands.subcommand.field]]
id = "source"
label = "Directory or file"
type = "path"
path = { kind = "any", role = "input" }
position = 0
multiple = true
sources = ["help"]
[[commands.subcommand.field]]
id = "all"
label = "All previously backed-up sources"
description = "Cannot be combined with a source path."
type = "boolean"
option = ["--all"]
sources = ["help"]
[[commands.subcommand.field]]
id = "description"
label = "Description"
type = "string"
option = ["--description"]
sources = ["help"]
[[commands.subcommand.field]]
id = "tags"
label = "Tags"
description = "key:value."
type = "string"
option = ["--tags"]
multiple = true
sources = ["help"]
[[commands.subcommand.field]]
id = "pin"
label = "Pin snapshot"
description = "A pinned snapshot does not expire automatically. Value is the pin name."
type = "string"
option = ["--pin"]
sources = ["help"]
[[commands.subcommand.field]]
id = "parallel"
label = "Parallel uploads"
type = "integer"
option = ["--parallel"]
sources = ["help"]
[[commands.subcommand.field]]
id = "fail_fast"
label = "Fail fast"
type = "boolean"
option = ["--fail-fast"]
sources = ["help"]
[[commands.subcommand.field]]
id = "json"
label = "JSON output"
type = "boolean"
option = ["--json"]
sources = ["help"]
[[commands.subcommand.task]]
id = "backup"
label = "Back up a directory"
fields = ["source", "description"]
required = ["source"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["source", "all", "description", "tags"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["pin", "parallel", "fail_fast", "json"]