borg-recreate(1)

πŸ’– NAME πŸ’–

borg-recreate β€” the borg subcommand that recreates archives ✨ like it's giving archive glow-up energy.


πŸ¦‹ SYNOPSIS πŸ¦‹

borg [common options] recreate [options] [PATH...]

🫢 DESCRIPTION 🫢

okay so, borg-recreate recreates the contents of existing archives. That's the whole vibe. πŸŽ€

⚠️ bestie. listen. Recreate is a potentially dangerous function and might lead to data loss (if used wrongly). BE VERY CAREFUL! 😭

Important: repository disk space is not freed until you run borg compact. So don't come crying to me about your disk usage before you compact, okay? πŸ’…

--exclude, --exclude-from, --exclude-if-present, --keep-exclude-tags and PATH have the exact same semantics as in borg create, except they only check files in the archives and not in the local filesystem. If paths are specified, the resulting archives will contain only files from those paths.

Note that all paths in an archive are relative, therefore absolute patterns/paths will not match (--exclude, --exclude-from, PATHs). It's giving "no absolute paths allowed in this house" 🚫

--chunker-params will re-chunk all files in the archive. This can be used to switch existing archives to different chunker parameters (or a different chunker algorithm), so they deduplicate with archives created using these parameters. Iconic ✨

--compression only applies to data recreate newly writes, e.g. when re-chunking with --chunker-params (and to the new archive metadata). Data chunks reused as-is from the existing archive keep their current compression β€” to recompress existing repository objects, use borg repo-compress. Different job, different girlie. πŸ’…

USE WITH CAUTION. Depending on the paths and patterns given, recreate can be used to delete files from archives permanently. When in doubt, use --dry-run --verbose --list to see how patterns/paths are interpreted. See list_item_flags in borg create for details. Fr fr, dry-run first. πŸ™ˆ

The archive being recreated is only removed after the new archive has been saved completely. The new archive is created under the same name as the original one, so while the operation runs, both exist side by side; they are told apart by their archive IDs, as the new archive gets a different archive ID. Two archives, same name, different ID β€” it's giving twins but make it chaos πŸ‘―

With --target the original archive is not replaced, instead a new archive is created. Much safer energy. 🧚

When rechunking, space usage can be substantial β€” expect at least the entire deduplicated size of the archives using the previous chunker params. Budget accordingly, bestie πŸ’Έ

If your most recent borg check found missing chunks, please first run another backup for the same data, before doing any rechunking. If you are lucky, that will recreate the missing chunks. Optionally, do another borg check to see if the chunks are still missing. Manifesting chunk restoration for you 🌈


πŸŽ€ OPTIONS πŸŽ€

See borg-common(1) for common options of Borg commands.

arguments πŸ“

  • PATH β€” paths to recreate; patterns are supported

