From fb62a9684bb8494a008b9cda58daf446ae2a1676 Mon Sep 17 00:00:00 2001 From: ljf Date: Mon, 17 Oct 2022 01:20:20 +0200 Subject: [PATCH] [fix] Backup remote restore --- src/backup.py | 4 +--- src/repository.py | 5 ++--- src/utils/system.py | 8 ++++++++ 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/backup.py b/src/backup.py index 47522e7e7..ee1fd69b1 100644 --- a/src/backup.py +++ b/src/backup.py @@ -29,7 +29,7 @@ from packaging import version from moulinette import Moulinette, m18n from moulinette.utils.log import getActionLogger -from moulinette.utils.filesystem import read_file, mkdir, write_to_yaml, read_yaml, rm, chown, chmod, write_to_file +from moulinette.utils.filesystem import mkdir, write_to_yaml, read_yaml, rm, chown, chmod, write_to_file from moulinette.utils.process import check_output import yunohost.domain @@ -58,8 +58,6 @@ from yunohost.log import OperationLogger, is_unit_operation from yunohost.repository import BackupRepository, BackupArchive from yunohost.utils.config import ConfigPanel from yunohost.utils.error import YunohostError, YunohostValidationError -from yunohost.utils.packages import ynh_packages_version -from yunohost.utils.filesystem import free_space_in_directory, disk_usage, binary_to_human from yunohost.utils.system import ( free_space_in_directory, get_ynh_package_version, diff --git a/src/repository.py b/src/repository.py index a28ddf5e0..6f50935a6 100644 --- a/src/repository.py +++ b/src/repository.py @@ -42,7 +42,7 @@ from datetime import timedelta, datetime import yunohost.repositories from yunohost.utils.config import ConfigPanel from yunohost.utils.error import YunohostError, YunohostValidationError -from yunohost.utils.filesystem import disk_usage, binary_to_human +from yunohost.utils.system import disk_usage, binary_to_human from yunohost.utils.network import get_ssh_public_key, SHF_BASE_URL logger = getActionLogger('yunohost.repository') @@ -184,8 +184,7 @@ class BackupRepository(ConfigPanel): if self.values.get('method') == 'tar' and self.values['is_remote']: raise YunohostError("repository_tar_only_local") - if 'shf_id' in self.values: - self.values['is_shf'] = bool(self.values['shf_id']) + self.values['is_shf'] = bool(self.values['shf_id']) if 'shf_id' in self.values else False def _parse_pre_answered(self, *args): super()._parse_pre_answered(*args) diff --git a/src/utils/system.py b/src/utils/system.py index 63f7190f8..b04101d62 100644 --- a/src/utils/system.py +++ b/src/utils/system.py @@ -58,6 +58,14 @@ def space_used_by_directory(dirpath, follow_symlinks=True): return stat.f_frsize * stat.f_blocks # FIXME : this doesnt do what the function name suggest this does ... +def disk_usage(path): + # We don't do this in python with os.stat because we don't want + # to follow symlinks + + du_output = check_output(["du", "-sb", path], shell=False) + return int(du_output.split()[0]) + + def human_to_binary(size: str) -> int: symbols = ("K", "M", "G", "T", "P", "E", "Z", "Y")