From 50cf17056799a1d127374c2ebfe6e1bf7d7a1900 Mon Sep 17 00:00:00 2001 From: libertyzhu Date: Thu, 28 Aug 2025 11:10:57 +0800 Subject: [PATCH 1/2] fix disater_recovery_demo --- demo/disaster_recovery_demo.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/demo/disaster_recovery_demo.py b/demo/disaster_recovery_demo.py index 18979b24..50b94fc2 100644 --- a/demo/disaster_recovery_demo.py +++ b/demo/disaster_recovery_demo.py @@ -35,8 +35,7 @@ def _recover_main(src_region, src_secret_id, src_secret_key, src_bucket, prefix, delete_marker_keys.append(version['Key']) if len(delete_marker_keys) == 0: - print('no delete markers found, no data to recover') - return + print('no delete markers found, no data to recover, continue listing') # 从 Version 取最新的版本号 if 'Version' in response: From 9f6d4e70a267ceb57fa203fc782c68425b523d31 Mon Sep 17 00:00:00 2001 From: libertyzhu Date: Fri, 29 Aug 2025 10:45:22 +0800 Subject: [PATCH 2/2] fix disaster_recovery_demo --- demo/disaster_recovery_demo.py | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/demo/disaster_recovery_demo.py b/demo/disaster_recovery_demo.py index 50b94fc2..cf90e400 100644 --- a/demo/disaster_recovery_demo.py +++ b/demo/disaster_recovery_demo.py @@ -1,8 +1,5 @@ # -*- coding=utf-8 -# -# ref to @shezhangjun -# https://github.com/shezhangjun/TencentCOS/blob/master/Python_SDK/COS_Disaster_Recovery/DisasterRecovery.py -# + from qcloud_cos import CosConfig from qcloud_cos import CosS3Client import sys @@ -12,10 +9,9 @@ # logging.basicConfig(level=logging.INFO, stream=sys.stdout) -def _recover_main(src_region, src_secret_id, src_secret_key, src_bucket, prefix, - dst_region, dst_secret_id, dst_secret_key, dst_bucket): +def _recover_main(src_region, src_secret_id, src_secret_key, src_bucket, prefix): + src_client = CosS3Client(CosConfig(Region=src_region, SecretId=src_secret_id, SecretKey=src_secret_key)) - dst_client = CosS3Client(CosConfig(Region=dst_region, SecretId=dst_secret_id, SecretKey=dst_secret_key)) key_marker = '' versionId_marker = '' @@ -45,8 +41,8 @@ def _recover_main(src_region, src_secret_id, src_secret_key, src_bucket, prefix, if key in delete_marker_keys and not key in recovered_keys: print('recover from key:{key}, versionId:{versionId}'.format(key=key, versionId=versionId)) try: - dst_client.copy( - Bucket=dst_bucket, + src_client.copy( + Bucket=src_bucket, Key=key, CopySource={ 'Bucket': src_bucket, @@ -56,8 +52,8 @@ def _recover_main(src_region, src_secret_id, src_secret_key, src_bucket, prefix, } ) recovered_keys.append(key) - print("success recover object: {src_bucket}/{key}({versionId}) => {dst_bucket}/{key}".format( - src_bucket=src_bucket, key=key, versionId=versionId, dst_bucket=dst_bucket)) + print("success recover object: {key}(versionId={versionId}) => {key}".format( + src_bucket=src_bucket, key=key, versionId=versionId)) except Exception as e: print(e) pass @@ -71,8 +67,7 @@ def _recover_main(src_region, src_secret_id, src_secret_key, src_bucket, prefix, if __name__ == '__main__': # 使用场景: - # 根据源桶src_bucket的删除标记从历史版本里把文件恢复到dst_bucket - # src_bucket和dst_bucket可以一致, 即原地恢复 + # 根据源桶src_bucket的删除标记从历史版本里把文件恢复出来 # 源桶信息 src_region = 'ap-guangzhou' # 源地域 @@ -80,13 +75,6 @@ def _recover_main(src_region, src_secret_id, src_secret_key, src_bucket, prefix, src_secret_key = '' # 源桶SecretKey src_bucket = 'bucket-1200000000' # 源桶名 - # 目标桶信息 - dst_region = 'ap-guangzhou' # 目标桶地域 - dst_secret_id = '' # 目标桶SecretID - dst_secret_key = '' # 目标桶SecretKey - dst_bucket = 'bucket-1250000000' # 目标桶名 - prefix = '' # 设置要恢复的对象前缀 - _recover_main(src_region, src_secret_id, src_secret_key, src_bucket, prefix, - dst_region, dst_secret_id, dst_secret_key, dst_bucket) \ No newline at end of file + _recover_main(src_region, src_secret_id, src_secret_key, src_bucket, prefix) \ No newline at end of file