diff --git a/src/ZODB/scripts/repozo.py b/src/ZODB/scripts/repozo.py
index d9422ad2..70d323f5 100755
--- a/src/ZODB/scripts/repozo.py
+++ b/src/ZODB/scripts/repozo.py
@@ -251,6 +251,8 @@ def parseargs(argv):
         if options.withverify is not None:
             log('--with-verify option is ignored in backup mode')
             options.withverify = None
+        if not options.file:
+            usage(1, '--file is required in backup mode')
     elif options.mode == RECOVER:
         if options.file is not None:
             log('--file option is ignored in recover mode')

diff --git a/src/ZODB/scripts/tests/test_repozo.py b/src/ZODB/scripts/tests/test_repozo.py
index 785069f4..f9076092 100644
--- a/src/ZODB/scripts/tests/test_repozo.py
+++ b/src/ZODB/scripts/tests/test_repozo.py
@@ -150,7 +150,8 @@ class Test_parseargs(unittest.TestCase):
 
     def test_mode_selection(self):
         from ZODB.scripts import repozo
-        options = repozo.parseargs(['-B', '-r', '/tmp/nosuchdir'])
+        options = repozo.parseargs([
+            '-B', '-f', '/tmp/Data.fs', '-r', '/tmp/nosuchdir'])
         self.assertEqual(options.mode, repozo.BACKUP)
         options = repozo.parseargs(['-R', '-r', '/tmp/nosuchdir'])
         self.assertEqual(options.mode, repozo.RECOVER)
@@ -173,9 +174,11 @@ class Test_parseargs(unittest.TestCase):
 
     def test_misc_flags(self):
         from ZODB.scripts import repozo
-        options = repozo.parseargs(['-B', '-r', '/tmp/nosuchdir', '-F'])
+        options = repozo.parseargs([
+            '-B', '-f', '/tmp/Data.fs', '-r', '/tmp/nosuchdir', '-F'])
         self.assertTrue(options.full)
-        options = repozo.parseargs(['-B', '-r', '/tmp/nosuchdir', '-k'])
+        options = repozo.parseargs([
+            '-B', '-f', '/tmp/Data.fs', '-r', '/tmp/nosuchdir', '-k'])
         self.assertTrue(options.killold)
 
     def test_repo_is_required(self):
@@ -186,6 +189,7 @@ class Test_parseargs(unittest.TestCase):
     def test_backup_ignored_args(self):
         from ZODB.scripts import repozo
         options = repozo.parseargs(['-B', '-r', '/tmp/nosuchdir', '-v',
+                                    '-f', '/tmp/Data.fs',
                                     '-o', '/tmp/ignored.fs',
                                     '-D', '2011-12-13'])
         self.assertEqual(options.date, None)
@@ -195,6 +199,12 @@ class Test_parseargs(unittest.TestCase):
         self.assertIn('--output option is ignored in backup mode',
                       sys.stderr.getvalue())
 
