Skip to content

Commit c605cc6

Browse files
committed
add output result
1 parent 7d28a29 commit c605cc6

File tree

6 files changed

+70
-2
lines changed

6 files changed

+70
-2
lines changed

conf/config.ini

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ daemonModeInterVal=60
4949
# 但每一个任务都是 先判断时间是否在迁移窗口,然后开始迁移,有可能判断的时候 在时间窗口,但是迁移过程中有可能跨过时间窗口, 即存在少量的迁移在时间窗口外执行。
5050
executeTimeWindow=00:00,24:00
5151

52+
# 迁移成功的结果,按日期归档此目录,为空即不输出。格式每一行为:绝对路径\t文件大小\t最后修改时间,该目录需要存在。
53+
outputFinishedFileFolder=./result
5254

5355
# 从本地迁移到COS配置分节
5456
[migrateLocal]
-3.44 KB
Binary file not shown.

src/main/java/com/qcloud/cos_migrate_tool/config/CommonConfig.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ public class CommonConfig {
3535
private String encryptionType = "";
3636
private String batchTaskPath = "";
3737
private boolean realTimeCompare = false;
38+
private String outputFinishedFilePath = "";
3839

3940
public void setRealTimeCompare(String realTimeCompare) throws IllegalArgumentException {
4041
if (realTimeCompare.equalsIgnoreCase("on")) {
@@ -364,4 +365,24 @@ public String getProxyHost() {
364365
public int getProxyPort() {
365366
return this.cosProxyPort;
366367
}
368+
369+
370+
public void setOutputFinishedFilePath(String path) throws IllegalArgumentException {
371+
path = path.trim();
372+
File tempFolder = new File(path);
373+
if (!tempFolder.exists()) {
374+
throw new IllegalArgumentException("tempFolderPath " + path + " not exist!");
375+
}
376+
377+
if (path.endsWith("/") || path.endsWith("\\")) {
378+
this.outputFinishedFilePath = path;
379+
} else {
380+
this.outputFinishedFilePath = path + "/";
381+
}
382+
this.outputFinishedFilePath = SystemUtils.formatLocalPath(this.outputFinishedFilePath);
383+
}
384+
385+
public String getOutputFinishedFilePath() {
386+
return this.outputFinishedFilePath;
387+
}
367388
}

src/main/java/com/qcloud/cos_migrate_tool/config/ConfigParser.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ public class ConfigParser {
5151
private static final String COMMON_THREAD_NUM = "threadNum";
5252
private static final String COMMON_BATCH_TASK_PATH = "batchTaskPath";
5353
private static final String COMMON_REAL_TIME_COMPARE = "realTimeCompare";
54+
private static final String COMMON_OUTPUT_FINISHED_FILE = "outputFinishedFileFolder";
5455

5556
private static final String LOCAL_SECTION_NAME = "migrateLocal";
5657
private static final String LOCAL_LOCALPATH = "localPath";
@@ -537,6 +538,12 @@ private boolean initCommonConfig(Preferences prefs, CommonConfig commonConfig) {
537538
if (taskExecutorNumberStr != null && !taskExecutorNumberStr.isEmpty()) {
538539
commonConfig.setTaskExecutorNumberStr(taskExecutorNumberStr);
539540
}
541+
542+
543+
String finishedFileFolder = getConfigValue(prefs, COMMON_SECTION_NAME, COMMON_OUTPUT_FINISHED_FILE);
544+
if (finishedFileFolder!=null && !finishedFileFolder.isEmpty()) {
545+
commonConfig.setOutputFinishedFilePath(finishedFileFolder);
546+
}
540547

541548

542549
} catch (Exception e) {

src/main/java/com/qcloud/cos_migrate_tool/task/MigrateLocalTask.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,22 @@
11
package com.qcloud.cos_migrate_tool.task;
22

3+
import java.io.BufferedOutputStream;
34
import java.io.File;
5+
import java.io.FileNotFoundException;
6+
import java.io.FileOutputStream;
7+
import java.io.IOException;
8+
import java.text.SimpleDateFormat;
9+
import java.util.Date;
410
import java.util.concurrent.Semaphore;
511

612
import org.slf4j.Logger;
713
import org.slf4j.LoggerFactory;
814

915
import com.qcloud.cos.model.StorageClass;
1016
import com.qcloud.cos.transfer.TransferManager;
17+
import com.qcloud.cos_migrate_tool.config.ConfigParser;
1118
import com.qcloud.cos_migrate_tool.config.CopyFromLocalConfig;
19+
import com.qcloud.cos_migrate_tool.config.MigrateType;
1220
import com.qcloud.cos_migrate_tool.meta.TaskStatics;
1321
import com.qcloud.cos_migrate_tool.record.MigrateLocalRecordElement;
1422
import com.qcloud.cos_migrate_tool.record.RecordDb;
@@ -82,6 +90,27 @@ public void doTask() {
8290
} else {
8391
TaskStatics.instance.addUpdateCnt();
8492
}
93+
94+
if(!config.getOutputFinishedFilePath().isEmpty()) {
95+
//TODO
96+
SimpleDateFormat dateFormat= new SimpleDateFormat("YYYY-MM-dd");//设置当前时间的格式,为年-月-日
97+
String file_name = dateFormat.format(new Date()) + ".out";
98+
String resultFile = config.getOutputFinishedFilePath() + file_name;
99+
try {
100+
BufferedOutputStream bos =
101+
new BufferedOutputStream(new FileOutputStream(resultFile, true));
102+
String recordMsg =
103+
String.format("%s\t%d\t%d\n", localFile.getAbsolutePath(), localFile.length(), localFile.lastModified());
104+
bos.write(recordMsg.getBytes());
105+
bos.close();
106+
} catch (FileNotFoundException e) {
107+
log.error("write result fail,result \n" + e.toString());
108+
} catch (IOException e) {
109+
log.error("write result fail,result \n" + e.toString());
110+
}
111+
}
112+
113+
85114
String printMsg =
86115
String.format("[ok] [requestid: %s], task_info: %s", requestId == null ? "NULL" : requestId, migrateLocalRecordElement.buildKey());
87116
System.out.println(printMsg);

src/main/java/com/qcloud/cos_migrate_tool/task/Task.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
package com.qcloud.cos_migrate_tool.task;
22

3+
import java.io.BufferedOutputStream;
34
import java.io.File;
5+
import java.io.FileNotFoundException;
6+
import java.io.FileOutputStream;
7+
import java.io.IOException;
8+
import java.text.SimpleDateFormat;
9+
import java.util.Date;
410
import java.util.concurrent.Semaphore;
511
import java.util.concurrent.ThreadLocalRandom;
612

@@ -237,11 +243,14 @@ public String uploadFile(String bucketName, String cosPath, File localFile,
237243

238244
while (retryTime < maxRetry) {
239245
try {
246+
String requestId;
240247
if (localFile.length() >= smallFileThreshold) {
241-
return uploadBigFile(putObjectRequest);
248+
requestId = uploadBigFile(putObjectRequest);
242249
} else {
243-
return uploadSmallFile(putObjectRequest);
250+
requestId = uploadSmallFile(putObjectRequest);
244251
}
252+
253+
return requestId;
245254
} catch (Exception e) {
246255
log.warn("upload failed, ready to retry. retryTime:" + retryTime, e);
247256
++retryTime;

0 commit comments

Comments
 (0)