---
name: "borg2-diff"
section: "1"
platform: "linux"
package: "borgbackup2"
version: "2.0.0b19-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/borg2-diff"
---

# borg2-diff(1)

Diff contents of two archives

## NAME

borg-diff - Diff contents of two archives

## SYNOPSIS

borg \[common options\] diff \[options\] ARCHIVE1 ARCHIVE2 \[PATH...\]

## DESCRIPTION

This command finds differences (file contents, metadata) between ARCHIVE1 and ARCHIVE2.

For more help on include/exclude patterns, see the *borg\_patterns* command output.

## OPTIONS

See *[borg-common(1)](/borg-common/1.md)* for common options of Borg commands.

### arguments

- **ARCHIVE1**

  ARCHIVE1 name

- **ARCHIVE2**

  ARCHIVE2 name

- **PATH**

  paths of items inside the archives to compare; patterns are supported

### options

- **--numeric-ids**

  only consider numeric user and group identifiers

- **--same-chunker-params**

  Override check of chunker parameters.

- **--sort**

  Sort the output lines by file path.

- **--format** *FORMAT*

  specify format for differences between archives (default: "{change} {path}{NL}")

- **--json-lines**

  Format output as JSON Lines.

- **--content-only**

  Only compare differences in content (exclude metadata differences)

### Include/Exclude options

- **-e** *PATTERN,* **--exclude** *PATTERN*

  exclude paths matching PATTERN

- **--exclude-from** *EXCLUDEFILE*

  read exclude patterns from EXCLUDEFILE, one per line

- **--pattern** *PATTERN*

  include/exclude paths matching PATTERN

- **--patterns-from** *PATTERNFILE*

  read include/exclude patterns from PATTERNFILE, one per line

## EXAMPLES

```
$ borg diff archive1 archive2
    +17 B      -5 B [-rw-r--r-- -> -rwxr-xr-x] file1
   +135 B    -252 B file2
added           0 B file4
removed         0 B file3
$ borg diff archive1 archive2
{"path": "file1", "changes": [{"type": "modified", "added": 17, "removed": 5}, {"type": "mode", "old_mode": "-rw-r--r--", "new_mode": "-rwxr-xr-x"}]}
{"path": "file2", "changes": [{"type": "modified", "added": 135, "removed": 252}]}
{"path": "file4", "changes": [{"type": "added", "size": 0}]}
{"path": "file3", "changes": [{"type": "removed", "size": 0}]}
```

## NOTES

### The FORMAT specifier syntax

The **--format** option uses python's format string syntax \<https://docs.python.org/3.9/library/string.html#formatstrings\> .

Examples:

```
$ borg diff --format '{content:30} {path}{NL}' ArchiveFoo ArchiveBar
modified:  +4.1 kB  -1.0 kB    file-diff
...
# {VAR:<NUMBER} - pad to NUMBER columns left-aligned.
# {VAR:>NUMBER} - pad to NUMBER columns right-aligned.
$ borg diff --format '{content:>30} {path}{NL}' ArchiveFoo ArchiveBar
   modified:  +4.1 kB  -1.0 kB file-diff
...
```

The following keys are always available:

- •

  NEWLINE: OS dependent line separator

- •

  NL: alias of NEWLINE

- •

  NUL: NUL character for creating print0 / xargs -0 like output

- •

  SPACE: space character

- •

  TAB: tab character

- •

  CR: carriage return character

- •

  LF: line feed character

Keys available only when showing differences between archives:

- •

  path: archived file path

- •

  change: all available changes

- •

  content: file content change

- •

  mode: file mode change

- •

  type: file type change

- •

  owner: file owner (user/group) change

- •

  group: file group change

- •

  user: file user change

- •

  link: file link change

- •

  directory: file directory change

- •

  blkdev: file block device change

- •

  chrdev: file character device change

- •

  fifo: file fifo change

- •

  mtime: file modification time change

- •

  ctime: file change time change

- •

  isomtime: file modification time change (ISO 8601)

- •

  isoctime: file creation time change (ISO 8601)

## SEE ALSO

*[borg-common(1)](/borg-common/1.md)*

## AUTHOR

The Borg Collective
