Przeglądaj źródła

borg extract NAME ...

Thomas Waldmann 3 lat temu
rodzic
commit
b8c7c53dde

+ 3 - 3
src/borg/archiver.py

@@ -691,7 +691,7 @@ class Archiver:
             assert rc1 == rc2 == 0
             assert rc1 == rc2 == 0
             # measure extraction (dry-run: without writing result to disk)
             # measure extraction (dry-run: without writing result to disk)
             t_start = time.monotonic()
             t_start = time.monotonic()
-            rc = self.do_extract(self.parse_args([f'--repo={repo}', 'extract', '--name=borg-benchmark-crud1',
+            rc = self.do_extract(self.parse_args([f'--repo={repo}', 'extract', 'borg-benchmark-crud1',
                                                   '--dry-run']))
                                                   '--dry-run']))
             t_end = time.monotonic()
             t_end = time.monotonic()
             dt_extract = t_end - t_start
             dt_extract = t_end - t_start
@@ -4312,8 +4312,6 @@ class Archiver:
                                           formatter_class=argparse.RawDescriptionHelpFormatter,
                                           formatter_class=argparse.RawDescriptionHelpFormatter,
                                           help='extract archive contents')
                                           help='extract archive contents')
         subparser.set_defaults(func=self.do_extract)
         subparser.set_defaults(func=self.do_extract)
-        subparser.add_argument('--name', dest='name', metavar='NAME', type=NameSpec,
-                               help='specify the archive name')
         subparser.add_argument('--list', dest='output_list', action='store_true',
         subparser.add_argument('--list', dest='output_list', action='store_true',
                                help='output verbose list of items (files, dirs, ...)')
                                help='output verbose list of items (files, dirs, ...)')
         subparser.add_argument('-n', '--dry-run', dest='dry_run', action='store_true',
         subparser.add_argument('-n', '--dry-run', dest='dry_run', action='store_true',
@@ -4334,6 +4332,8 @@ class Archiver:
                                help='write all extracted data to stdout')
                                help='write all extracted data to stdout')
         subparser.add_argument('--sparse', dest='sparse', action='store_true',
         subparser.add_argument('--sparse', dest='sparse', action='store_true',
                                help='create holes in output sparse file from all-zero chunks')
                                help='create holes in output sparse file from all-zero chunks')
+        subparser.add_argument('name', metavar='NAME', type=NameSpec,
+                               help='specify the archive name')
         subparser.add_argument('paths', metavar='PATH', nargs='*', type=str,
         subparser.add_argument('paths', metavar='PATH', nargs='*', type=str,
                                help='paths to extract; patterns are supported')
                                help='paths to extract; patterns are supported')
         define_exclusion_group(subparser, strip_components=True)
         define_exclusion_group(subparser, strip_components=True)

+ 81 - 81
src/borg/testsuite/archiver.py

@@ -152,9 +152,9 @@ def test_return_codes(cmd, tmpdir):
     rc, out = cmd('--repo=%s' % repo, 'create', 'archive', str(input))
     rc, out = cmd('--repo=%s' % repo, 'create', 'archive', str(input))
     assert rc == EXIT_SUCCESS
     assert rc == EXIT_SUCCESS
     with changedir(str(output)):
     with changedir(str(output)):
-        rc, out = cmd('--repo=%s' % repo, 'extract', '--name=archive')
+        rc, out = cmd('--repo=%s' % repo, 'extract', 'archive')
         assert rc == EXIT_SUCCESS
         assert rc == EXIT_SUCCESS
-    rc, out = cmd('--repo=%s' % repo, 'extract', '--name=archive', 'does/not/match')
+    rc, out = cmd('--repo=%s' % repo, 'extract', 'archive', 'does/not/match')
     assert rc == EXIT_WARNING  # pattern did not match
     assert rc == EXIT_WARNING  # pattern did not match
     rc, out = cmd('--repo=%s' % repo, 'create', 'archive', str(input))
     rc, out = cmd('--repo=%s' % repo, 'create', 'archive', str(input))
     assert rc == EXIT_ERROR  # duplicate archive name
     assert rc == EXIT_ERROR  # duplicate archive name
@@ -399,7 +399,7 @@ class ArchiverTestCase(ArchiverTestCaseBase):
         self.assert_in('Archive name: test.2', output)
         self.assert_in('Archive name: test.2', output)
         self.assert_in('This archive: ', output)
         self.assert_in('This archive: ', output)
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test')
         list_output = self.cmd(f'--repo={self.repository_location}', 'list', '--short')
         list_output = self.cmd(f'--repo={self.repository_location}', 'list', '--short')
         self.assert_in('test', list_output)
         self.assert_in('test', list_output)
         self.assert_in('test.2', list_output)
         self.assert_in('test.2', list_output)
@@ -494,7 +494,7 @@ class ArchiverTestCase(ArchiverTestCaseBase):
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
         sock.close()
         sock.close()
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test')
             assert not os.path.exists('input/unix-socket')
             assert not os.path.exists('input/unix-socket')
 
 
     @pytest.mark.skipif(not are_symlinks_supported(), reason='symlinks not supported')
     @pytest.mark.skipif(not are_symlinks_supported(), reason='symlinks not supported')
