... | ... |
@@ -581,18 +581,18 @@ def cmd_info(args): |
581 | 581 |
else: |
582 | 582 |
raise |
583 | 583 |
|
584 |
-def do_deletes(s3, dst_list): |
|
585 |
- # Delete items in destination that are not in source |
|
586 |
- if cfg.dry_run: |
|
587 |
- for key in dst_list: |
|
588 |
- output(u"delete: %s" % dst_list[key]['object_uri_str']) |
|
589 |
- else: |
|
590 |
- for key in dst_list: |
|
591 |
- uri = S3Uri(dst_list[key]['object_uri_str']) |
|
592 |
- s3.object_delete(uri) |
|
593 |
- output(u"deleted: '%s'" % uri) |
|
594 |
- |
|
595 | 584 |
def cmd_sync_remote2remote(args): |
585 |
+ def _do_deletes(s3, dst_list): |
|
586 |
+ # Delete items in destination that are not in source |
|
587 |
+ if cfg.dry_run: |
|
588 |
+ for key in dst_list: |
|
589 |
+ output(u"delete: %s" % dst_list[key]['object_uri_str']) |
|
590 |
+ else: |
|
591 |
+ for key in dst_list: |
|
592 |
+ uri = S3Uri(dst_list[key]['object_uri_str']) |
|
593 |
+ s3.object_delete(uri) |
|
594 |
+ output(u"deleted: '%s'" % uri) |
|
595 |
+ |
|
596 | 596 |
s3 = S3(Config()) |
597 | 597 |
|
598 | 598 |
# Normalise s3://uri (e.g. assert trailing slash) |
... | ... |
@@ -633,7 +633,7 @@ def cmd_sync_remote2remote(args): |
633 | 633 |
|
634 | 634 |
# Delete items in destination that are not in source |
635 | 635 |
if cfg.delete_removed and not cfg.delete_after: |
636 |
- do_deletes(s3, dst_list) |
|
636 |
+ _do_deletes(s3, dst_list) |
|
637 | 637 |
|
638 | 638 |
# Perform the synchronization of files |
639 | 639 |
timestamp_start = time.time() |
... | ... |
@@ -661,7 +661,7 @@ def cmd_sync_remote2remote(args): |
661 | 661 |
|
662 | 662 |
# Delete items in destination that are not in source |
663 | 663 |
if cfg.delete_removed and cfg.delete_after: |
664 |
- do_deletes(s3, dst_list) |
|
664 |
+ _do_deletes(s3, dst_list) |
|
665 | 665 |
|
666 | 666 |
def cmd_sync_remote2local(args): |
667 | 667 |
def _parse_attrs_header(attrs_header): |
... | ... |
@@ -671,6 +671,11 @@ def cmd_sync_remote2local(args): |
671 | 671 |
attrs[key] = val |
672 | 672 |
return attrs |
673 | 673 |
|
674 |
+ def _do_deletes(local_list): |
|
675 |
+ for key in local_list: |
|
676 |
+ os.unlink(local_list[key]['full_name']) |
|
677 |
+ output(u"deleted: %s" % local_list[key]['full_name_unicode']) |
|
678 |
+ |
|
674 | 679 |
s3 = S3(Config()) |
675 | 680 |
|
676 | 681 |
destination_base = args[-1] |
... | ... |
@@ -717,10 +722,8 @@ def cmd_sync_remote2local(args): |
717 | 717 |
warning(u"Exitting now because of --dry-run") |
718 | 718 |
return |
719 | 719 |
|
720 |
- if cfg.delete_removed: |
|
721 |
- for key in local_list: |
|
722 |
- os.unlink(local_list[key]['full_name']) |
|
723 |
- output(u"deleted: %s" % local_list[key]['full_name_unicode']) |
|
720 |
+ if cfg.delete_removed and not cfg.delete_after: |
|
721 |
+ _do_deletes(local_list) |
|
724 | 722 |
|
725 | 723 |
total_size = 0 |
726 | 724 |
total_elapsed = 0.0 |
... | ... |
@@ -812,6 +815,9 @@ def cmd_sync_remote2local(args): |
812 | 812 |
else: |
813 | 813 |
info(outstr) |
814 | 814 |
|
815 |
+ if cfg.delete_removed and cfg.delete_after: |
|
816 |
+ _do_deletes(local_list) |
|
817 |
+ |
|
815 | 818 |
def cmd_sync_local2remote(args): |
816 | 819 |
def _build_attr_header(src): |
817 | 820 |
import pwd, grp |
... | ... |
@@ -843,6 +849,12 @@ def cmd_sync_local2remote(args): |
843 | 843 |
for k in attrs: result += "%s:%s/" % (k, attrs[k]) |
844 | 844 |
return { 'x-amz-meta-s3cmd-attrs' : result[:-1] } |
845 | 845 |
|
846 |
+ def _do_deletes(s3, remote_list): |
|
847 |
+ for key in remote_list: |
|
848 |
+ uri = S3Uri(remote_list[key]['object_uri_str']) |
|
849 |
+ s3.object_delete(uri) |
|
850 |
+ output(u"deleted: '%s'" % uri) |
|
851 |
+ |
|
846 | 852 |
s3 = S3(cfg) |
847 | 853 |
|
848 | 854 |
if cfg.encrypt: |
... | ... |
@@ -902,11 +914,8 @@ def cmd_sync_local2remote(args): |
902 | 902 |
warning(u"Exitting now because of --dry-run") |
903 | 903 |
return |
904 | 904 |
|
905 |
- if cfg.delete_removed: |
|
906 |
- for key in remote_list: |
|
907 |
- uri = S3Uri(remote_list[key]['object_uri_str']) |
|
908 |
- s3.object_delete(uri) |
|
909 |
- output(u"deleted: '%s'" % uri) |
|
905 |
+ if cfg.delete_removed and not cfg.delete_after: |
|
906 |
+ _do_deletes(s3, remote_list) |
|
910 | 907 |
|
911 | 908 |
uploaded_objects_list = [] |
912 | 909 |
total_size = 0 |
... | ... |
@@ -954,6 +963,9 @@ def cmd_sync_local2remote(args): |
954 | 954 |
else: |
955 | 955 |
info(outstr) |
956 | 956 |
|
957 |
+ if cfg.delete_removed and cfg.delete_after: |
|
958 |
+ _do_deletes(s3, remote_list) |
|
959 |
+ |
|
957 | 960 |
if cfg.invalidate_on_cf: |
958 | 961 |
if len(uploaded_objects_list) == 0: |
959 | 962 |
info("Nothing to invalidate in CloudFront") |