options πŸ‘‘

  • --list β€” output verbose list of items (files, dirs, ...)
  • --filter STATUSCHARS β€” only display items with the given status characters (listed in borg create --help)
  • -n, --dry-run β€” do not change anything
  • -s, --stats β€” print statistics at end

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
  • --exclude-caches β€” exclude directories that contain a CACHEDIR.TAG file (<https://www.bford.info/cachedir/spec.html>)
  • --exclude-if-present NAME β€” exclude directories that are tagged by containing a filesystem object with the given NAME
  • --keep-exclude-tags β€” if tag objects are specified with --exclude-if-present, do not omit the tag objects themselves from the backup archive

Archive filters πŸ¦‹

  • -a PATTERN, --match-archives PATTERN β€” only consider archives matching all patterns. See borg help match-archives.
  • --sort-by KEYS β€” Comma-separated list of sorting keys; valid keys are: timestamp, archive, name, id, tags, host, user; default is: timestamp
  • --first N β€” consider the first N archives after other filters are applied
  • --last N β€” consider the last N archives after other filters are applied
  • --oldest TIMESPAN β€” consider archives between the oldest archive's timestamp and (oldest + TIMESPAN), e.g., 7d or 12m.
  • --newest TIMESPAN β€” consider archives between the newest archive's timestamp and (newest - TIMESPAN), e.g., 7d or 12m.
  • --older TIMESPAN β€” consider archives older than (now - TIMESPAN), e.g., 7d or 12m.
  • --newer TIMESPAN β€” consider archives newer than (now - TIMESPAN), e.g., 7d or 12m.
  • --target TARGET β€” create a new archive with the name TARGET, do not replace existing archive
  • --comment COMMENT β€” add a comment text to the archive
  • --timestamp TIMESTAMP β€” manually specify the archive creation date/time (yyyy-mm-ddThh:mm:ss[(+|-)HH:MM] format, (+|-)HH:MM is the UTC offset, default: local time zone). Alternatively, give a reference file/directory.
  • -C COMPRESSION, --compression COMPRESSION β€” select compression algorithm, see the output of the borg help compression command for details. Only applies to newly written data, e.g. when re-chunking with --chunker-params (and to the new archive metadata); data chunks reused from the existing archive are not recompressed, use borg repo-compress for that. Default: the repository default (see borg repo-create), else lz4.
  • --chunker-params PARAMS β€” rechunk using given chunker parameters: buzhash,CHUNK_MIN_EXP,CHUNK_MAX_EXP,HASH_MASK_BITS,WINDOW_SIZE or buzhash64,CHUNK_MIN_EXP,CHUNK_MAX_EXP,HASH_MASK_BITS,WINDOW_SIZE,NC_LEVEL or fastcdc,CHUNK_MIN_EXP,CHUNK_MAX_EXP,HASH_MASK_BITS,NC_LEVEL or default to use the repository default (see borg repo-create), else the built-in chunker defaults. default: do not rechunk

🌈 EXAMPLES 🌈

First up: compression glow-up, but done the right way πŸ”₯

# Create a backup with fast, low compression
$ borg create archive files --compression lz4
# Then recompress the data already stored in the repository β€” this might take longer,
# but the backup has already completed, so there are no inconsistencies from a
# long-running backup job. Note that recompressing existing repository data is the
# job of "borg repo-compress", not of "borg recreate".
$ borg repo-compress --compression zlib,9 --stats
Recompression stats:
Packs: 2 total, 2 rewritten.
Objects: 5 total, 2 recompressed, 0 already had the desired compression, 3 kept as-is (recompression brings no gain).
Repository size: 301.59 kB before, 301.53 kB after, shrunk by 60 B.

Removing unwanted files from all archives in a repository β€” and yes, the path is relative, because archives only contain relative paths, remember? 🫢

# Remove unwanted files from all archives in a repository.
# Note the relative path for the --exclude option β€” archives only contain relative paths.
$ borg recreate --exclude home/icke/Pictures/drunk_photos

Changing the archive comment. Heads up: recreate writes a new archive, so the archive fingerprint changes. That's not a bug, that's the whole point πŸ’…

# Change the archive comment. Note that recreate writes a new archive,
# so the archive fingerprint changes.
$ borg create --comment "This is a comment" archivename files
$ borg info -a archivename
Archive name: archivename
Archive fingerprint: 6cfecdd4e963bbe150c08169407de0353a4c5f2f90221646a9ebb0ce9be2529a
Comment: This is a comment
...
$ borg recreate --comment "This is a better comment" -a archivename
$ borg info -a archivename
Archive name: archivename
Archive fingerprint: 259b5302a8de9c889fb4915fe5df128f6c22776966db2dc3c7d3c8e741bf45b6
Comment: This is a better comment
...

πŸ’œ SEE ALSO πŸ’œ

borg-common(1), borg-patterns(1), borg-placeholders(1), borg-compression(1)


πŸ‘‘ AUTHOR πŸ‘‘

The Borg Collective


that's a wrap, bestie πŸŽ€ this page is from the borg backup tool, dated 2026-10-07, and it lives in the manual as borg-recreate(1). go forth and recreate responsibly πŸ’–βœ¨

πŸ“¦ where this page comes from