|
@@ -334,12 +334,54 @@ public class S3FileService extends AbstractFYunFileService {
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void restoreFolder(String bucket, String folderName, Integer priority) {
|
|
public void restoreFolder(String bucket, String folderName, Integer priority) {
|
|
-
|
|
|
|
|
|
+ List<String> objectList = this.listRemoteFiles(bucket, folderName);
|
|
|
|
+ if(CollUtil.isEmpty(objectList)){
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ objectList.parallelStream().forEach(objectName -> {
|
|
|
|
+ this.restoreFile(bucket, objectName, priority);
|
|
|
|
+ });
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void restoreFile(String bucket, String objectName, Integer priority){
|
|
public void restoreFile(String bucket, String objectName, Integer priority){
|
|
-
|
|
|
|
|
|
+// ObjectMetadata objectMetadata = ossClient.getObjectMetadata(bucket, objectName);
|
|
|
|
+//
|
|
|
|
+// // 校验Object是否为归档类型Object。
|
|
|
|
+// StorageClass storageClass = objectMetadata.getObjectStorageClass();
|
|
|
|
+// if (storageClass == StorageClass.ColdArchive) {
|
|
|
|
+// // 设置解冻冷归档Object的优先级。
|
|
|
|
+// // RestoreTier.RESTORE_TIER_EXPEDITED 表示1小时内完成解冻。
|
|
|
|
+// // RestoreTier.RESTORE_TIER_STANDARD 表示2~5小时内完成解冻。
|
|
|
|
+// // RestoreTier.RESTORE_TIER_BULK 表示5~12小时内完成解冻。
|
|
|
|
+// RestoreTier restoreTier = null;
|
|
|
|
+// switch (priority){
|
|
|
|
+// case 1 :
|
|
|
|
+// restoreTier = RestoreTier.RESTORE_TIER_EXPEDITED;
|
|
|
|
+// break;
|
|
|
|
+// case 2 :
|
|
|
|
+// restoreTier = RestoreTier.RESTORE_TIER_STANDARD;
|
|
|
|
+// break;
|
|
|
|
+// default:
|
|
|
|
+// restoreTier = RestoreTier.RESTORE_TIER_BULK;
|
|
|
|
+// }
|
|
|
|
+// RestoreJobParameters jobParameters = new RestoreJobParameters(restoreTier);
|
|
|
|
+// // 配置解冻参数,以设置5小时内解冻完成,解冻状态保持2天为例。
|
|
|
|
+// // 第一个参数表示保持解冻状态的天数,默认是1天,此参数适用于解冻Archive(归档)与ColdArchive(冷归档)类型Object。
|
|
|
|
+// // 第二个参数jobParameters表示解冻优先级,只适用于解冻ColdArchive类型Object。
|
|
|
|
+// RestoreConfiguration configuration = new RestoreConfiguration(1, jobParameters);
|
|
|
|
+// //开始解冻
|
|
|
|
+// ossClient.restoreObject(bucket, objectName, configuration);
|
|
|
|
+//// // 等待解冻完成。
|
|
|
|
+//// do {
|
|
|
|
+//// try {
|
|
|
|
+//// Thread.sleep(1000);
|
|
|
|
+//// } catch (InterruptedException e) {
|
|
|
|
+//// e.printStackTrace();
|
|
|
|
+//// }
|
|
|
|
+//// objectMetadata = ossClient.getObjectMetadata(bucket, objectName);
|
|
|
|
+//// } while (!objectMetadata.isRestoreCompleted());
|
|
|
|
+// }
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -356,4 +398,28 @@ public class S3FileService extends AbstractFYunFileService {
|
|
public Integer getRestoreFolderProcess(String bucket, String url) {
|
|
public Integer getRestoreFolderProcess(String bucket, String url) {
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public Long getSpace(String bucket, String key) {
|
|
|
|
+ List<String> keyList = new ArrayList<>();
|
|
|
|
+ Long total = 0L;
|
|
|
|
+ boolean flag = true;
|
|
|
|
+ String nextMaker = null;
|
|
|
|
+ ListObjectsRequest listObjectsRequest = new ListObjectsRequest();
|
|
|
|
+ listObjectsRequest.setBucketName(bucket);
|
|
|
|
+ listObjectsRequest.setPrefix(key);
|
|
|
|
+ listObjectsRequest.setMaxKeys(200);
|
|
|
|
+
|
|
|
|
+ do {
|
|
|
|
+ listObjectsRequest.setMarker(nextMaker);
|
|
|
|
+ ObjectListing objectListing = s3.listObjects(listObjectsRequest);
|
|
|
|
+ List<S3ObjectSummary> objectSummaries = objectListing.getObjectSummaries();
|
|
|
|
+ Long space = objectSummaries.stream().mapToLong(S3ObjectSummary::getSize).sum();
|
|
|
|
+ total += space;
|
|
|
|
+ nextMaker = objectListing.getNextMarker();
|
|
|
|
+ flag = objectListing.isTruncated();
|
|
|
|
+ } while (flag);
|
|
|
|
+
|
|
|
|
+ return total;
|
|
|
|
+ }
|
|
}
|
|
}
|