Alternative duplicity installation (build from pip)
This commit is contained in:
parent
c30a18a30b
commit
913a4a4585
2 changed files with 16 additions and 27 deletions
|
@ -71,7 +71,7 @@ def backup_status(env):
|
|||
}
|
||||
|
||||
code, collection_status = shell('check_output', [
|
||||
"/usr/bin/duplicity",
|
||||
"/usr/local/bin/duplicity",
|
||||
"collection-status",
|
||||
"--archive-dir", backup_cache_dir,
|
||||
"--gpg-options", "--cipher-algo=AES256",
|
||||
|
@ -354,7 +354,7 @@ def perform_backup(full_backup, user_initiated=False):
|
|||
# after the first backup. See #396.
|
||||
try:
|
||||
shell('check_call', [
|
||||
"/usr/bin/duplicity",
|
||||
"/usr/local/bin/duplicity",
|
||||
"full" if full_backup else "incr",
|
||||
"--verbosity", "warning", "--no-print-statistics",
|
||||
"--archive-dir", backup_cache_dir,
|
||||
|
@ -376,7 +376,7 @@ def perform_backup(full_backup, user_initiated=False):
|
|||
# Remove old backups. This deletes all backup data no longer needed
|
||||
# from more than 3 days ago.
|
||||
shell('check_call', [
|
||||
"/usr/bin/duplicity",
|
||||
"/usr/local/bin/duplicity",
|
||||
"remove-older-than",
|
||||
"%dD" % config["min_age_in_days"],
|
||||
"--verbosity", "error",
|
||||
|
@ -392,7 +392,7 @@ def perform_backup(full_backup, user_initiated=False):
|
|||
# That may be unlikely here but we may as well ensure we tidy up if
|
||||
# that does happen - it might just have been a poorly timed reboot.
|
||||
shell('check_call', [
|
||||
"/usr/bin/duplicity",
|
||||
"/usr/local/bin/duplicity",
|
||||
"cleanup",
|
||||
"--verbosity", "error",
|
||||
"--archive-dir", backup_cache_dir,
|
||||
|
@ -436,7 +436,7 @@ def run_duplicity_verification():
|
|||
backup_cache_dir = os.path.join(backup_root, 'cache')
|
||||
|
||||
shell('check_call', [
|
||||
"/usr/bin/duplicity",
|
||||
"/usr/local/bin/duplicity",
|
||||
"--verbosity",
|
||||
"info",
|
||||
"verify",
|
||||
|
@ -452,7 +452,7 @@ def run_duplicity_restore(args):
|
|||
config = get_backup_config(env)
|
||||
backup_cache_dir = os.path.join(env["STORAGE_ROOT"], 'backup', 'cache')
|
||||
shell('check_call', [
|
||||
"/usr/bin/duplicity",
|
||||
"/usr/local/bin/duplicity",
|
||||
"restore",
|
||||
"--archive-dir", backup_cache_dir,
|
||||
get_duplicity_target_url(config),
|
||||
|
|
|
@ -7,19 +7,24 @@ echo "Installing Mail-in-a-Box system management daemon..."
|
|||
|
||||
# DEPENDENCIES
|
||||
|
||||
# duplicity is used to make backups of user data.
|
||||
#
|
||||
# virtualenv is used to isolate the Python 3 packages we
|
||||
# install via pip from the system-installed packages.
|
||||
#
|
||||
# certbot installs EFF's certbot which we use to
|
||||
# provision free TLS certificates.
|
||||
apt_install duplicity python3-pip python3-gpg virtualenv certbot rsync
|
||||
#
|
||||
# gcc and build tools are required to install the latest version
|
||||
# of duplicity
|
||||
apt_install python3-pip python3-gpg virtualenv certbot rsync librsync2 python3-fasteners python3-future python3-lockfile \
|
||||
gcc python3-dev librsync-dev
|
||||
|
||||
apt_get_quiet remove --autoremove --purge duplicity || /bin/true
|
||||
|
||||
# Duplicity does the actual backups.
|
||||
# b2sdk is used for backblaze backups.
|
||||
# boto3 is used for amazon aws backups.
|
||||
# Both are installed outside the pipenv, so they can be used by duplicity
|
||||
hide_output pip3 install --upgrade boto3
|
||||
hide_output pip3 install --upgrade b2sdk boto3 duplicity
|
||||
|
||||
# Create a virtualenv for the installation of Python 3 packages
|
||||
# used by the management daemon.
|
||||
|
@ -49,23 +54,7 @@ hide_output $venv/bin/pip install --upgrade \
|
|||
rtyaml "email_validator>=1.0.0" "exclusiveprocess" \
|
||||
flask dnspython python-dateutil expiringdict gunicorn \
|
||||
qrcode[pil] pyotp \
|
||||
"idna>=2.0.0" "cryptography==2.2.2" boto psutil postfix-mta-sts-resolver
|
||||
|
||||
# Install backblaze B2 libraries.
|
||||
# Depending on the OS, Duplicity may require different dependencies.
|
||||
case $(get_os_code) in
|
||||
|
||||
$OS_UBUNTU_2004 | $OS_DEBIAN_11)
|
||||
hide_output pip3 install --upgrade "b2sdk==1.7.0"
|
||||
hide_output $venv/bin/pip install --upgrade "b2sdk==1.7.0"
|
||||
;;
|
||||
|
||||
$OS_UBUNTU_2204)
|
||||
hide_output pip3 install --upgrade b2sdk
|
||||
hide_output $venv/bin/pip install --upgrade b2sdk
|
||||
;;
|
||||
|
||||
esac
|
||||
"idna>=2.0.0" "cryptography==2.2.2" boto psutil postfix-mta-sts-resolver b2sdk
|
||||
|
||||
# Make the venv use the packaged gpgme bindings (the ones pip provides are severely out-of-date)
|
||||
if [ ! -d $venv/lib/python$(python_version)/site-packages/gpg/ ]; then
|
||||
|
|
Loading…
Reference in a new issue