Browse code

--delete-after-fetch option added

Nic Jansma authored on 2012/12/06 10:20:11
Showing 2 changed files
... ...
@@ -53,6 +53,7 @@ class Config(object):
53 53
         #'acl',     # Full ACL (not yet supported)
54 54
     ]
55 55
     delete_removed = False
56
+    delete_after_fetch = False
56 57
     _doc['delete_removed'] = "[sync] Remove remote S3 objects when local file has been deleted"
57 58
     gpg_passphrase = ""
58 59
     gpg_command = ""
... ...
@@ -448,6 +448,9 @@ def cmd_object_get(args):
448 448
             speed_fmt = formatSize(response["speed"], human_readable = True, floating_point = True)
449 449
             output(u"File %s saved as '%s' (%d bytes in %0.1f seconds, %0.2f %sB/s)" %
450 450
                 (uri, destination, response["size"], response["elapsed"], speed_fmt[0], speed_fmt[1]))
451
+        if Config().delete_after_fetch:
452
+            s3.object_delete(uri)
453
+            output(u"File %s removed after fetch" % (uri))
451 454
 
452 455
 def cmd_object_del(args):
453 456
     for uri_str in args:
... ...
@@ -791,6 +794,9 @@ def cmd_sync_remote2local(args):
791 791
             output(u"File '%s' stored as '%s' (%d bytes in %0.1f seconds, %0.2f %sB/s) %s" %
792 792
                 (uri, unicodise(dst_file), response["size"], response["elapsed"], speed_fmt[0], speed_fmt[1],
793 793
                 seq_label))
794
+        if Config().delete_after_fetch:
795
+            s3.object_delete(uri)
796
+            output(u"File '%s' removed after syncing" % (uri))
794 797
         total_size += response["size"]
795 798
 
796 799
     total_elapsed = time.time() - timestamp_start
... ...
@@ -1499,6 +1505,7 @@ def main():
1499 1499
 
1500 1500
     optparser.add_option(      "--delete-removed", dest="delete_removed", action="store_true", help="Delete remote objects with no corresponding local file [sync]")
1501 1501
     optparser.add_option(      "--no-delete-removed", dest="delete_removed", action="store_false", help="Don't delete remote objects.")
1502
+    optparser.add_option(      "--delete-after-fetch", dest="delete_after_fetch", action="store_true", help="Delete remote objects after fetching to local file (only for [get] and [sync] commands).")
1502 1503
     optparser.add_option("-p", "--preserve", dest="preserve_attrs", action="store_true", help="Preserve filesystem attributes (mode, ownership, timestamps). Default for [sync] command.")
1503 1504
     optparser.add_option(      "--no-preserve", dest="preserve_attrs", action="store_false", help="Don't store FS attributes")
1504 1505
     optparser.add_option(      "--exclude", dest="exclude", action="append", metavar="GLOB", help="Filenames and paths matching GLOB will be excluded from sync")