borg mount
**********

   borg [common options] mount [options] REPOSITORY_OR_ARCHIVE MOUNTPOINT [PATH...]


Description
===========

This command mounts a repository or an archive as a FUSE filesystem.
This can be useful for browsing or restoring individual files.

When restoring, take into account that the current FUSE implementation
does not support special filesystem flags and ACLs.

When mounting a repository, the top directories will be named like the
archives and the directory structure below these will be loaded on-
demand from the repository when entering these directories, so expect
some delay.

Unless the "--foreground" option is given the command will run in the
background until the filesystem is "unmounted".

Performance tips:

* when doing a "whole repository" mount: do not enter archive
  directories if not needed; 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.

The command "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.

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.

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

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.


borg umount
***********

   borg [common options] umount [options] MOUNTPOINT


Description
===========

This command unmounts a FUSE filesystem that was mounted with "borg
mount".

This is a convenience wrapper that just calls the platform-specific
shell command - usually this is either umount or fusermount -u.


Examples
========

   # Mounting the repository shows all archives.
   # Archives are loaded lazily, expect some delay when navigating to an archive
   # for the first time.
   $ borg mount /path/to/repo /tmp/mymountpoint
   $ ls /tmp/mymountpoint
   root-2016-02-14 root-2016-02-15
   $ borg umount /tmp/mymountpoint

   # Mounting a specific archive is possible as well.
   $ borg mount /path/to/repo::root-2016-02-15 /tmp/mymountpoint
   $ ls /tmp/mymountpoint
   bin  boot  etc      home  lib  lib64  lost+found  media  mnt  opt
   root  sbin  srv  tmp  usr  var
   $ borg umount /tmp/mymountpoint

   # The "versions view" merges all archives in the repository
   # and provides a versioned view on files.
   $ borg mount -o versions /path/to/repo /tmp/mymountpoint
   $ ls -l /tmp/mymountpoint/home/user/doc.txt/
   total 24
   -rw-rw-r-- 1 user group 12357 Aug 26 21:19 doc.cda00bc9.txt
   -rw-rw-r-- 1 user group 12204 Aug 26 21:04 doc.fa760f28.txt
   $ borg umount /tmp/mymountpoint

   # Archive filters are supported.
   # These are especially handy for the "versions view",
   # which does not support lazy processing of archives.
   $ borg mount -o versions --glob-archives '*-my-home' --last 10 /path/to/repo /tmp/mymountpoint

   # Exclusion options are supported.
   # These can speed up mounting and lower memory needs significantly.
   $ borg mount /path/to/repo /tmp/mymountpoint only/that/path
   $ borg mount --exclude '...' /path/to/repo /tmp/mymountpoint

   # When using BORG_REPO env var, use :: as positional argument:
   export BORG_REPO=/path/to/repo
   # Mount the whole repo:
   borg mount :: /tmp/mymountpoint
   # Mount some specific archive:
   borg mount ::root-2016-02-15 /tmp/mymountpoint


borgfs
------

   $ echo '/mnt/backup /tmp/myrepo fuse.borgfs defaults,noauto 0 0' >> /etc/fstab
   $ echo '/mnt/backup::root-2016-02-15 /tmp/myarchive fuse.borgfs defaults,noauto 0 0' >> /etc/fstab
   $ mount /tmp/myrepo
   $ mount /tmp/myarchive
   $ ls /tmp/myrepo
   root-2016-02-01 root-2016-02-15
   $ ls /tmp/myarchive
   bin  boot  etc      home  lib  lib64  lost+found  media  mnt  opt  root  sbin  srv  tmp  usr  var

Note:

  "borgfs" will be automatically provided if you used a distribution
  package or "pip" to install Borg. Users of the standalone binary
  will have to manually create a symlink (see Standalone Binary).