@@ -503,7 +503,7 @@ class ArchiverTestCase(ArchiverTestCaseBase):
         self.cmd(f'--repo={self.repository_location}', 'init', '--encryption=repokey')
         self.cmd(f'--repo={self.repository_location}', 'init', '--encryption=repokey')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test')
             assert os.readlink('input/link1') == 'somewhere'
             assert os.readlink('input/link1') == 'somewhere'
 
 
     @pytest.mark.skipif(not are_symlinks_supported() or not are_hardlinks_supported(),
     @pytest.mark.skipif(not are_symlinks_supported() or not are_hardlinks_supported(),
@@ -516,7 +516,7 @@ class ArchiverTestCase(ArchiverTestCaseBase):
         self.cmd(f'--repo={self.repository_location}', 'init', '--encryption=repokey')
         self.cmd(f'--repo={self.repository_location}', 'init', '--encryption=repokey')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
         with changedir('output'):
         with changedir('output'):
-            output = self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test')
+            output = self.cmd(f'--repo={self.repository_location}', 'extract', 'test')
             print(output)
             print(output)
             with changedir('input'):
             with changedir('input'):
                 assert os.path.exists('target')
                 assert os.path.exists('target')
@@ -550,7 +550,7 @@ class ArchiverTestCase(ArchiverTestCaseBase):
         self.cmd(f'--repo={self.repository_location}', 'init', '--encryption=repokey')
         self.cmd(f'--repo={self.repository_location}', 'init', '--encryption=repokey')
         self.cmd(f'--repo={self.repository_location}', 'create', '--atime', 'test', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', '--atime', 'test', 'input')
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test')
         sti = os.stat('input/file1')
         sti = os.stat('input/file1')
         sto = os.stat('output/input/file1')
         sto = os.stat('output/input/file1')
         assert sti.st_mtime_ns == sto.st_mtime_ns == mtime * 1e9
         assert sti.st_mtime_ns == sto.st_mtime_ns == mtime * 1e9
@@ -570,7 +570,7 @@ class ArchiverTestCase(ArchiverTestCaseBase):
         self.cmd(f'--repo={self.repository_location}', 'init', '--encryption=repokey')
         self.cmd(f'--repo={self.repository_location}', 'init', '--encryption=repokey')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test')
         sti = os.stat('input/file1')
         sti = os.stat('input/file1')
         sto = os.stat('output/input/file1')
         sto = os.stat('output/input/file1')
         assert int(sti.st_birthtime * 1e9) == int(sto.st_birthtime * 1e9) == birthtime * 1e9
         assert int(sti.st_birthtime * 1e9) == int(sto.st_birthtime * 1e9) == birthtime * 1e9
@@ -586,7 +586,7 @@ class ArchiverTestCase(ArchiverTestCaseBase):
         self.cmd(f'--repo={self.repository_location}', 'init', '--encryption=repokey')
         self.cmd(f'--repo={self.repository_location}', 'init', '--encryption=repokey')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input', '--nobirthtime')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input', '--nobirthtime')
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test')
         sti = os.stat('input/file1')
         sti = os.stat('input/file1')
         sto = os.stat('output/input/file1')
         sto = os.stat('output/input/file1')
         assert int(sti.st_birthtime * 1e9) == birthtime * 1e9
         assert int(sti.st_birthtime * 1e9) == birthtime * 1e9
@@ -647,7 +647,7 @@ class ArchiverTestCase(ArchiverTestCaseBase):
             self.cmd(f'--repo={self.repository_location}', 'init', '--encryption=repokey')
             self.cmd(f'--repo={self.repository_location}', 'init', '--encryption=repokey')
             self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
             self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
             with changedir(self.output_path):
             with changedir(self.output_path):
-                self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', '--sparse')
+                self.cmd(f'--repo={self.repository_location}', 'extract', 'test', '--sparse')
             self.assert_dirs_equal('input', 'output/input')
             self.assert_dirs_equal('input', 'output/input')
             filename = os.path.join(self.output_path, 'input', 'sparse')
             filename = os.path.join(self.output_path, 'input', 'sparse')
             with open(filename, 'rb') as fd:
             with open(filename, 'rb') as fd:
@@ -667,7 +667,7 @@ class ArchiverTestCase(ArchiverTestCaseBase):
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
         for filename in filenames:
         for filename in filenames:
             with changedir('output'):
             with changedir('output'):
-                self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', os.path.join('input', filename))
+                self.cmd(f'--repo={self.repository_location}', 'extract', 'test', os.path.join('input', filename))
             assert os.path.exists(os.path.join('output', 'input', filename))
             assert os.path.exists(os.path.join('output', 'input', filename))
 
 
     def test_repository_swap_detection(self):
     def test_repository_swap_detection(self):
@@ -807,14 +807,14 @@ class ArchiverTestCase(ArchiverTestCaseBase):
         self.create_regular_file('dir/file')
         self.create_regular_file('dir/file')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', '--strip-components', '3')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test', '--strip-components', '3')
             assert not os.path.exists('file')
             assert not os.path.exists('file')
             with self.assert_creates_file('file'):
             with self.assert_creates_file('file'):
-                self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', '--strip-components', '2')
+                self.cmd(f'--repo={self.repository_location}', 'extract', 'test', '--strip-components', '2')
             with self.assert_creates_file('dir/file'):
             with self.assert_creates_file('dir/file'):
-                self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', '--strip-components', '1')
+                self.cmd(f'--repo={self.repository_location}', 'extract', 'test', '--strip-components', '1')
             with self.assert_creates_file('input/dir/file'):
             with self.assert_creates_file('input/dir/file'):
-                self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', '--strip-components', '0')
+                self.cmd(f'--repo={self.repository_location}', 'extract', 'test', '--strip-components', '0')
 
 
     def _extract_hardlinks_setup(self):
     def _extract_hardlinks_setup(self):
         os.mkdir(os.path.join(self.input_path, 'dir1'))
         os.mkdir(os.path.join(self.input_path, 'dir1'))
@@ -873,7 +873,7 @@ class ArchiverTestCase(ArchiverTestCaseBase):
     def test_extract_hardlinks1(self):
     def test_extract_hardlinks1(self):
         self._extract_hardlinks_setup()
         self._extract_hardlinks_setup()
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test')
             assert os.stat('input/source').st_nlink == 4
             assert os.stat('input/source').st_nlink == 4
             assert os.stat('input/abba').st_nlink == 4
             assert os.stat('input/abba').st_nlink == 4
             assert os.stat('input/dir1/hardlink').st_nlink == 4
             assert os.stat('input/dir1/hardlink').st_nlink == 4
@@ -884,14 +884,14 @@ class ArchiverTestCase(ArchiverTestCaseBase):
     def test_extract_hardlinks2(self):
     def test_extract_hardlinks2(self):
         self._extract_hardlinks_setup()
         self._extract_hardlinks_setup()
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', '--strip-components', '2')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test', '--strip-components', '2')
             assert os.stat('hardlink').st_nlink == 2
             assert os.stat('hardlink').st_nlink == 2
             assert os.stat('subdir/hardlink').st_nlink == 2
             assert os.stat('subdir/hardlink').st_nlink == 2
             assert open('subdir/hardlink', 'rb').read() == b'123456'
             assert open('subdir/hardlink', 'rb').read() == b'123456'
             assert os.stat('aaaa').st_nlink == 2
             assert os.stat('aaaa').st_nlink == 2
             assert os.stat('source2').st_nlink == 2
             assert os.stat('source2').st_nlink == 2
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', 'input/dir1')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test', 'input/dir1')
             assert os.stat('input/dir1/hardlink').st_nlink == 2
             assert os.stat('input/dir1/hardlink').st_nlink == 2
             assert os.stat('input/dir1/subdir/hardlink').st_nlink == 2
             assert os.stat('input/dir1/subdir/hardlink').st_nlink == 2
             assert open('input/dir1/subdir/hardlink', 'rb').read() == b'123456'
             assert open('input/dir1/subdir/hardlink', 'rb').read() == b'123456'
