|  | @@ -20,10 +20,15 @@ store all files as `some/path/.../file.ext` and ``borg create
 | 
	
		
			
				|  |  |  /path/to/repo /home/user`` will store all files as
 | 
	
		
			
				|  |  |  `home/user/.../file.ext`.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +A directory exclusion pattern can end either with or without a slash ('/').
 | 
	
		
			
				|  |  | +If it ends with a slash, such as `some/path/`, the directory will be
 | 
	
		
			
				|  |  | +included but not its content. If it does not end with a slash, such as
 | 
	
		
			
				|  |  | +`some/path`, both the directory and content will be excluded.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  File patterns support these styles: fnmatch, shell, regular expressions,
 | 
	
		
			
				|  |  |  path prefixes and path full-matches. By default, fnmatch is used for
 | 
	
		
			
				|  |  |  ``--exclude`` patterns and shell-style is used for the ``--pattern``
 | 
	
		
			
				|  |  | - option. For commands that support patterns in their ``PATH`` argument
 | 
	
		
			
				|  |  | +option. For commands that support patterns in their ``PATH`` argument
 | 
	
		
			
				|  |  |  like (``borg list``), the default pattern is path prefix.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  Starting with Borg 1.2, for all but regular expression pattern matching
 | 
	
	
		
			
				|  | @@ -144,64 +149,85 @@ Examples::
 | 
	
		
			
				|  |  |      EOF
 | 
	
		
			
				|  |  |      $ borg create --exclude-from exclude.txt backup /
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    A more general and easier to use way to define filename matching patterns exists
 | 
	
		
			
				|  |  | -    with the ``--pattern`` and ``--patterns-from`` options. Using these, you may
 | 
	
		
			
				|  |  | -    specify the backup roots (starting points) and patterns for inclusion/exclusion.
 | 
	
		
			
				|  |  | -    A root path starts with the prefix `R`, followed by a path (a plain path, not a
 | 
	
		
			
				|  |  | -    file pattern). An include rule starts with the prefix +, an exclude rule starts
 | 
	
		
			
				|  |  | -    with the prefix -, an exclude-norecurse rule starts with !, all followed by a pattern.
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    .. note::
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        Via ``--pattern`` or ``--patterns-from`` you can define BOTH inclusion and exclusion
 | 
	
		
			
				|  |  | -        of files using pattern prefixes ``+`` and ``-``. With ``--exclude`` and
 | 
	
		
			
				|  |  | -        ``--exclude-from`` ONLY excludes are defined.
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    Inclusion patterns are useful to include paths that are contained in an excluded
 | 
	
		
			
				|  |  | -    path. The first matching pattern is used so if an include pattern matches before
 | 
	
		
			
				|  |  | -    an exclude pattern, the file is backed up. If an exclude-norecurse pattern matches
 | 
	
		
			
				|  |  | -    a directory, it won't recurse into it and won't discover any potential matches for
 | 
	
		
			
				|  |  | -    include rules below that directory.
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    .. note::
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        It's possible that a sub-directory/file is matched while parent directories are not.
 | 
	
		
			
				|  |  | -        In that case, parent directories are not backed up thus their user, group, permission,
 | 
	
		
			
				|  |  | -        etc. can not be restored.
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    Note that the default pattern style for ``--pattern`` and ``--patterns-from`` is
 | 
	
		
			
				|  |  | -    shell style (`sh:`), so those patterns behave similar to rsync include/exclude
 | 
	
		
			
				|  |  | -    patterns. The pattern style can be set via the `P` prefix.
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    Patterns (``--pattern``) and excludes (``--exclude``) from the command line are
 | 
	
		
			
				|  |  | -    considered first (in the order of appearance). Then patterns from ``--patterns-from``
 | 
	
		
			
				|  |  | -    are added. Exclusion patterns from ``--exclude-from`` files are appended last.
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    Examples::
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        # backup pics, but not the ones from 2018, except the good ones:
 | 
	
		
			
				|  |  | -        # note: using = is essential to avoid cmdline argument parsing issues.
 | 
	
		
			
				|  |  | -        borg create --pattern=+pics/2018/good --pattern=-pics/2018 repo::arch pics
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        # use a file with patterns:
 | 
	
		
			
				|  |  | -        borg create --patterns-from patterns.lst repo::arch
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    The patterns.lst file could look like that::
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        # "sh:" pattern style is the default, so the following line is not needed:
 | 
	
		
			
				|  |  | -        P sh
 | 
	
		
			
				|  |  | -        R /
 | 
	
		
			
				|  |  | -        # can be rebuild
 | 
	
		
			
				|  |  | -        - /home/*/.cache
 | 
	
		
			
				|  |  | -        # they're downloads for a reason
 | 
	
		
			
				|  |  | -        - /home/*/Downloads
 | 
	
		
			
				|  |  | -        # susan is a nice person
 | 
	
		
			
				|  |  | -        # include susans home
 | 
	
		
			
				|  |  | -        + /home/susan
 | 
	
		
			
				|  |  | -        # don't backup the other home directories
 | 
	
		
			
				|  |  | -        - /home/*
 | 
	
		
			
				|  |  | -        # don't even look in /proc
 | 
	
		
			
				|  |  | -        ! /proc
 | 
	
		
			
				|  |  | +A more general and easier to use way to define filename matching patterns exists
 | 
	
		
			
				|  |  | +with the ``--pattern`` and ``--patterns-from`` options. Using these, you may
 | 
	
		
			
				|  |  | +specify the backup roots (starting points) and patterns for inclusion/exclusion.
 | 
	
		
			
				|  |  | +A root path starts with the prefix `R`, followed by a path (a plain path, not a
 | 
	
		
			
				|  |  | +file pattern). An include rule starts with the prefix +, an exclude rule starts
 | 
	
		
			
				|  |  | +with the prefix -, an exclude-norecurse rule starts with !, all followed by a pattern.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +.. note::
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Via ``--pattern`` or ``--patterns-from`` you can define BOTH inclusion and exclusion
 | 
	
		
			
				|  |  | +    of files using pattern prefixes ``+`` and ``-``. With ``--exclude`` and
 | 
	
		
			
				|  |  | +    ``--exclude-from`` ONLY excludes are defined.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Inclusion patterns are useful to include paths that are contained in an excluded
 | 
	
		
			
				|  |  | +path. The first matching pattern is used so if an include pattern matches before
 | 
	
		
			
				|  |  | +an exclude pattern, the file is backed up. If an exclude-norecurse pattern matches
 | 
	
		
			
				|  |  | +a directory, it won't recurse into it and won't discover any potential matches for
 | 
	
		
			
				|  |  | +include rules below that directory.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +.. note::
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    It's possible that a sub-directory/file is matched while parent directories are not.
 | 
	
		
			
				|  |  | +    In that case, parent directories are not backed up thus their user, group, permission,
 | 
	
		
			
				|  |  | +    etc. can not be restored.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Note that the default pattern style for ``--pattern`` and ``--patterns-from`` is
 | 
	
		
			
				|  |  | +shell style (`sh:`), so those patterns behave similar to rsync include/exclude
 | 
	
		
			
				|  |  | +patterns. The pattern style can be set via the `P` prefix.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Patterns (``--pattern``) and excludes (``--exclude``) from the command line are
 | 
	
		
			
				|  |  | +considered first (in the order of appearance). Then patterns from ``--patterns-from``
 | 
	
		
			
				|  |  | +are added. Exclusion patterns from ``--exclude-from`` files are appended last.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Examples::
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    # backup pics, but not the ones from 2018, except the good ones:
 | 
	
		
			
				|  |  | +    # note: using = is essential to avoid cmdline argument parsing issues.
 | 
	
		
			
				|  |  | +    borg create --pattern=+pics/2018/good --pattern=-pics/2018 repo::arch pics
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    # use a file with patterns:
 | 
	
		
			
				|  |  | +    borg create --patterns-from patterns.lst repo::arch
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +The patterns.lst file could look like that::
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    # "sh:" pattern style is the default, so the following line is not needed:
 | 
	
		
			
				|  |  | +    P sh
 | 
	
		
			
				|  |  | +    R /
 | 
	
		
			
				|  |  | +    # can be rebuild
 | 
	
		
			
				|  |  | +    - /home/*/.cache
 | 
	
		
			
				|  |  | +    # they're downloads for a reason
 | 
	
		
			
				|  |  | +    - /home/*/Downloads
 | 
	
		
			
				|  |  | +    # susan is a nice person
 | 
	
		
			
				|  |  | +    # include susans home
 | 
	
		
			
				|  |  | +    + /home/susan
 | 
	
		
			
				|  |  | +    # also back up this exact file
 | 
	
		
			
				|  |  | +    + pf:/home/bobby/specialfile.txt
 | 
	
		
			
				|  |  | +    # don't backup the other home directories
 | 
	
		
			
				|  |  | +    - /home/*
 | 
	
		
			
				|  |  | +    # don't even look in /proc
 | 
	
		
			
				|  |  | +    ! /proc
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +You can specify recursion roots either on the command line or in a patternfile::
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    # these two commands do the same thing
 | 
	
		
			
				|  |  | +    borg create --exclude /home/bobby/junk repo::arch /home/bobby /home/susan
 | 
	
		
			
				|  |  | +    borg create --patterns-from patternfile.lst repo::arch
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +The patternfile::
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    # note that excludes use fm: by default and patternfiles use sh: by default.
 | 
	
		
			
				|  |  | +    # therefore, we need to specify fm: to have the same exact behavior.
 | 
	
		
			
				|  |  | +    P fm
 | 
	
		
			
				|  |  | +    R /home/bobby
 | 
	
		
			
				|  |  | +    R /home/susan
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    - /home/bobby/junk
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +This allows you to share the same patterns between multiple repositories
 | 
	
		
			
				|  |  | +without needing to specify them on the command line.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  .. _borg_placeholders:
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -223,11 +249,11 @@ and ``--remote-path`` values support these placeholders:
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  {now}
 | 
	
		
			
				|  |  |      The current local date and time, by default in ISO-8601 format.
 | 
	
		
			
				|  |  | -    You can also supply your own `format string <https://docs.python.org/3.5/library/datetime.html#strftime-and-strptime-behavior>`_, e.g. {now:%Y-%m-%d_%H:%M:%S}
 | 
	
		
			
				|  |  | +    You can also supply your own `format string <https://docs.python.org/3.8/library/datetime.html#strftime-and-strptime-behavior>`_, e.g. {now:%Y-%m-%d_%H:%M:%S}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  {utcnow}
 | 
	
		
			
				|  |  |      The current UTC date and time, by default in ISO-8601 format.
 | 
	
		
			
				|  |  | -    You can also supply your own `format string <https://docs.python.org/3.5/library/datetime.html#strftime-and-strptime-behavior>`_, e.g. {utcnow:%Y-%m-%d_%H:%M:%S}
 | 
	
		
			
				|  |  | +    You can also supply your own `format string <https://docs.python.org/3.8/library/datetime.html#strftime-and-strptime-behavior>`_, e.g. {utcnow:%Y-%m-%d_%H:%M:%S}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  {user}
 | 
	
		
			
				|  |  |      The user name (or UID, if no name is available) of the user running borg.
 |