BORG-DIFF(1)

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) 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)

AUTHOR
The Borg Collective