@@ -913,7 +913,7 @@ class ArchiverTestCase(ArchiverTestCaseBase):
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input', 'input')  # give input twice!
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input', 'input')  # give input twice!
         # now test extraction
         # now test extraction
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test')
             # if issue #5603 happens, extraction gives rc == 1 (triggering AssertionError) and warnings like:
             # if issue #5603 happens, extraction gives rc == 1 (triggering AssertionError) and warnings like:
             # input/a/hardlink: link: [Errno 2] No such file or directory: 'input/a/hardlink' -> 'input/a/hardlink'
             # input/a/hardlink: link: [Errno 2] No such file or directory: 'input/a/hardlink' -> 'input/a/hardlink'
             # input/b/hardlink: link: [Errno 2] No such file or directory: 'input/a/hardlink' -> 'input/b/hardlink'
             # input/b/hardlink: link: [Errno 2] No such file or directory: 'input/a/hardlink' -> 'input/b/hardlink'
@@ -929,13 +929,13 @@ class ArchiverTestCase(ArchiverTestCaseBase):
         self.create_regular_file('file4', size=1024 * 80)
         self.create_regular_file('file4', size=1024 * 80)
         self.cmd(f'--repo={self.repository_location}', 'create', '--exclude=input/file4', 'test', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', '--exclude=input/file4', 'test', 'input')
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', 'input/file1', )
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test', 'input/file1', )
         self.assert_equal(sorted(os.listdir('output/input')), ['file1'])
         self.assert_equal(sorted(os.listdir('output/input')), ['file1'])
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', '--exclude=input/file2')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test', '--exclude=input/file2')
         self.assert_equal(sorted(os.listdir('output/input')), ['file1', 'file3'])
         self.assert_equal(sorted(os.listdir('output/input')), ['file1', 'file3'])
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', '--exclude-from=' + self.exclude_file_path)
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test', '--exclude-from=' + self.exclude_file_path)
         self.assert_equal(sorted(os.listdir('output/input')), ['file1', 'file3'])
         self.assert_equal(sorted(os.listdir('output/input')), ['file1', 'file3'])
 
 
     def test_extract_include_exclude_regex(self):
     def test_extract_include_exclude_regex(self):
@@ -949,25 +949,25 @@ class ArchiverTestCase(ArchiverTestCaseBase):
         # Create with regular expression exclusion for file4
         # Create with regular expression exclusion for file4
         self.cmd(f'--repo={self.repository_location}', 'create', '--exclude=re:input/file4$', 'test', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', '--exclude=re:input/file4$', 'test', 'input')
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test')
         self.assert_equal(sorted(os.listdir('output/input')), ['file1', 'file2', 'file3', 'file333'])
         self.assert_equal(sorted(os.listdir('output/input')), ['file1', 'file2', 'file3', 'file333'])
         shutil.rmtree('output/input')
         shutil.rmtree('output/input')
 
 
         # Extract with regular expression exclusion
         # Extract with regular expression exclusion
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', '--exclude=re:file3+')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test', '--exclude=re:file3+')
         self.assert_equal(sorted(os.listdir('output/input')), ['file1', 'file2'])
         self.assert_equal(sorted(os.listdir('output/input')), ['file1', 'file2'])
         shutil.rmtree('output/input')
         shutil.rmtree('output/input')
 
 
         # Combine --exclude with fnmatch and regular expression
         # Combine --exclude with fnmatch and regular expression
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', '--exclude=input/file2', '--exclude=re:file[01]')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test', '--exclude=input/file2', '--exclude=re:file[01]')
         self.assert_equal(sorted(os.listdir('output/input')), ['file3', 'file333'])
         self.assert_equal(sorted(os.listdir('output/input')), ['file3', 'file333'])
         shutil.rmtree('output/input')
         shutil.rmtree('output/input')
 
 
         # Combine --exclude-from and regular expression exclusion
         # Combine --exclude-from and regular expression exclusion
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', '--exclude-from=' + self.exclude_file_path,
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test', '--exclude-from=' + self.exclude_file_path,
                      '--exclude=re:file1', '--exclude=re:file(\\d)\\1\\1$')
                      '--exclude=re:file1', '--exclude=re:file(\\d)\\1\\1$')
         self.assert_equal(sorted(os.listdir('output/input')), ['file3'])
         self.assert_equal(sorted(os.listdir('output/input')), ['file3'])
 
 