+    def test_backup_required_args(self):
+        from ZODB.scripts import repozo
+        self.assertRaises(SystemExit, repozo.parseargs,
+                          ['-B', '-r', '/tmp/nosuchdir'])
+        self.assertIn('--file is required', sys.stderr.getvalue())
+
     def test_recover_ignored_args(self):
         from ZODB.scripts import repozo
         options = repozo.parseargs(['-R', '-r', '/tmp/nosuchdir', '-v',

Repozo/Filestorage: TypeError: expected str, bytes or os.PathLike object, not NoneType
Plone 5.2RC1, ZODB 5.5.1, Python 3.6:

```

dgho@server:~/onkopedia_buildout$ bin/repozo --backup --repository /tmp/foo
Traceback (most recent call last):
  File "bin/repozo", line 20, in <module>
    sys.exit(ZODB.scripts.repozo.main())
  File "/home/dgho/onkopedia_buildout/eggs/ZODB-5.5.1-py3.6.egg/ZODB/scripts/repozo.py", line 730, in main
    do_backup(options)
  File "/home/dgho/onkopedia_buildout/eggs/ZODB-5.5.1-py3.6.egg/ZODB/scripts/repozo.py", line 565, in do_backup
    do_full_backup(options)
  File "/home/dgho/onkopedia_buildout/eggs/ZODB-5.5.1-py3.6.egg/ZODB/scripts/repozo.py", line 500, in do_full_backup
    fs = FileStorage(options.file, read_only=True)
  File "/home/dgho/onkopedia_buildout/eggs/ZODB-5.5.1-py3.6.egg/ZODB/FileStorage/FileStorage.py", line 248, in __init__
    self._file_name = os.path.abspath(file_name)
  File "/usr/lib/python3.6/posixpath.py", line 371, in abspath
    path = os.fspath(path)
TypeError: expected str, bytes or os.PathLike object, not NoneType

dgho@server:~/onkopedia_buildout$ bin/python
Python 3.6.7 (default, Oct 22 2018, 11:32:17) 
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
```
src/ZODB/scripts/tests/test_repozo.py::Test_parseargs::test_backup_required_args
src/ZODB/scripts/tests/test_repozo.py::Test_parseargs::test_backup_ignored_args src/ZODB/scripts/tests/test_repozo.py::Test_parseargs::test_bad_argument src/ZODB/scripts/tests/test_repozo.py::Test_parseargs::test_bad_option src/ZODB/scripts/tests/test_repozo.py::Test_parseargs::test_help src/ZODB/scripts/tests/test_repozo.py::Test_parseargs::test_long src/ZODB/scripts/tests/test_repozo.py::Test_parseargs::test_misc_flags src/ZODB/scripts/tests/test_repozo.py::Test_parseargs::test_mode_selection src/ZODB/scripts/tests/test_repozo.py::Test_parseargs::test_mode_selection_is_mutually_exclusive src/ZODB/scripts/tests/test_repozo.py::Test_parseargs::test_mode_selection_required src/ZODB/scripts/tests/test_repozo.py::Test_parseargs::test_recover_ignored_args src/ZODB/scripts/tests/test_repozo.py::Test_parseargs::test_repo_is_required src/ZODB/scripts/tests/test_repozo.py::Test_parseargs::test_short src/ZODB/scripts/tests/test_repozo.py::Test_parseargs::test_verify_ignored_args src/ZODB/scripts/tests/test_repozo.py::Test_dofile::test_empty_read_all src/ZODB/scripts/tests/test_repozo.py::Test_dofile::test_empty_read_count src/ZODB/scripts/tests/test_repozo.py::Test_dofile::test_nonempty_read_all src/ZODB/scripts/tests/test_repozo.py::Test_dofile::test_nonempty_read_count src/ZODB/scripts/tests/test_repozo.py::Test_checksum::test_empty_read_all src/ZODB/scripts/tests/test_repozo.py::Test_checksum::test_empty_read_count src/ZODB/scripts/tests/test_repozo.py::Test_checksum::test_nonempty_read_all src/ZODB/scripts/tests/test_repozo.py::Test_checksum::test_nonempty_read_count src/ZODB/scripts/tests/test_repozo.py::Test_copyfile::test_no_gzip src/ZODB/scripts/tests/test_repozo.py::Test_copyfile::test_w_gzip src/ZODB/scripts/tests/test_repozo.py::Test_concat::test_empty_list_no_ofp src/ZODB/scripts/tests/test_repozo.py::Test_concat::test_w_gzipped_files_no_ofp src/ZODB/scripts/tests/test_repozo.py::Test_concat::test_w_ofp src/ZODB/scripts/tests/test_repozo.py::Test_concat::test_w_plain_files_no_ofp src/ZODB/scripts/tests/test_repozo.py::Test_gen_filename::test_explicit_ext src/ZODB/scripts/tests/test_repozo.py::Test_gen_filename::test_full_no_gzip src/ZODB/scripts/tests/test_repozo.py::Test_gen_filename::test_full_w_gzip src/ZODB/scripts/tests/test_repozo.py::Test_gen_filename::test_incr_no_gzip src/ZODB/scripts/tests/test_repozo.py::Test_gen_filename::test_incr_w_gzip src/ZODB/scripts/tests/test_repozo.py::Test_find_files::test_explicit_date src/ZODB/scripts/tests/test_repozo.py::Test_find_files::test_no_files src/ZODB/scripts/tests/test_repozo.py::Test_find_files::test_using_gen_filename src/ZODB/scripts/tests/test_repozo.py::Test_scandat::test_empty_dat_file src/ZODB/scripts/tests/test_repozo.py::Test_scandat::test_multiple_lines src/ZODB/scripts/tests/test_repozo.py::Test_scandat::test_no_dat_file src/ZODB/scripts/tests/test_repozo.py::Test_scandat::test_single_line src/ZODB/scripts/tests/test_repozo.py::Test_delete_old_backups::test_doesnt_remove_current_repozo_files src/ZODB/scripts/tests/test_repozo.py::Test_delete_old_backups::test_empty_dir_doesnt_raise src/ZODB/scripts/tests/test_repozo.py::Test_delete_old_backups::test_no_repozo_files_doesnt_raise src/ZODB/scripts/tests/test_repozo.py::Test_delete_old_backups::test_removes_older_repozo_files src/ZODB/scripts/tests/test_repozo.py::Test_delete_old_backups::test_removes_older_repozo_files_zipped src/ZODB/scripts/tests/test_repozo.py::Test_do_full_backup::test_dont_overwrite_existing_file src/ZODB/scripts/tests/test_repozo.py::Test_do_full_backup::test_empty src/ZODB/scripts/tests/test_repozo.py::Test_do_incremental_backup::test_dont_overwrite_existing_file src/ZODB/scripts/tests/test_repozo.py::Test_do_incremental_backup::test_no_changes src/ZODB/scripts/tests/test_repozo.py::Test_do_incremental_backup::test_w_changes src/ZODB/scripts/tests/test_repozo.py::Test_do_recover::test_no_files src/ZODB/scripts/tests/test_repozo.py::Test_do_recover::test_no_files_before_explicit_date src/ZODB/scripts/tests/test_repozo.py::Test_do_recover::test_w_full_backup_latest_index src/ZODB/scripts/tests/test_repozo.py::Test_do_recover::test_w_full_backup_latest_no_index src/ZODB/scripts/tests/test_repozo.py::Test_do_recover::test_w_incr_backup_latest_index src/ZODB/scripts/tests/test_repozo.py::Test_do_recover::test_w_incr_backup_latest_no_index src/ZODB/scripts/tests/test_repozo.py::Test_do_recover::test_w_incr_backup_with_verify_all_is_fine src/ZODB/scripts/tests/test_repozo.py::Test_do_recover::test_w_incr_backup_with_verify_size_inconsistent src/ZODB/scripts/tests/test_repozo.py::Test_do_recover::test_w_incr_backup_with_verify_sum_inconsistent src/ZODB/scripts/tests/test_repozo.py::Test_do_verify::test_all_is_fine src/ZODB/scripts/tests/test_repozo.py::Test_do_verify::test_all_is_fine_gzip src/ZODB/scripts/tests/test_repozo.py::Test_do_verify::test_bad_checksum src/ZODB/scripts/tests/test_repozo.py::Test_do_verify::test_bad_checksum_gzip src/ZODB/scripts/tests/test_repozo.py::Test_do_verify::test_bad_size src/ZODB/scripts/tests/test_repozo.py::Test_do_verify::test_bad_size_gzip src/ZODB/scripts/tests/test_repozo.py::Test_do_verify::test_missing_file src/ZODB/scripts/tests/test_repozo.py::Test_do_verify::test_missing_file_gzip src/ZODB/scripts/tests/test_repozo.py::Test_do_verify::test_no_files src/ZODB/scripts/tests/test_repozo.py::Test_do_verify::test_quick_ignores_checksums src/ZODB/scripts/tests/test_repozo.py::Test_do_verify::test_quick_ignores_checksums_gzip src/ZODB/scripts/tests/test_repozo.py::MonteCarloTests::test_via_monte_carlo src/ZODB/scripts/tests/test_repozo.py::test_suite