borgfs(1)

πŸ’– borgfs(1) β€” the mount-y one πŸ’–

okay bestie, listen up, this is the manual page for borgfs, part of the borg backup tool. she's cute, she's FUSE, she's literally a filesystem that appears out of thin air. let's go πŸ¦‹


✨ NAME ✨

borgfs β€” mount an archive or a whole entire repository as a FUSE filesystem πŸ’…


🌸 SYNOPSIS 🌸

borgfs [options] REPOSITORY_OR_ARCHIVE MOUNTPOINT [PATH...]

πŸŽ€ DESCRIPTION πŸŽ€

So this command mounts a repository or an archive as a FUSE filesystem. It's giving "peek inside my backups without extracting anything" energy, and it's genuinely so useful for browsing or restoring individual files. Obsessed. 🫢

When you're restoring stuff, keep in mind that the current FUSE implementation does not support special filesystem flags and ACLs. That's just how it is, no cap.

When you mount a repository, the top directories will be named like the archives, and the directory structure below those gets loaded on-demand from the repository when you enter those directories β€” so expect some delay. It's not slow, it's ✨thoughtful✨.

Note, and this one's important bestie: Borg stores symbolic links as-is. So when an archive or repository is mounted, symlinks may resolve to locations outside of the mountpoint, either because they're absolute or because relative links traverse outside of the mounted tree. 😭 Normal UNIX pathname resolution applies: most tools follow symbolic links by default and may therefore access files or directories that are not part of the mounted archive. So operations that were meant to inspect archived data may instead access "live" data from the host filesystem. Yeah. That's a whole vibe we did not ask for. On Linux, you can prevent this by remounting the mountpoint with the nosymfollow VFS mount option, like so: borg mount <repo path> <mountpoint> mount -o remount,nosymfollow <repo path> <mountpoint> Alternatively, access the mounted archive from an appropriately isolated environment (for example, a container or chroot). Very demure, very safe. 🧚

Unless the --foreground option is given, the command will run in the background until the filesystem is unmounted. she does her own thing, she doesn't need you watching.

Performance tips, from me to you: πŸ‘‘

  • when doing a "whole repository" mount: do not enter archive directories if you don't need to; this avoids on-demand loading.
  • only mount a specific archive, not the whole repository.
  • only mount specific paths in a specific archive, not the complete archive.

borgfs provides a wrapper for borg mount. This can also be used in fstab entries:

/path/to/repo /mnt/point fuse.borgfs defaults,noauto 0 0

To allow a regular user to use fstab entries, add the user option:

/path/to/repo /mnt/point fuse.borgfs defaults,noauto,user 0 0

For FUSE configuration and mount options, see the mount.fuse(8) manual page. iykyk πŸ’…

Borg's default behavior is to use the archived user and group names of each file and map them to the system's respective user and group ids. Alternatively, using numeric-ids will instead use the archived user and group ids without any mapping.

The uid and gid mount options (implemented by Borg) can be used to override the user and group ids of all files (i.e., borg mount -o uid=1000,gid=1000).

The man page references user_id and group_id mount options (implemented by FUSE) which specify the user and group id of the mount owner (aka, the user who does the mounting). It is set automatically by libfuse (or the filesystem if libfuse is not used). However, you should not specify these manually. Unlike the uid and gid mount options which affect all files, user_id and group_id affect the user and group id of the mounted (base) directory.

Additional mount options supported by borg: 🌈

  • versions: when used with a repository mount, this gives a merged, versioned view of the files in the archives. EXPERIMENTAL; the layout may change in the future. it's a work in progress, be nice to her πŸ₯Ί
  • allow_damaged_files: by default damaged files (where missing chunks were replaced with runs of zeros by borg check --repair) are not readable and return EIO (I/O error). Set this option to read such files.
  • ignore_permissions: for security reasons the default_permissions mount option is internally enforced by borg. ignore_permissions can be given to not enforce default_permissions.

The BORG_MOUNT_DATA_CACHE_ENTRIES environment variable is meant for advanced users to tweak the performance. It sets the number of cached data chunks; additional memory usage can be up to ~8 MiB times this number. The default is the number of CPU cores.

When the daemonized process receives a signal or crashes, it does not unmount. Unmounting in these cases could cause an active rsync or similar process to unintentionally delete data. so like. don't do that. seriously. πŸ’€

When running in the foreground, ^C/SIGINT cleanly unmounts the filesystem, but other signals or crashes do not.

Debugging: πŸ”

borg mount usually daemonizes and the daemon process sends stdout/stderr to /dev/null. Thus, you need to either use -f / --foreground to make it stay in the foreground and not daemonize, or use BORG_LOGGING_CONF to reconfigure the logger to output to a file.


⭐ OPTIONS ⭐

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

πŸ“ arguments

  • REPOSITORY_OR_ARCHIVE β€” repository or archive to mount
  • MOUNTPOINT β€” where to mount filesystem
  • PATH β€” paths to extract; patterns are supported

πŸ’œ options

  • -V, --version β€” show version number and exit
  • --consider-checkpoints β€” Show checkpoint archives in the repository contents list (default: hidden).
  • -f, --foreground β€” stay in foreground, do not daemonize
  • -o β€” Extra mount options
  • --numeric-owner β€” deprecated, use --numeric-ids instead
  • --numeric-ids β€” use numeric user and group identifiers from archive(s)

🌸 Archive filters 🌸

  • -P PREFIX, --prefix PREFIX β€” only consider archive names starting with this prefix. (deprecated)
  • -a GLOB, --glob-archives GLOB β€” only consider archive names matching the glob. sh: rules apply (without actually using the sh: prefix), see "borg help patterns".
  • --sort-by KEYS β€” Comma-separated list of sorting keys; valid keys are: timestamp, archive, name, id; default is: timestamp
  • --first N β€” consider first N archives after other filters were applied
  • --last N β€” consider last N archives after other filters were applied

πŸ¦‹ 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
  • --strip-components NUMBER β€” Remove the specified number of leading path elements. Paths with fewer elements will be silently skipped.

πŸ‘€ SEE ALSO πŸ‘€

borg-common(1)


🫢 Author 🫢

The Borg Collective


aaaand that's the whole page, bestie, you ate that. this was borgfs(1) from the borg backup tool, dated 2026-07-18. go mount something cute. πŸ’–βœ¨πŸŽ€πŸ¦‹πŸŒΈπŸ’…πŸŒˆβ­πŸ‘‘

πŸ“¦ where this page comes from