@@ -987,7 +987,7 @@ class ArchiverTestCase(ArchiverTestCaseBase):
 
 
         self.cmd(f'--repo={self.repository_location}', 'create', '--exclude-from=' + self.exclude_file_path, 'test', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', '--exclude-from=' + self.exclude_file_path, 'test', 'input')
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test')
         self.assert_equal(sorted(os.listdir('output/input')), ['file1', 'file2', 'file3', 'file333'])
         self.assert_equal(sorted(os.listdir('output/input')), ['file1', 'file2', 'file3', 'file333'])
         shutil.rmtree('output/input')
         shutil.rmtree('output/input')
 
 
@@ -996,7 +996,7 @@ class ArchiverTestCase(ArchiverTestCaseBase):
             fd.write(b're:file3+\n')
             fd.write(b're:file3+\n')
 
 
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', '--exclude-from=' + self.exclude_file_path)
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test', '--exclude-from=' + self.exclude_file_path)
         self.assert_equal(sorted(os.listdir('output/input')), ['file1', 'file2'])
         self.assert_equal(sorted(os.listdir('output/input')), ['file1', 'file2'])
         shutil.rmtree('output/input')
         shutil.rmtree('output/input')
 
 
@@ -1008,7 +1008,7 @@ class ArchiverTestCase(ArchiverTestCaseBase):
             fd.write(b're:file2$\n')
             fd.write(b're:file2$\n')
 
 
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', '--exclude-from=' + self.exclude_file_path)
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test', '--exclude-from=' + self.exclude_file_path)
         self.assert_equal(sorted(os.listdir('output/input')), ['file3'])
         self.assert_equal(sorted(os.listdir('output/input')), ['file3'])
 
 
     def test_extract_with_pattern(self):
     def test_extract_with_pattern(self):
@@ -1023,25 +1023,25 @@ class ArchiverTestCase(ArchiverTestCaseBase):
 
 
         # Extract everything with regular expression
         # Extract everything with regular expression
         with changedir("output"):
         with changedir("output"):
-            self.cmd(f'--repo={self.repository_location}', "extract", "--name=test", "re:.*")
+            self.cmd(f'--repo={self.repository_location}', "extract", "test", "re:.*")
         self.assert_equal(sorted(os.listdir("output/input")), ["file1", "file2", "file3", "file333", "file4"])
         self.assert_equal(sorted(os.listdir("output/input")), ["file1", "file2", "file3", "file333", "file4"])
         shutil.rmtree("output/input")
         shutil.rmtree("output/input")
 
 
         # Extract with pattern while also excluding files
         # Extract with pattern while also excluding files
         with changedir("output"):
         with changedir("output"):
-            self.cmd(f'--repo={self.repository_location}', "extract", "--name=test", "--exclude=re:file[34]$", r"re:file\d$")
+            self.cmd(f'--repo={self.repository_location}', "extract", "--exclude=re:file[34]$", "test", r"re:file\d$")
         self.assert_equal(sorted(os.listdir("output/input")), ["file1", "file2"])
         self.assert_equal(sorted(os.listdir("output/input")), ["file1", "file2"])
         shutil.rmtree("output/input")
         shutil.rmtree("output/input")
 
 
         # Combine --exclude with pattern for extraction
         # Combine --exclude with pattern for extraction
         with changedir("output"):
         with changedir("output"):
-            self.cmd(f'--repo={self.repository_location}', "extract", "--name=test", "--exclude=input/file1", "re:file[12]$")
+            self.cmd(f'--repo={self.repository_location}', "extract", "--exclude=input/file1", "test", "re:file[12]$")
         self.assert_equal(sorted(os.listdir("output/input")), ["file2"])
         self.assert_equal(sorted(os.listdir("output/input")), ["file2"])
         shutil.rmtree("output/input")
         shutil.rmtree("output/input")
 
 
         # Multiple pattern
         # Multiple pattern
         with changedir("output"):
         with changedir("output"):
-            self.cmd(f'--repo={self.repository_location}', "extract", "--name=test", "fm:input/file1", "fm:*file33*", "input/file2")
+            self.cmd(f'--repo={self.repository_location}', "extract", "test", "fm:input/file1", "fm:*file33*", "input/file2")
         self.assert_equal(sorted(os.listdir("output/input")), ["file1", "file2", "file333"])
         self.assert_equal(sorted(os.listdir("output/input")), ["file1", "file2", "file333"])
 
 
     def test_extract_list_output(self):
     def test_extract_list_output(self):
@@ -1051,22 +1051,22 @@ class ArchiverTestCase(ArchiverTestCaseBase):
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
 
 
         with changedir('output'):
         with changedir('output'):
-            output = self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test')
+            output = self.cmd(f'--repo={self.repository_location}', 'extract', 'test')
         self.assert_not_in("input/file", output)
         self.assert_not_in("input/file", output)
         shutil.rmtree('output/input')
         shutil.rmtree('output/input')
 
 
         with changedir('output'):
         with changedir('output'):
-            output = self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', '--info')
+            output = self.cmd(f'--repo={self.repository_location}', 'extract', 'test', '--info')
         self.assert_not_in("input/file", output)
         self.assert_not_in("input/file", output)
         shutil.rmtree('output/input')
         shutil.rmtree('output/input')
 
 
         with changedir('output'):
         with changedir('output'):
-            output = self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', '--list')
+            output = self.cmd(f'--repo={self.repository_location}', 'extract', 'test', '--list')
         self.assert_in("input/file", output)
         self.assert_in("input/file", output)
         shutil.rmtree('output/input')
         shutil.rmtree('output/input')
 
 
         with changedir('output'):
         with changedir('output'):
-            output = self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', '--list', '--info')
+            output = self.cmd(f'--repo={self.repository_location}', 'extract', 'test', '--list', '--info')
         self.assert_in("input/file", output)
         self.assert_in("input/file", output)
 
 
     def test_extract_progress(self):
     def test_extract_progress(self):
@@ -1075,7 +1075,7 @@ class ArchiverTestCase(ArchiverTestCaseBase):
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
 
 
         with changedir('output'):
         with changedir('output'):
-            output = self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', '--progress')
+            output = self.cmd(f'--repo={self.repository_location}', 'extract', 'test', '--progress')
             assert 'Extracting:' in output
             assert 'Extracting:' in output
 
 
     def _create_test_caches(self):
     def _create_test_caches(self):
@@ -1101,7 +1101,7 @@ class ArchiverTestCase(ArchiverTestCaseBase):
         assert item['gid'] == 0
         assert item['gid'] == 0
         assert item['size'] == len(input_data)
         assert item['size'] == len(input_data)
         assert item['path'] == 'stdin'
         assert item['path'] == 'stdin'
-        extracted_data = self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', '--stdout', binary_output=True)
+        extracted_data = self.cmd(f'--repo={self.repository_location}', 'extract', 'test', '--stdout', binary_output=True)
         assert extracted_data == input_data
         assert extracted_data == input_data
 
 
     def test_create_content_from_command(self):
     def test_create_content_from_command(self):
@@ -1115,7 +1115,7 @@ class ArchiverTestCase(ArchiverTestCaseBase):
         assert item['gid'] == 0
         assert item['gid'] == 0
         assert item['size'] == len(input_data) + 1  # `echo` adds newline
         assert item['size'] == len(input_data) + 1  # `echo` adds newline
         assert item['path'] == name
         assert item['path'] == name
-        extracted_data = self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', '--stdout')
+        extracted_data = self.cmd(f'--repo={self.repository_location}', 'extract', 'test', '--stdout')
         assert extracted_data == input_data + '\n'
         assert extracted_data == input_data + '\n'
 
 
     def test_create_content_from_command_with_failed_command(self):
     def test_create_content_from_command_with_failed_command(self):
@@ -1296,13 +1296,13 @@ class ArchiverTestCase(ArchiverTestCaseBase):
         self.create_regular_file('file_important', size=1024 * 80)
         self.create_regular_file('file_important', size=1024 * 80)
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test',
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test',
                      '--pattern=+input/file_important', '--pattern=-input/file*')
                      '--pattern=+input/file_important', '--pattern=-input/file*')
         self.assert_equal(sorted(os.listdir('output/input')), ['file_important'])
         self.assert_equal(sorted(os.listdir('output/input')), ['file_important'])
 
 
     def _assert_test_caches(self):
     def _assert_test_caches(self):
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test')
         self.assert_equal(sorted(os.listdir('output/input')), ['cache2', 'file1'])
         self.assert_equal(sorted(os.listdir('output/input')), ['cache2', 'file1'])
         self.assert_equal(sorted(os.listdir('output/input/cache2')), [CACHE_TAG_NAME])
         self.assert_equal(sorted(os.listdir('output/input/cache2')), [CACHE_TAG_NAME])
 
 
