From b7af4b5f915faa1e8f2a7346626d920dd8ef0c9a Mon Sep 17 00:00:00 2001 From: Thalian Date: Fri, 29 Mar 2019 19:15:47 +0100 Subject: [PATCH] =?UTF-8?q?[TASK]=20#4471=20=E2=80=93=20borg=20help=20shou?= =?UTF-8?q?ld=20print=20=20list=20in=20sorted=20order:=20Step=201?= =?UTF-8?q?2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Moved borg init, key, list after info. --- src/borg/archiver.py | 240 +++++++++++++++++++++---------------------- 1 file changed, 120 insertions(+), 120 deletions(-) diff --git a/src/borg/archiver.py b/src/borg/archiver.py index 564050f13..00b7aadf2 100644 --- a/src/borg/archiver.py +++ b/src/borg/archiver.py @@ -3436,126 +3436,6 @@ class Archiver: help='format output as JSON') define_archive_filters_group(subparser) - # borg mount - mount_epilog = process_epilog(""" - This command mounts an archive as a FUSE filesystem. This can be useful for - browsing an archive or restoring individual files. Unless the ``--foreground`` - option is given the command will run in the background until the filesystem - is ``umounted``. - - 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. - - 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, layout may change in 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 unmounts cleanly, but other - signals or crashes do not. - """) - - if parser.prog == 'borgfs': - parser.description = self.do_mount.__doc__ - parser.epilog = mount_epilog - parser.formatter_class = argparse.RawDescriptionHelpFormatter - parser.help = 'mount repository' - subparser = parser - else: - subparser = subparsers.add_parser('mount', parents=[common_parser], add_help=False, - description=self.do_mount.__doc__, - epilog=mount_epilog, - formatter_class=argparse.RawDescriptionHelpFormatter, - help='mount repository') - subparser.set_defaults(func=self.do_mount) - subparser.add_argument('location', metavar='REPOSITORY_OR_ARCHIVE', type=location_validator(), - help='repository/archive to mount') - subparser.add_argument('mountpoint', metavar='MOUNTPOINT', type=str, - help='where to mount filesystem') - subparser.add_argument('-f', '--foreground', dest='foreground', - action='store_true', - help='stay in foreground, do not daemonize') - subparser.add_argument('-o', dest='options', type=str, - help='Extra mount options') - define_archive_filters_group(subparser) - subparser.add_argument('paths', metavar='PATH', nargs='*', type=str, - help='paths to extract; patterns are supported') - define_exclusion_group(subparser, strip_components=True) - if parser.prog == 'borgfs': - return parser - - # borg rename - rename_epilog = process_epilog(""" - This command renames an archive in the repository. - - This results in a different archive ID. - """) - subparser = subparsers.add_parser('rename', parents=[common_parser], add_help=False, - description=self.do_rename.__doc__, - epilog=rename_epilog, - formatter_class=argparse.RawDescriptionHelpFormatter, - help='rename archive') - subparser.set_defaults(func=self.do_rename) - subparser.add_argument('location', metavar='ARCHIVE', - type=location_validator(archive=True), - help='archive to rename') - subparser.add_argument('name', metavar='NEWNAME', - type=archivename_validator(), - help='the new archive name to use') - - # borg serve - serve_epilog = process_epilog(""" - This command starts a repository server process. This command is usually not used manually. - """) - subparser = subparsers.add_parser('serve', parents=[common_parser], add_help=False, - description=self.do_serve.__doc__, epilog=serve_epilog, - formatter_class=argparse.RawDescriptionHelpFormatter, - help='start repository server process') - subparser.set_defaults(func=self.do_serve) - subparser.add_argument('--restrict-to-path', metavar='PATH', dest='restrict_to_paths', action='append', - help='restrict repository access to PATH. ' - 'Can be specified multiple times to allow the client access to several directories. ' - 'Access to all sub-directories is granted implicitly; PATH doesn\'t need to directly point to a repository.') - subparser.add_argument('--restrict-to-repository', metavar='PATH', dest='restrict_to_repositories', action='append', - help='restrict repository access. Only the repository located at PATH ' - '(no sub-directories are considered) is accessible. ' - 'Can be specified multiple times to allow the client access to several repositories. ' - 'Unlike ``--restrict-to-path`` sub-directories are not accessible; ' - 'PATH needs to directly point at a repository location. ' - 'PATH may be an empty directory or the last element of PATH may not exist, in which case ' - 'the client may initialize a repository there.') - subparser.add_argument('--append-only', dest='append_only', action='store_true', - help='only allow appending to repository segment files. Note that this only ' - 'affects the low level structure of the repository, and running `delete` ' - 'or `prune` will still be allowed. See :ref:`append_only_mode` in Additional ' - 'Notes for more details.') - subparser.add_argument('--storage-quota', metavar='QUOTA', dest='storage_quota', - type=parse_storage_quota, default=None, - help='Override storage quota of the repository (e.g. 5G, 1.5T). ' - 'When a new repository is initialized, sets the storage quota on the new ' - 'repository as well. Default: no quota.') - # borg init init_epilog = process_epilog(""" This command initializes an empty repository. A repository is a filesystem @@ -3846,6 +3726,126 @@ class Archiver: define_archive_filters_group(subparser) define_exclusion_group(subparser) + # borg mount + mount_epilog = process_epilog(""" + This command mounts an archive as a FUSE filesystem. This can be useful for + browsing an archive or restoring individual files. Unless the ``--foreground`` + option is given the command will run in the background until the filesystem + is ``umounted``. + + 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. + + 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, layout may change in 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 unmounts cleanly, but other + signals or crashes do not. + """) + + if parser.prog == 'borgfs': + parser.description = self.do_mount.__doc__ + parser.epilog = mount_epilog + parser.formatter_class = argparse.RawDescriptionHelpFormatter + parser.help = 'mount repository' + subparser = parser + else: + subparser = subparsers.add_parser('mount', parents=[common_parser], add_help=False, + description=self.do_mount.__doc__, + epilog=mount_epilog, + formatter_class=argparse.RawDescriptionHelpFormatter, + help='mount repository') + subparser.set_defaults(func=self.do_mount) + subparser.add_argument('location', metavar='REPOSITORY_OR_ARCHIVE', type=location_validator(), + help='repository/archive to mount') + subparser.add_argument('mountpoint', metavar='MOUNTPOINT', type=str, + help='where to mount filesystem') + subparser.add_argument('-f', '--foreground', dest='foreground', + action='store_true', + help='stay in foreground, do not daemonize') + subparser.add_argument('-o', dest='options', type=str, + help='Extra mount options') + define_archive_filters_group(subparser) + subparser.add_argument('paths', metavar='PATH', nargs='*', type=str, + help='paths to extract; patterns are supported') + define_exclusion_group(subparser, strip_components=True) + if parser.prog == 'borgfs': + return parser + + # borg rename + rename_epilog = process_epilog(""" + This command renames an archive in the repository. + + This results in a different archive ID. + """) + subparser = subparsers.add_parser('rename', parents=[common_parser], add_help=False, + description=self.do_rename.__doc__, + epilog=rename_epilog, + formatter_class=argparse.RawDescriptionHelpFormatter, + help='rename archive') + subparser.set_defaults(func=self.do_rename) + subparser.add_argument('location', metavar='ARCHIVE', + type=location_validator(archive=True), + help='archive to rename') + subparser.add_argument('name', metavar='NEWNAME', + type=archivename_validator(), + help='the new archive name to use') + + # borg serve + serve_epilog = process_epilog(""" + This command starts a repository server process. This command is usually not used manually. + """) + subparser = subparsers.add_parser('serve', parents=[common_parser], add_help=False, + description=self.do_serve.__doc__, epilog=serve_epilog, + formatter_class=argparse.RawDescriptionHelpFormatter, + help='start repository server process') + subparser.set_defaults(func=self.do_serve) + subparser.add_argument('--restrict-to-path', metavar='PATH', dest='restrict_to_paths', action='append', + help='restrict repository access to PATH. ' + 'Can be specified multiple times to allow the client access to several directories. ' + 'Access to all sub-directories is granted implicitly; PATH doesn\'t need to directly point to a repository.') + subparser.add_argument('--restrict-to-repository', metavar='PATH', dest='restrict_to_repositories', action='append', + help='restrict repository access. Only the repository located at PATH ' + '(no sub-directories are considered) is accessible. ' + 'Can be specified multiple times to allow the client access to several repositories. ' + 'Unlike ``--restrict-to-path`` sub-directories are not accessible; ' + 'PATH needs to directly point at a repository location. ' + 'PATH may be an empty directory or the last element of PATH may not exist, in which case ' + 'the client may initialize a repository there.') + subparser.add_argument('--append-only', dest='append_only', action='store_true', + help='only allow appending to repository segment files. Note that this only ' + 'affects the low level structure of the repository, and running `delete` ' + 'or `prune` will still be allowed. See :ref:`append_only_mode` in Additional ' + 'Notes for more details.') + subparser.add_argument('--storage-quota', metavar='QUOTA', dest='storage_quota', + type=parse_storage_quota, default=None, + help='Override storage quota of the repository (e.g. 5G, 1.5T). ' + 'When a new repository is initialized, sets the storage quota on the new ' + 'repository as well. Default: no quota.') + # borg umount umount_epilog = process_epilog(""" This command un-mounts a FUSE filesystem that was mounted with ``borg mount``.