borg-diff

BORG-DIFF(1) borg backup tool BORG-DIFF(1)

NAME

   borg-diff - Diff contents of two archives

SYNOPSIS

   borg [common options] diff [options] REPO::ARCHIVE1 ARCHIVE2 [PATH...]

DESCRIPTION

   This command finds differences (file contents, user/group/mode) between archives.

   A  repository location and an archive name must be specified for REPO::ARCHIVE1.  ARCHIVE2 is just another archive name in same repository (no repository lo
   cation allowed).

   For archives created with Borg 1.1 or newer diff automatically detects whether the archives are created with the same chunker params. If so, only  chunk  IDs
   are compared, which is very fast.

   For  archives  prior to Borg 1.1 chunk contents are compared by default.  If you did not create the archives with different chunker params, pass --same-chun
   ker-params.  Note that the chunker params changed from Borg 0.xx to 1.0.

   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

   REPO::ARCHIVE1
          repository location and ARCHIVE1 name

   ARCHIVE2
          ARCHIVE2 name (no repository location allowed)

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

options

   --numeric-owner
          deprecated, use --numeric-ids instead

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

   --content-only
          Only compare differences in content (exclude metadata differences)

   --json-lines
          Format output as JSON Lines.

Exclusion 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 init -e=none testrepo
      $ mkdir testdir
      $ cd testdir
      $ echo asdf > file1
      $ dd if=/dev/urandom bs=1M count=4 > file2
      $ touch file3
      $ borg create ../testrepo::archive1 .

      $ chmod a+x file1
      $ echo "something" >> file2
      $ borg create ../testrepo::archive2 .

      $ echo "testing 123" >> file1
      $ rm file3
      $ touch file4
      $ borg create ../testrepo::archive3 .

      $ cd ..
      $ borg diff testrepo::archive1 archive2
      [-rw-r--r-- -> -rwxr-xr-x] file1
         +135 B    -252 B file2

      $ borg diff testrepo::archive2 archive3
          +17 B      -5 B file1
      added           0 B file4
      removed         0 B file3

      $ borg diff testrepo::archive1 archive3
          +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 --json-lines testrepo::archive1 archive3
      {"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}]

SEE ALSO

   borg-common(1)

AUTHOR

   The Borg Collective

                                                                         2023-03-22                                                                 BORG-DIFF(1)