@@ -1326,7 +1326,7 @@ class ArchiverTestCase(ArchiverTestCaseBase):
 
 
     def _assert_test_tagged(self):
     def _assert_test_tagged(self):
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test')
         self.assert_equal(sorted(os.listdir('output/input')), ['file1'])
         self.assert_equal(sorted(os.listdir('output/input')), ['file1'])
 
 
     def test_exclude_tagged(self):
     def test_exclude_tagged(self):
@@ -1360,7 +1360,7 @@ class ArchiverTestCase(ArchiverTestCaseBase):
 
 
     def _assert_test_keep_tagged(self):
     def _assert_test_keep_tagged(self):
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test')
         self.assert_equal(sorted(os.listdir('output/input')), ['file0', 'tagged1', 'tagged2', 'tagged3', 'taggedall'])
         self.assert_equal(sorted(os.listdir('output/input')), ['file0', 'tagged1', 'tagged2', 'tagged3', 'taggedall'])
         self.assert_equal(os.listdir('output/input/tagged1'), ['.NOBACKUP1'])
         self.assert_equal(os.listdir('output/input/tagged1'), ['.NOBACKUP1'])
         self.assert_equal(os.listdir('output/input/tagged2'), ['.NOBACKUP2'])
         self.assert_equal(os.listdir('output/input/tagged2'), ['.NOBACKUP2'])
@@ -1413,7 +1413,7 @@ class ArchiverTestCase(ArchiverTestCaseBase):
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
         with changedir('output'):
         with changedir('output'):
             with patch.object(os, 'fchown', patched_fchown):
             with patch.object(os, 'fchown', patched_fchown):
-                self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test')
+                self.cmd(f'--repo={self.repository_location}', 'extract', 'test')
             assert xattr.getxattr(b'input/file', b'security.capability') == capabilities
             assert xattr.getxattr(b'input/file', b'security.capability') == capabilities
 
 
     @pytest.mark.skipif(not xattr.XATTR_FAKEROOT, reason='xattr not supported on this system or on this version of'
     @pytest.mark.skipif(not xattr.XATTR_FAKEROOT, reason='xattr not supported on this system or on this version of'
@@ -1435,15 +1435,15 @@ class ArchiverTestCase(ArchiverTestCaseBase):
         with changedir('output'):
         with changedir('output'):
             input_abspath = os.path.abspath('input/file')
             input_abspath = os.path.abspath('input/file')
             with patch.object(xattr, 'setxattr', patched_setxattr_E2BIG):
             with patch.object(xattr, 'setxattr', patched_setxattr_E2BIG):
-                out = self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', exit_code=EXIT_WARNING)
+                out = self.cmd(f'--repo={self.repository_location}', 'extract', 'test', exit_code=EXIT_WARNING)
                 assert ': when setting extended attribute user.attribute: too big for this filesystem\n' in out
                 assert ': when setting extended attribute user.attribute: too big for this filesystem\n' in out
             os.remove(input_abspath)
             os.remove(input_abspath)
             with patch.object(xattr, 'setxattr', patched_setxattr_ENOTSUP):
             with patch.object(xattr, 'setxattr', patched_setxattr_ENOTSUP):
-                out = self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', exit_code=EXIT_WARNING)
+                out = self.cmd(f'--repo={self.repository_location}', 'extract', 'test', exit_code=EXIT_WARNING)
                 assert ': when setting extended attribute user.attribute: xattrs not supported on this filesystem\n' in out
                 assert ': when setting extended attribute user.attribute: xattrs not supported on this filesystem\n' in out
             os.remove(input_abspath)
             os.remove(input_abspath)
             with patch.object(xattr, 'setxattr', patched_setxattr_EACCES):
             with patch.object(xattr, 'setxattr', patched_setxattr_EACCES):
-                out = self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', exit_code=EXIT_WARNING)
+                out = self.cmd(f'--repo={self.repository_location}', 'extract', 'test', exit_code=EXIT_WARNING)
                 assert ': when setting extended attribute user.attribute: Permission denied\n' in out
                 assert ': when setting extended attribute user.attribute: Permission denied\n' in out
             assert os.path.isfile(input_abspath)
             assert os.path.isfile(input_abspath)
 
 
@@ -1464,16 +1464,16 @@ class ArchiverTestCase(ArchiverTestCaseBase):
         with changedir('input'):
         with changedir('input'):
             self.cmd(f'--repo={self.repository_location}', 'create', 'test1', '.', '--exclude=file1')
             self.cmd(f'--repo={self.repository_location}', 'create', 'test1', '.', '--exclude=file1')
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test1')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test1')
         self.assert_equal(sorted(os.listdir('output')), ['file2'])
         self.assert_equal(sorted(os.listdir('output')), ['file2'])
         with changedir('input'):
         with changedir('input'):
             self.cmd(f'--repo={self.repository_location}', 'create', 'test2', '.', '--exclude=./file1')
             self.cmd(f'--repo={self.repository_location}', 'create', 'test2', '.', '--exclude=./file1')
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test2')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test2')
         self.assert_equal(sorted(os.listdir('output')), ['file2'])
         self.assert_equal(sorted(os.listdir('output')), ['file2'])
         self.cmd(f'--repo={self.repository_location}', 'create', 'test3', 'input', '--exclude=input/./file1')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test3', 'input', '--exclude=input/./file1')
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test3')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test3')
         self.assert_equal(sorted(os.listdir('output/input')), ['file2'])
         self.assert_equal(sorted(os.listdir('output/input')), ['file2'])
 
 
     def test_repeated_files(self):
     def test_repeated_files(self):
