Support for Borg create --checkpoint-interval (#87).
This commit is contained in:
parent
c7f4200417
commit
da7aed3814
4 changed files with 31 additions and 0 deletions
2
NEWS
2
NEWS
|
@ -1,4 +1,6 @@
|
||||||
1.2.3.dev0
|
1.2.3.dev0
|
||||||
|
* #87: Support for Borg create --checkpoint-interval via "checkpoint_interval" option in
|
||||||
|
borgmatic's storage configuration.
|
||||||
* #88: Fix declared pykwalify compatibility version range in setup.py to prevent use of ancient
|
* #88: Fix declared pykwalify compatibility version range in setup.py to prevent use of ancient
|
||||||
versions of pykwalify with large version numbers.
|
versions of pykwalify with large version numbers.
|
||||||
|
|
||||||
|
|
|
@ -115,6 +115,7 @@ def create_archive(
|
||||||
|
|
||||||
pattern_file = _write_pattern_file(location_config.get('patterns'))
|
pattern_file = _write_pattern_file(location_config.get('patterns'))
|
||||||
exclude_file = _write_pattern_file(_expand_directories(location_config.get('exclude_patterns')))
|
exclude_file = _write_pattern_file(_expand_directories(location_config.get('exclude_patterns')))
|
||||||
|
checkpoint_interval = storage_config.get('checkpoint_interval', None)
|
||||||
compression = storage_config.get('compression', None)
|
compression = storage_config.get('compression', None)
|
||||||
remote_rate_limit = storage_config.get('remote_rate_limit', None)
|
remote_rate_limit = storage_config.get('remote_rate_limit', None)
|
||||||
umask = storage_config.get('umask', None)
|
umask = storage_config.get('umask', None)
|
||||||
|
@ -140,6 +141,7 @@ def create_archive(
|
||||||
location_config,
|
location_config,
|
||||||
exclude_file.name if exclude_file else None,
|
exclude_file.name if exclude_file else None,
|
||||||
)
|
)
|
||||||
|
+ (('--checkpoint-interval', str(checkpoint_interval)) if checkpoint_interval else ())
|
||||||
+ (('--compression', compression) if compression else ())
|
+ (('--compression', compression) if compression else ())
|
||||||
+ (('--remote-ratelimit', str(remote_rate_limit)) if remote_rate_limit else ())
|
+ (('--remote-ratelimit', str(remote_rate_limit)) if remote_rate_limit else ())
|
||||||
+ (('--one-file-system',) if location_config.get('one_file_system') else ())
|
+ (('--one-file-system',) if location_config.get('one_file_system') else ())
|
||||||
|
|
|
@ -124,6 +124,13 @@ map:
|
||||||
punctuation, so it parses correctly. And backslash any quote or backslash
|
punctuation, so it parses correctly. And backslash any quote or backslash
|
||||||
literals as well.
|
literals as well.
|
||||||
example: "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~"
|
example: "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~"
|
||||||
|
checkpoint_interval:
|
||||||
|
type: int
|
||||||
|
desc: |
|
||||||
|
Number of seconds between each checkpoint during a long-running backup. See
|
||||||
|
https://borgbackup.readthedocs.io/en/stable/faq.html#if-a-backup-stops-mid-way-does-the-already-backed-up-data-stay-there
|
||||||
|
for details. Defaults to checkpoints every 1800 seconds (30 minutes).
|
||||||
|
example: 1800
|
||||||
compression:
|
compression:
|
||||||
type: scalar
|
type: scalar
|
||||||
desc: |
|
desc: |
|
||||||
|
|
|
@ -374,6 +374,26 @@ def test_create_archive_with_dry_run_and_verbosity_lots_calls_borg_without_stats
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_create_archive_with_checkpoint_interval_calls_borg_with_checkpoint_interval_parameters():
|
||||||
|
flexmock(module).should_receive('_expand_directories').and_return(('foo', 'bar')).and_return(())
|
||||||
|
flexmock(module).should_receive('_write_pattern_file').and_return(None)
|
||||||
|
flexmock(module).should_receive('_make_pattern_flags').and_return(())
|
||||||
|
flexmock(module).should_receive('_make_exclude_flags').and_return(())
|
||||||
|
insert_subprocess_mock(CREATE_COMMAND + ('--checkpoint-interval', '600'))
|
||||||
|
|
||||||
|
module.create_archive(
|
||||||
|
verbosity=None,
|
||||||
|
dry_run=False,
|
||||||
|
repository='repo',
|
||||||
|
location_config={
|
||||||
|
'source_directories': ['foo', 'bar'],
|
||||||
|
'repositories': ['repo'],
|
||||||
|
'exclude_patterns': None,
|
||||||
|
},
|
||||||
|
storage_config={'checkpoint_interval': 600},
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_create_archive_with_compression_calls_borg_with_compression_parameters():
|
def test_create_archive_with_compression_calls_borg_with_compression_parameters():
|
||||||
flexmock(module).should_receive('_expand_directories').and_return(('foo', 'bar')).and_return(())
|
flexmock(module).should_receive('_expand_directories').and_return(('foo', 'bar')).and_return(())
|
||||||
flexmock(module).should_receive('_write_pattern_file').and_return(None)
|
flexmock(module).should_receive('_write_pattern_file').and_return(None)
|
||||||
|
|
Loading…
Reference in a new issue