From 4ae9ce0301b0cf100ff36ec17a54a1dbf7a8b83f Mon Sep 17 00:00:00 2001 From: save196 Date: Thu, 28 Mar 2024 16:23:39 +0200 Subject: [PATCH 1/2] Fix upload not working when the agent cannot be deployed When the agent cannot be deployed the `upload` command fails as `remote_block_size` is not set. This commit sets `remote_block_size` to 1 by default. --- penelope.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/penelope.py b/penelope.py index 2aef5a9..cb0028d 100755 --- a/penelope.py +++ b/penelope.py @@ -2489,6 +2489,7 @@ def upload(self, local_items, remote_path=None, randomize_fname=False): if self.OS == 'Unix': # Get remote available space + remote_block_size = 1 if self.agent: response = self.exec(f""" stats = os.statvfs('{destination}') @@ -2498,7 +2499,7 @@ def upload(self, local_items, remote_path=None, randomize_fname=False): remote_available_blocks, remote_block_size = map(int, response.split(';')) remote_space = remote_available_blocks * remote_block_size else: - remote_space = int(self.exec(f"df --block-size=1 {destination}|tail -1|awk '{{print $4}}'", value=True)) + remote_space = int(self.exec(f"df --block-size={remote_block_size} {destination}|tail -1|awk '{{print $4}}'", value=True)) # Calculate local size local_size = 0 From adb2e77c7213c896f8a4d8a40283cbf408ac5b40 Mon Sep 17 00:00:00 2001 From: save196 <32127070+save196@users.noreply.github.com> Date: Thu, 28 Mar 2024 22:54:29 +0200 Subject: [PATCH 2/2] Improve upload file function compatibility The current upload function calculates the available space in the remote system using `df` and by specifying the block size using the `--block-size` flag. That flag exists only in GNU version of `df` but it fails with BusyBox or Toybox version of `df`. The `-k` flag, which sets the block size to 1024 bytes, is preferred as common among different implementations of `df`. --- penelope.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/penelope.py b/penelope.py index cb0028d..14edeca 100755 --- a/penelope.py +++ b/penelope.py @@ -2489,7 +2489,7 @@ def upload(self, local_items, remote_path=None, randomize_fname=False): if self.OS == 'Unix': # Get remote available space - remote_block_size = 1 + remote_block_size = 1024 if self.agent: response = self.exec(f""" stats = os.statvfs('{destination}') @@ -2499,7 +2499,7 @@ def upload(self, local_items, remote_path=None, randomize_fname=False): remote_available_blocks, remote_block_size = map(int, response.split(';')) remote_space = remote_available_blocks * remote_block_size else: - remote_space = int(self.exec(f"df --block-size={remote_block_size} {destination}|tail -1|awk '{{print $4}}'", value=True)) + remote_space = int(self.exec(f"df -k {destination}|tail -1|awk '{{print $4}}'", value=True)) # Calculate local size local_size = 0