@@ -1491,14 +1491,14 @@ class ArchiverTestCase(ArchiverTestCaseBase):
         os.mkdir('output/input/file1')
         os.mkdir('output/input/file1')
         os.mkdir('output/input/dir2')
         os.mkdir('output/input/dir2')
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test')
         self.assert_dirs_equal('input', 'output/input')
         self.assert_dirs_equal('input', 'output/input')
         # But non-empty dirs should fail
         # But non-empty dirs should fail
         os.unlink('output/input/file1')
         os.unlink('output/input/file1')
         os.mkdir('output/input/file1')
         os.mkdir('output/input/file1')
         os.mkdir('output/input/file1/dir')
         os.mkdir('output/input/file1/dir')
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', exit_code=1)
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test', exit_code=1)
 
 
     def test_rename(self):
     def test_rename(self):
         self.create_regular_file('file1', size=1024 * 80)
         self.create_regular_file('file1', size=1024 * 80)
@@ -1506,13 +1506,13 @@ class ArchiverTestCase(ArchiverTestCaseBase):
         self.cmd(f'--repo={self.repository_location}', 'init', '--encryption=repokey')
         self.cmd(f'--repo={self.repository_location}', 'init', '--encryption=repokey')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test.2', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test.2', 'input')
-        self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', '--dry-run')
-        self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test.2', '--dry-run')
+        self.cmd(f'--repo={self.repository_location}', 'extract', 'test', '--dry-run')
+        self.cmd(f'--repo={self.repository_location}', 'extract', 'test.2', '--dry-run')
         self.cmd(f'--repo={self.repository_location}', 'rename', 'test', 'test.3')
         self.cmd(f'--repo={self.repository_location}', 'rename', 'test', 'test.3')
-        self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test.2', '--dry-run')
+        self.cmd(f'--repo={self.repository_location}', 'extract', 'test.2', '--dry-run')
         self.cmd(f'--repo={self.repository_location}', 'rename', 'test.2', 'test.4')
         self.cmd(f'--repo={self.repository_location}', 'rename', 'test.2', 'test.4')
-        self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test.3', '--dry-run')
-        self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test.4', '--dry-run')
+        self.cmd(f'--repo={self.repository_location}', 'extract', 'test.3', '--dry-run')
+        self.cmd(f'--repo={self.repository_location}', 'extract', 'test.4', '--dry-run')
         # Make sure both archives have been renamed
         # Make sure both archives have been renamed
         with Repository(self.repository_path) as repository:
         with Repository(self.repository_path) as repository:
             manifest, key = Manifest.load(repository, Manifest.NO_OPERATION_CHECK)
             manifest, key = Manifest.load(repository, Manifest.NO_OPERATION_CHECK)
