|
@@ -9,6 +9,10 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
|
import java.io.Serializable;
|
|
|
import java.util.List;
|
|
|
+import java.util.concurrent.CountDownLatch;
|
|
|
+import java.util.concurrent.ExecutorService;
|
|
|
+import java.util.concurrent.Executors;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
/**
|
|
|
* @author dyp
|
|
@@ -39,4 +43,34 @@ public class OSSService implements Serializable {
|
|
|
ossClient.shutdown();
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ public void transToDeepColdArchive2(String bucketName, List<String> objectNames) {
|
|
|
+ OSS ossClient = new OSSClientBuilder().build(endpoint, accessId, accessKey);
|
|
|
+ CountDownLatch cdl = new CountDownLatch(objectNames.size());
|
|
|
+ ExecutorService es = Executors.newFixedThreadPool(4);
|
|
|
+ for (String objectName : objectNames) {
|
|
|
+ es.submit(() -> {
|
|
|
+ try {
|
|
|
+ if (!objectName.startsWith("http")) {
|
|
|
+ CopyObjectRequest request = new CopyObjectRequest(bucketName, objectName, bucketName, objectName);
|
|
|
+ ObjectMetadata objectMetadata = new ObjectMetadata();
|
|
|
+ objectMetadata.setHeader("x-oss-storage-class", "DeepColdArchive");
|
|
|
+ request.setNewObjectMetadata(objectMetadata);
|
|
|
+ ossClient.copyObject(request);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("transToDeepColdArchive error {} {}", objectName, e.getMessage(), e);
|
|
|
+ }
|
|
|
+ cdl.countDown();
|
|
|
+ });
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ cdl.await(1, TimeUnit.HOURS);
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ log.error("transToDeepColdArchive error", e);
|
|
|
+ }
|
|
|
+ if (ossClient != null) {
|
|
|
+ ossClient.shutdown();
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|