Fix command line arguments for duplicity 2.1 (#2301)
This commit is contained in:
commit
a966913963
|
@ -57,10 +57,11 @@ def backup_status(env):
|
||||||
"/usr/bin/duplicity",
|
"/usr/bin/duplicity",
|
||||||
"collection-status",
|
"collection-status",
|
||||||
"--archive-dir", backup_cache_dir,
|
"--archive-dir", backup_cache_dir,
|
||||||
"--gpg-options", "--cipher-algo=AES256",
|
"--gpg-options", "'--cipher-algo=AES256'",
|
||||||
"--log-fd", "1",
|
"--log-fd", "1",
|
||||||
get_duplicity_target_url(config),
|
] + get_duplicity_additional_args(env) + [
|
||||||
] + get_duplicity_additional_args(env),
|
get_duplicity_target_url(config)
|
||||||
|
],
|
||||||
get_duplicity_env_vars(env),
|
get_duplicity_env_vars(env),
|
||||||
trap=True)
|
trap=True)
|
||||||
if code != 0:
|
if code != 0:
|
||||||
|
@ -227,8 +228,8 @@ def get_duplicity_additional_args(env):
|
||||||
port = 22
|
port = 22
|
||||||
|
|
||||||
return [
|
return [
|
||||||
f"--ssh-options= -i /root/.ssh/id_rsa_miab -p {port}",
|
f"--ssh-options='-i /root/.ssh/id_rsa_miab -p {port}'",
|
||||||
f"--rsync-options= -e \"/usr/bin/ssh -oStrictHostKeyChecking=no -oBatchMode=yes -p {port} -i /root/.ssh/id_rsa_miab\"",
|
f"--rsync-options='-e \"/usr/bin/ssh -oStrictHostKeyChecking=no -oBatchMode=yes -p {port} -i /root/.ssh/id_rsa_miab\"'",
|
||||||
]
|
]
|
||||||
elif get_target_type(config) == 's3':
|
elif get_target_type(config) == 's3':
|
||||||
# See note about hostname in get_duplicity_target_url.
|
# See note about hostname in get_duplicity_target_url.
|
||||||
|
@ -321,11 +322,12 @@ def perform_backup(full_backup):
|
||||||
"--archive-dir", backup_cache_dir,
|
"--archive-dir", backup_cache_dir,
|
||||||
"--exclude", backup_root,
|
"--exclude", backup_root,
|
||||||
"--volsize", "250",
|
"--volsize", "250",
|
||||||
"--gpg-options", "--cipher-algo=AES256",
|
"--gpg-options", "'--cipher-algo=AES256'",
|
||||||
|
"--allow-source-mismatch"
|
||||||
|
] + get_duplicity_additional_args(env) + [
|
||||||
env["STORAGE_ROOT"],
|
env["STORAGE_ROOT"],
|
||||||
get_duplicity_target_url(config),
|
get_duplicity_target_url(config),
|
||||||
"--allow-source-mismatch"
|
],
|
||||||
] + get_duplicity_additional_args(env),
|
|
||||||
get_duplicity_env_vars(env))
|
get_duplicity_env_vars(env))
|
||||||
finally:
|
finally:
|
||||||
# Start services again.
|
# Start services again.
|
||||||
|
@ -343,8 +345,9 @@ def perform_backup(full_backup):
|
||||||
"--verbosity", "error",
|
"--verbosity", "error",
|
||||||
"--archive-dir", backup_cache_dir,
|
"--archive-dir", backup_cache_dir,
|
||||||
"--force",
|
"--force",
|
||||||
|
] + get_duplicity_additional_args(env) + [
|
||||||
get_duplicity_target_url(config)
|
get_duplicity_target_url(config)
|
||||||
] + get_duplicity_additional_args(env),
|
],
|
||||||
get_duplicity_env_vars(env))
|
get_duplicity_env_vars(env))
|
||||||
|
|
||||||
# From duplicity's manual:
|
# From duplicity's manual:
|
||||||
|
@ -358,8 +361,9 @@ def perform_backup(full_backup):
|
||||||
"--verbosity", "error",
|
"--verbosity", "error",
|
||||||
"--archive-dir", backup_cache_dir,
|
"--archive-dir", backup_cache_dir,
|
||||||
"--force",
|
"--force",
|
||||||
|
] + get_duplicity_additional_args(env) + [
|
||||||
get_duplicity_target_url(config)
|
get_duplicity_target_url(config)
|
||||||
] + get_duplicity_additional_args(env),
|
],
|
||||||
get_duplicity_env_vars(env))
|
get_duplicity_env_vars(env))
|
||||||
|
|
||||||
# Change ownership of backups to the user-data user, so that the after-bcakup
|
# Change ownership of backups to the user-data user, so that the after-bcakup
|
||||||
|
@ -396,9 +400,10 @@ def run_duplicity_verification():
|
||||||
"--compare-data",
|
"--compare-data",
|
||||||
"--archive-dir", backup_cache_dir,
|
"--archive-dir", backup_cache_dir,
|
||||||
"--exclude", backup_root,
|
"--exclude", backup_root,
|
||||||
|
] + get_duplicity_additional_args(env) + [
|
||||||
get_duplicity_target_url(config),
|
get_duplicity_target_url(config),
|
||||||
env["STORAGE_ROOT"],
|
env["STORAGE_ROOT"],
|
||||||
] + get_duplicity_additional_args(env), get_duplicity_env_vars(env))
|
], get_duplicity_env_vars(env))
|
||||||
|
|
||||||
def run_duplicity_restore(args):
|
def run_duplicity_restore(args):
|
||||||
env = load_environment()
|
env = load_environment()
|
||||||
|
@ -408,10 +413,24 @@ def run_duplicity_restore(args):
|
||||||
"/usr/bin/duplicity",
|
"/usr/bin/duplicity",
|
||||||
"restore",
|
"restore",
|
||||||
"--archive-dir", backup_cache_dir,
|
"--archive-dir", backup_cache_dir,
|
||||||
get_duplicity_target_url(config),
|
] + get_duplicity_additional_args(env) + [
|
||||||
] + get_duplicity_additional_args(env) + args,
|
get_duplicity_target_url(config)
|
||||||
|
] + args,
|
||||||
get_duplicity_env_vars(env))
|
get_duplicity_env_vars(env))
|
||||||
|
|
||||||
|
def print_duplicity_command():
|
||||||
|
import shlex
|
||||||
|
env = load_environment()
|
||||||
|
config = get_backup_config(env)
|
||||||
|
backup_cache_dir = os.path.join(env["STORAGE_ROOT"], 'backup', 'cache')
|
||||||
|
for k, v in get_duplicity_env_vars(env).items():
|
||||||
|
print(f"export {k}={shlex.quote(v)}")
|
||||||
|
print("duplicity", "{command}", shlex.join([
|
||||||
|
"--archive-dir", backup_cache_dir,
|
||||||
|
] + get_duplicity_additional_args(env) + [
|
||||||
|
get_duplicity_target_url(config)
|
||||||
|
]))
|
||||||
|
|
||||||
def list_target_files(config):
|
def list_target_files(config):
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
try:
|
try:
|
||||||
|
@ -618,6 +637,9 @@ if __name__ == "__main__":
|
||||||
# to duplicity. The restore path should be specified.
|
# to duplicity. The restore path should be specified.
|
||||||
run_duplicity_restore(sys.argv[2:])
|
run_duplicity_restore(sys.argv[2:])
|
||||||
|
|
||||||
|
elif sys.argv[-1] == "--duplicity-command":
|
||||||
|
print_duplicity_command()
|
||||||
|
|
||||||
else:
|
else:
|
||||||
# Perform a backup. Add --full to force a full backup rather than
|
# Perform a backup. Add --full to force a full backup rather than
|
||||||
# possibly performing an incremental backup.
|
# possibly performing an incremental backup.
|
||||||
|
|
Loading…
Reference in New Issue