@@ -1597,12 +1597,12 @@ class ArchiverTestCase(ArchiverTestCaseBase):
         self.cmd(f'--repo={self.repository_location}', 'create', 'test.3', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test.3', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', 'another_test.1', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', 'another_test.1', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', 'another_test.2', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', 'another_test.2', 'input')
-        self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', '--dry-run')
-        self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test.2', '--dry-run')
+        self.cmd(f'--repo={self.repository_location}', 'extract', 'test', '--dry-run')
+        self.cmd(f'--repo={self.repository_location}', 'extract', 'test.2', '--dry-run')
         self.cmd(f'--repo={self.repository_location}', 'delete', '--prefix', 'another_')
         self.cmd(f'--repo={self.repository_location}', 'delete', '--prefix', 'another_')
         self.cmd(f'--repo={self.repository_location}', 'delete', '--last', '1')
         self.cmd(f'--repo={self.repository_location}', 'delete', '--last', '1')
         self.cmd(f'--repo={self.repository_location}', 'delete', '--name=test')
         self.cmd(f'--repo={self.repository_location}', 'delete', '--name=test')
-        self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test.2', '--dry-run')
+        self.cmd(f'--repo={self.repository_location}', 'extract', 'test.2', '--dry-run')
         output = self.cmd(f'--repo={self.repository_location}', 'delete', '--name=test.2', '--stats')
         output = self.cmd(f'--repo={self.repository_location}', 'delete', '--name=test.2', '--stats')
         self.assert_in('Deleted data:', output)
         self.assert_in('Deleted data:', output)
         # Make sure all data except the manifest has been deleted
         # Make sure all data except the manifest has been deleted
@@ -1616,7 +1616,7 @@ class ArchiverTestCase(ArchiverTestCaseBase):
         self.cmd(f'--repo={self.repository_location}', 'create', 'test2', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test2', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test3', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test3', 'input')
         self.cmd(f'--repo={self.repository_location}', 'delete', '--name=test1', 'test2')
         self.cmd(f'--repo={self.repository_location}', 'delete', '--name=test1', 'test2')
-        self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test3', '--dry-run')
+        self.cmd(f'--repo={self.repository_location}', 'extract', 'test3', '--dry-run')
         self.cmd(f'--repo={self.repository_location}', 'delete', '--name=test3')
         self.cmd(f'--repo={self.repository_location}', 'delete', '--name=test3')
         assert not self.cmd(f'--repo={self.repository_location}', 'list')
         assert not self.cmd(f'--repo={self.repository_location}', 'list')
 
 
@@ -1670,7 +1670,7 @@ class ArchiverTestCase(ArchiverTestCaseBase):
     def test_corrupted_repository(self):
     def test_corrupted_repository(self):
         self.cmd(f'--repo={self.repository_location}', 'init', '--encryption=repokey')
         self.cmd(f'--repo={self.repository_location}', 'init', '--encryption=repokey')
         self.create_src_archive('test')
         self.create_src_archive('test')
-        self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', '--dry-run')
+        self.cmd(f'--repo={self.repository_location}', 'extract', 'test', '--dry-run')
         output = self.cmd(f'--repo={self.repository_location}', 'check', '--show-version')
         output = self.cmd(f'--repo={self.repository_location}', 'check', '--show-version')
         self.assert_in('borgbackup version', output)  # implied output even without --info given
         self.assert_in('borgbackup version', output)  # implied output even without --info given
         self.assert_not_in('Starting repository check', output)  # --info not given for root logger
         self.assert_not_in('Starting repository check', output)  # --info not given for root logger
@@ -1734,14 +1734,14 @@ class ArchiverTestCase(ArchiverTestCaseBase):
         with self.read_only(self.repository_path):
         with self.read_only(self.repository_path):
             # verify that command normally doesn't work with read-only repo
             # verify that command normally doesn't work with read-only repo
             if self.FORK_DEFAULT:
             if self.FORK_DEFAULT:
-                self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', exit_code=EXIT_ERROR)
+                self.cmd(f'--repo={self.repository_location}', 'extract', 'test', exit_code=EXIT_ERROR)
             else:
             else:
                 with pytest.raises((LockFailed, RemoteRepository.RPCError)) as excinfo:
                 with pytest.raises((LockFailed, RemoteRepository.RPCError)) as excinfo:
-                    self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test')
+                    self.cmd(f'--repo={self.repository_location}', 'extract', 'test')
                 if isinstance(excinfo.value, RemoteRepository.RPCError):
                 if isinstance(excinfo.value, RemoteRepository.RPCError):
                     assert excinfo.value.exception_class == 'LockFailed'
                     assert excinfo.value.exception_class == 'LockFailed'
             # verify that command works with read-only repo when using --bypass-lock
             # verify that command works with read-only repo when using --bypass-lock
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', '--bypass-lock')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test', '--bypass-lock')
 
 
     def test_readonly_info(self):
     def test_readonly_info(self):
         self.cmd(f'--repo={self.repository_location}', 'init', '--encryption=repokey')
         self.cmd(f'--repo={self.repository_location}', 'init', '--encryption=repokey')
@@ -1845,7 +1845,7 @@ class ArchiverTestCase(ArchiverTestCaseBase):
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
         self.add_unknown_feature(Manifest.Operation.READ)
         self.add_unknown_feature(Manifest.Operation.READ)
         with changedir('output'):
         with changedir('output'):
-            self.cmd_raises_unknown_feature([f'--repo={self.repository_location}', 'extract', '--name=test'])
+            self.cmd_raises_unknown_feature([f'--repo={self.repository_location}', 'extract', 'test'])
 
 
         self.cmd_raises_unknown_feature([f'--repo={self.repository_location}', 'list'])
         self.cmd_raises_unknown_feature([f'--repo={self.repository_location}', 'list'])
         self.cmd_raises_unknown_feature([f'--repo={self.repository_location}', 'info', '--name=test'])
         self.cmd_raises_unknown_feature([f'--repo={self.repository_location}', 'info', '--name=test'])
@@ -2083,7 +2083,7 @@ class ArchiverTestCase(ArchiverTestCaseBase):
         finally:
         finally:
             t.join()
             t.join()
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test')
             fifo_fn = 'input/link_fifo'
             fifo_fn = 'input/link_fifo'
             with open(fifo_fn, 'rb') as f:
             with open(fifo_fn, 'rb') as f:
                 extracted_data = f.read()
                 extracted_data = f.read()
@@ -2953,13 +2953,13 @@ class ArchiverTestCase(ArchiverTestCaseBase):
         self.cmd(f'--repo={self.repository_location}', 'recreate', '-a', 'test', 'input/dir1')
         self.cmd(f'--repo={self.repository_location}', 'recreate', '-a', 'test', 'input/dir1')
         self.check_cache()
         self.check_cache()
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test')
             assert os.stat('input/dir1/hardlink').st_nlink == 2
             assert os.stat('input/dir1/hardlink').st_nlink == 2
             assert os.stat('input/dir1/subdir/hardlink').st_nlink == 2
             assert os.stat('input/dir1/subdir/hardlink').st_nlink == 2
             assert os.stat('input/dir1/aaaa').st_nlink == 2
             assert os.stat('input/dir1/aaaa').st_nlink == 2
             assert os.stat('input/dir1/source2').st_nlink == 2
             assert os.stat('input/dir1/source2').st_nlink == 2
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test2')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test2')
             assert os.stat('input/dir1/hardlink').st_nlink == 4
             assert os.stat('input/dir1/hardlink').st_nlink == 4
 
 
     def test_recreate_rechunkify(self):
     def test_recreate_rechunkify(self):
@@ -3437,7 +3437,7 @@ id: 2 / e29442 3506da 4e1ea7 / 25f62a 5a3d41 - 02
         self.cmd(f'--repo={self.repository_location}', 'export-tar', '--name=src', 'simple.tar', f'--tar-format={tar_format}')
         self.cmd(f'--repo={self.repository_location}', 'export-tar', '--name=src', 'simple.tar', f'--tar-format={tar_format}')
         self.cmd(f'--repo={self.repository_location}', 'import-tar', '--name=dst', 'simple.tar')
         self.cmd(f'--repo={self.repository_location}', 'import-tar', '--name=dst', 'simple.tar')
         with changedir(self.output_path):
         with changedir(self.output_path):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=dst')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'dst')
         self.assert_dirs_equal('input', 'output/input', ignore_ns=True, ignore_xattrs=True)
         self.assert_dirs_equal('input', 'output/input', ignore_ns=True, ignore_xattrs=True)
 
 
     @requires_gzip
     @requires_gzip
@@ -3451,7 +3451,7 @@ id: 2 / e29442 3506da 4e1ea7 / 25f62a 5a3d41 - 02
         self.cmd(f'--repo={self.repository_location}', 'export-tar', '--name=src', 'simple.tgz', f'--tar-format={tar_format}')
         self.cmd(f'--repo={self.repository_location}', 'export-tar', '--name=src', 'simple.tgz', f'--tar-format={tar_format}')
         self.cmd(f'--repo={self.repository_location}', 'import-tar', '--name=dst', 'simple.tgz')
         self.cmd(f'--repo={self.repository_location}', 'import-tar', '--name=dst', 'simple.tgz')
         with changedir(self.output_path):
         with changedir(self.output_path):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=dst')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'dst')
         self.assert_dirs_equal('input', 'output/input', ignore_ns=True, ignore_xattrs=True)
         self.assert_dirs_equal('input', 'output/input', ignore_ns=True, ignore_xattrs=True)
 
 
     def test_roundtrip_pax_borg(self):
     def test_roundtrip_pax_borg(self):
