From e7919489fb917c63804c311f57a8780e6383b64d Mon Sep 17 00:00:00 2001
From: Edwin Eefting <edwin@datux.nl>
Date: Sun, 27 Oct 2019 13:00:38 +0100
Subject: [PATCH] wip

---
 zfs_autobackup | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/zfs_autobackup b/zfs_autobackup
index d54b5ff..e6d8515 100755
--- a/zfs_autobackup
+++ b/zfs_autobackup
@@ -778,7 +778,6 @@ class ZfsDataset():
         if show_progress:
             cmd.append("-v")
             cmd.append("-P")
-            self.zfs_node.reset_progress()
 
 
         #resume a previous send? (dont need more parameters in that case)
@@ -831,8 +830,7 @@ class ZfsDataset():
 
         cmd.append(self.filesystem_name)
 
-
-
+        self.zfs_node.reset_progress()
         self.zfs_node.run(cmd, input=pipe)
 
         #invalidate cache, but we at least know we exist now
@@ -1016,7 +1014,7 @@ class ZfsNode(ExecuteNode):
     def reset_progress(self):
         """reset progress output counters"""
         self._progress_total_bytes=0
-        self._progress_prev_bytes=0
+        self._progress_start_time=time.time()
 
     def _parse_stderr_pipe(self, line, hide_errors):
         """try to parse progress output of a piped zfs recv -Pv """
@@ -1039,11 +1037,15 @@ class ZfsNode(ExecuteNode):
                         self._progress_total_bytes=int(progress_fields[3])
                     else:
                         bytes=int(progress_fields[1])
+                        percentage=0
+                        if self._progress_total_bytes:
+                            percentage=min(100,int(bytes*100/self._progress_total_bytes))
 
-                        percentage=int(bytes*100/self._progress_total_bytes)
+                            speed=int(bytes/(time.time()-self._progress_start_time)/(1024*1024))
 
-                        # print("{}%   \r", end='')
-                        print("  {}%   \r".format(percentage), end='')
+                            # print("{}%   \r", end='')
+                            print(">>> {}% {}MB/s ({}MB)  \r".format(percentage, speed, self._progress_total_bytes/(1024*1024)), end='')
+                            sys.stdout.flush()
 
                 return