diff --git a/docs/internals/frontends.rst b/docs/internals/frontends.rst index 1ade90581..09a943ad3 100644 --- a/docs/internals/frontends.rst +++ b/docs/internals/frontends.rst @@ -575,8 +575,6 @@ Prompts BORG_RELOCATED_REPO_ACCESS_IS_OK For "Warning: The repository at location ... was previously located at ..." BORG_CHECK_I_KNOW_WHAT_I_AM_DOING - For "Warning: 'check --repair' is an experimental feature that might result in data loss." + For "This is a potentially dangerous function..." (check --repair) BORG_DELETE_I_KNOW_WHAT_I_AM_DOING For "You requested to completely DELETE the repository *including* all archives it contains:" - BORG_RECREATE_I_KNOW_WHAT_I_AM_DOING - For "recreate is an experimental feature." diff --git a/docs/usage/general/environment.rst.inc b/docs/usage/general/environment.rst.inc index a3d3060e7..87a3f84b8 100644 --- a/docs/usage/general/environment.rst.inc +++ b/docs/usage/general/environment.rst.inc @@ -83,11 +83,9 @@ Some automatic "answerers" (if set, they automatically answer confirmation quest BORG_RELOCATED_REPO_ACCESS_IS_OK=no (or =yes) For "Warning: The repository at location ... was previously located at ..." BORG_CHECK_I_KNOW_WHAT_I_AM_DOING=NO (or =YES) - For "Warning: 'check --repair' is an experimental feature that might result in data loss." + For "This is a potentially dangerous function..." (check --repair) BORG_DELETE_I_KNOW_WHAT_I_AM_DOING=NO (or =YES) For "You requested to completely DELETE the repository *including* all archives it contains:" - BORG_RECREATE_I_KNOW_WHAT_I_AM_DOING=NO (or =YES) - For "recreate is an experimental feature." Note: answers are case sensitive. setting an invalid answer value might either give the default answer or ask you interactively, depending on whether retries are allowed (they by default are diff --git a/src/borg/archiver.py b/src/borg/archiver.py index 7201b890f..976faaf7e 100644 --- a/src/borg/archiver.py +++ b/src/borg/archiver.py @@ -306,8 +306,10 @@ class Archiver: def do_check(self, args, repository): """Check repository consistency""" if args.repair: - msg = ("'check --repair' is an experimental feature that might result in data loss." + - "\n" + + msg = ("This is a potentially dangerous function.\n" + "check --repair might lead to data loss (for kinds of corruption it is not\n" + "capable of dealing with). BE VERY CAREFUL!\n" + "\n" "Type 'YES' if you understand this and want to continue: ") if not yes(msg, false_msg="Aborting.", invalid_msg="Invalid answer, aborting.", truish=('YES', ), retry=False, @@ -1587,12 +1589,6 @@ class Archiver: @with_repository(cache=True, exclusive=True, compatibility=(Manifest.Operation.CHECK,)) def do_recreate(self, args, repository, manifest, key, cache): """Re-create archives""" - msg = ("recreate is an experimental feature.\n" - "Type 'YES' if you understand this and want to continue: ") - if not yes(msg, false_msg="Aborting.", truish=('YES',), - env_var_override='BORG_RECREATE_I_KNOW_WHAT_I_AM_DOING'): - return EXIT_ERROR - matcher = self.build_matcher(args.patterns, args.paths) self.output_list = args.output_list self.output_filter = args.output_filter @@ -2861,6 +2857,9 @@ class Archiver: check_epilog = process_epilog(""" The check command verifies the consistency of a repository and the corresponding archives. + check --repair is a potentially dangerous function and might lead to data loss + (for kinds of corruption it is not capable of dealing with). BE VERY CAREFUL! + First, the underlying repository data files are checked: - For all segments, the segment magic header is checked. @@ -4088,7 +4087,8 @@ class Archiver: recreate_epilog = process_epilog(""" Recreate the contents of existing archives. - This is an *experimental* feature. Do *not* use this on your only backup. + 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``. diff --git a/src/borg/testsuite/archiver.py b/src/borg/testsuite/archiver.py index 6a4cce03b..a234d4c9b 100644 --- a/src/borg/testsuite/archiver.py +++ b/src/borg/testsuite/archiver.py @@ -251,7 +251,6 @@ class ArchiverTestCaseBase(BaseTestCase): def setUp(self): os.environ['BORG_CHECK_I_KNOW_WHAT_I_AM_DOING'] = 'YES' os.environ['BORG_DELETE_I_KNOW_WHAT_I_AM_DOING'] = 'YES' - os.environ['BORG_RECREATE_I_KNOW_WHAT_I_AM_DOING'] = 'YES' os.environ['BORG_PASSPHRASE'] = 'waytooeasyonlyfortests' self.archiver = not self.FORK_DEFAULT and Archiver() or None self.tmpdir = tempfile.mkdtemp()