@@ -3461,7 +3461,7 @@ id: 2 / e29442 3506da 4e1ea7 / 25f62a 5a3d41 - 02
         self.cmd(f'--repo={self.repository_location}', 'export-tar', '--name=src', 'simple.tar', '--tar-format=BORG')
         self.cmd(f'--repo={self.repository_location}', 'export-tar', '--name=src', 'simple.tar', '--tar-format=BORG')
         self.cmd(f'--repo={self.repository_location}', 'import-tar', '--name=dst', 'simple.tar')
         self.cmd(f'--repo={self.repository_location}', 'import-tar', '--name=dst', 'simple.tar')
         with changedir(self.output_path):
         with changedir(self.output_path):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=dst')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'dst')
         self.assert_dirs_equal('input', 'output/input')
         self.assert_dirs_equal('input', 'output/input')
 
 
     # derived from test_extract_xattrs_errors()
     # derived from test_extract_xattrs_errors()
@@ -3478,7 +3478,7 @@ id: 2 / e29442 3506da 4e1ea7 / 25f62a 5a3d41 - 02
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
         with changedir('output'):
         with changedir('output'):
             with patch.object(xattr, 'setxattr', patched_setxattr_EACCES):
             with patch.object(xattr, 'setxattr', patched_setxattr_EACCES):
-                self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', exit_code=EXIT_WARNING)
+                self.cmd(f'--repo={self.repository_location}', 'extract', 'test', exit_code=EXIT_WARNING)
 
 
     # derived from test_extract_xattrs_errors()
     # derived from test_extract_xattrs_errors()
     @pytest.mark.skipif(not xattr.XATTR_FAKEROOT, reason='xattr not supported on this system or on this version of'
     @pytest.mark.skipif(not xattr.XATTR_FAKEROOT, reason='xattr not supported on this system or on this version of'
@@ -3494,7 +3494,7 @@ id: 2 / e29442 3506da 4e1ea7 / 25f62a 5a3d41 - 02
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
         with changedir('output'):
         with changedir('output'):
             with patch.object(xattr, 'setxattr', patched_setxattr_EACCES):
             with patch.object(xattr, 'setxattr', patched_setxattr_EACCES):
-                self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', exit_code=EXIT_WARNING)
+                self.cmd(f'--repo={self.repository_location}', 'extract', 'test', exit_code=EXIT_WARNING)
 
 
     def test_do_not_mention_archive_if_you_can_not_find_repo(self):
     def test_do_not_mention_archive_if_you_can_not_find_repo(self):
         """https://github.com/borgbackup/borg/issues/6014"""
         """https://github.com/borgbackup/borg/issues/6014"""
@@ -3529,7 +3529,7 @@ id: 2 / e29442 3506da 4e1ea7 / 25f62a 5a3d41 - 02
         assert 'file1' in archive_list
         assert 'file1' in archive_list
         # Extracting the archive should work
         # Extracting the archive should work
         with changedir('output'):
         with changedir('output'):
-            self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test')
+            self.cmd(f'--repo={self.repository_location}', 'extract', 'test')
         self.assert_dirs_equal('input', 'output/input')
         self.assert_dirs_equal('input', 'output/input')
 
 
     def test_recovery_from_deleted_repo_nonce(self):
     def test_recovery_from_deleted_repo_nonce(self):
@@ -3826,7 +3826,7 @@ class ArchiverCheckTestCase(ArchiverTestCaseBase):
         self.cmd(f'--repo={self.repository_location}', 'check', exit_code=1)
         self.cmd(f'--repo={self.repository_location}', 'check', exit_code=1)
         self.cmd(f'--repo={self.repository_location}', 'check', '--repair', exit_code=0)
         self.cmd(f'--repo={self.repository_location}', 'check', '--repair', exit_code=0)
         self.cmd(f'--repo={self.repository_location}', 'check', exit_code=0)
         self.cmd(f'--repo={self.repository_location}', 'check', exit_code=0)
-        self.cmd(f'--repo={self.repository_location}', 'extract', '--name=archive1', '--dry-run', exit_code=0)
+        self.cmd(f'--repo={self.repository_location}', 'extract', 'archive1', '--dry-run', exit_code=0)
 
 
     def _test_verify_data(self, *init_args):
     def _test_verify_data(self, *init_args):
         shutil.rmtree(self.repository_path)
         shutil.rmtree(self.repository_path)
@@ -3997,16 +3997,16 @@ class RemoteArchiverTestCase(ArchiverTestCase):
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
         self.cmd(f'--repo={self.repository_location}', 'create', 'test', 'input')
         marker = 'cached responses left in RemoteRepository'
         marker = 'cached responses left in RemoteRepository'
         with changedir('output'):
         with changedir('output'):
-            res = self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', "--debug", '--strip-components', '3')
+            res = self.cmd(f'--repo={self.repository_location}', 'extract', 'test', "--debug", '--strip-components', '3')
             assert marker not in res
             assert marker not in res
             with self.assert_creates_file('file'):
             with self.assert_creates_file('file'):
-                res = self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', "--debug", '--strip-components', '2')
+                res = self.cmd(f'--repo={self.repository_location}', 'extract', 'test', "--debug", '--strip-components', '2')
                 assert marker not in res
                 assert marker not in res
             with self.assert_creates_file('dir/file'):
             with self.assert_creates_file('dir/file'):
-                res = self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', "--debug", '--strip-components', '1')
+                res = self.cmd(f'--repo={self.repository_location}', 'extract', 'test', "--debug", '--strip-components', '1')
                 assert marker not in res
                 assert marker not in res
             with self.assert_creates_file('input/dir/file'):
             with self.assert_creates_file('input/dir/file'):
-                res = self.cmd(f'--repo={self.repository_location}', 'extract', '--name=test', "--debug", '--strip-components', '0')
+                res = self.cmd(f'--repo={self.repository_location}', 'extract', 'test', "--debug", '--strip-components', '0')
                 assert marker not in res
                 assert marker not in res
 
 
 
 

+ 1 - 1
src/borg/testsuite/benchmark.py

@@ -76,7 +76,7 @@ def test_create_lz4(benchmark, cmd, repo, testdata):
 def test_extract(benchmark, cmd, repo_archive, tmpdir):
 def test_extract(benchmark, cmd, repo_archive, tmpdir):
     repo, archive = repo_archive
     repo, archive = repo_archive
     with changedir(str(tmpdir)):
     with changedir(str(tmpdir)):
-        result, out = benchmark.pedantic(cmd, (f'--repo={repo}', 'extract', '--name', archive))
+        result, out = benchmark.pedantic(cmd, (f'--repo={repo}', 'extract', archive))
     assert result == 0
     assert result == 0