]> git.siccegge.de Git - tools.git/blobdiff - backup-zfs
rebuild actual zonefiles
[tools.git] / backup-zfs
index b530bc9fb8e636aa1ccb0a70bf0fc0f5a0fd31de..4ebb78bc9bd292b4d23e89c763f8c9fbd33ad9d8 100755 (executable)
@@ -10,7 +10,7 @@ SFTP_DIR  = '/srv/backup/mitoraj'
 SFTP_USER = 'root'
 ZPOOL     = 'base'
 GPGUSER   = '9FED5C6CE206B70A585770CA965522B9D49AE731'
-BUFFER    = 1024 * 1024
+BUFFER    = 4 * 1024 * 1024
 #
 ####################
 
@@ -58,8 +58,8 @@ def sftp_connect():
 
     agent = paramiko.Agent()
     transport = paramiko.Transport((SFTP_HOST, 22),
-                                   default_window_size=1024*BUFFER,
-                                   default_max_packet_size=64*BUFFER)
+                                   default_window_size=128*BUFFER,
+                                   default_max_packet_size=BUFFER)
     #  transport.max_packet_size = BUFFER
     #  transport.window_size = BUFFER * 64
     transport.connect(hostkey=hostkey)
@@ -93,7 +93,7 @@ def sftp_send(dataset, reference=None):
     zfs = subprocess.Popen(zfscommand, stdout=subprocess.PIPE, bufsize=2*BUFFER)
     print(zfscommand)
 
-    gpgcommand = [ 'gpg', '--batch', '--compress-algo', 'ZLIB',
+    gpgcommand = [ 'gpg2', '--batch', '--compress-algo', 'ZLIB',
                    '--sign', '--encrypt', '--recipient', GPGUSER ]
     gpg = subprocess.Popen(gpgcommand, bufsize=2*BUFFER,
                                        stdout=subprocess.PIPE,
@@ -107,8 +107,10 @@ def sftp_send(dataset, reference=None):
         print_colored("Error:\n\n" + gpg.stderr, 'red')
         return
 
+    lastflush = 0
     with open('/tmp/SHA256SUM', 'a') as digestfile:
         with sftp.open(filename, 'xw', BUFFER) as remotefile:
+            remotefile.set_pipelined()
             digest = hashlib.sha256()
             sys.stdout.write(term['purple'])
             done = 0
@@ -125,6 +127,11 @@ def sftp_send(dataset, reference=None):
                     sys.stdout.write("     \r%s %.3f GB      (%.3f MB/s)" % (term['green'], (1.0 * done) / (1024 ** 3), (done / (1024 ** 2 *(time.time() - startt)))))
                     sys.stdout.flush()
                 remotefile.write(junk)
+
+                if done - lastflush > 128 * 1024**2:
+                    remotefile.flush()
+                    lastflush = done
+
                 digest.update(junk)
                 junk = gpg.stdout.read(BUFFER)