add local file modified delay time to fix issue #112

This commit is contained in:
xiaoyaofenfen 2022-09-27 20:47:45 +08:00
parent fe370ca953
commit f3b1b84439
3 changed files with 22 additions and 10 deletions

View File

@ -206,7 +206,7 @@ priority - 优先级,只对双向同步备份模式有效。选项支持三种
task.Priority = syncOpt
}
RunSync(task, dp, up, downloadBlockSize, uploadBlockSize, syncOpt)
RunSync(task, dp, up, downloadBlockSize, uploadBlockSize, syncOpt, c.Int("ldt"))
return nil
},
Flags: []cli.Flag{
@ -253,6 +253,11 @@ priority - 优先级,只对双向同步备份模式有效。选项支持三种
Usage: "是否显示文件备份过程日志true-显示false-不显示",
Value: "false",
},
cli.IntFlag{
Name: "ldt",
Usage: "local delay time本地文件修改检测延迟间隔单位秒。如果本地文件会被频繁修改例如录制视频文件配置好该时间可以避免上传未录制好的文件",
Value: 3,
},
},
},
},
@ -260,7 +265,7 @@ priority - 优先级,只对双向同步备份模式有效。选项支持三种
}
func RunSync(defaultTask *syncdrive.SyncTask, fileDownloadParallel, fileUploadParallel int, downloadBlockSize, uploadBlockSize int64,
flag syncdrive.SyncPriorityOption) {
flag syncdrive.SyncPriorityOption, localDelayTime int) {
useInternalUrl := config.Config.TransferUrlType == 2
maxDownloadRate := config.Config.MaxDownloadRate
maxUploadRate := config.Config.MaxUploadRate
@ -298,14 +303,15 @@ func RunSync(defaultTask *syncdrive.SyncTask, fileDownloadParallel, fileUploadPa
typeUrlStr = "阿里ECS内部链接"
}
option := syncdrive.SyncOption{
FileDownloadParallel: fileDownloadParallel,
FileUploadParallel: fileUploadParallel,
FileDownloadBlockSize: downloadBlockSize,
FileUploadBlockSize: uploadBlockSize,
UseInternalUrl: useInternalUrl,
MaxDownloadRate: maxDownloadRate,
MaxUploadRate: maxUploadRate,
SyncPriority: flag,
FileDownloadParallel: fileDownloadParallel,
FileUploadParallel: fileUploadParallel,
FileDownloadBlockSize: downloadBlockSize,
FileUploadBlockSize: uploadBlockSize,
UseInternalUrl: useInternalUrl,
MaxDownloadRate: maxDownloadRate,
MaxUploadRate: maxUploadRate,
SyncPriority: flag,
LocalFileModifiedCheckIntervalSec: localDelayTime,
}
syncMgr := syncdrive.NewSyncTaskManager(activeUser, activeUser.DriveList.GetFileDriveId(), panClient, syncFolderRootPath, option)
syncConfigFile := syncMgr.ConfigFilePath()

View File

@ -380,6 +380,9 @@ func (f *FileActionTaskManager) doFileDiffRoutine(panFiles PanFileList, localFil
if f.task.Mode == UploadOnly || f.task.Mode == SyncTwoWay {
// check local file modified or not
if file.IsFile() {
if f.syncOption.LocalFileModifiedCheckIntervalSec > 0 {
time.Sleep(time.Duration(f.syncOption.LocalFileModifiedCheckIntervalSec) * time.Second)
}
if fi, fe := os.Stat(file.Path); fe == nil {
if fi.ModTime().Unix() > file.UpdateTimeUnix() {
logger.Verboseln("本地文件已被修改,等下一轮扫描最新的再上传: ", file.Path)

View File

@ -26,6 +26,9 @@ type (
// 优先级选项
SyncPriority SyncPriorityOption
// 本地文件修改检测间隔
LocalFileModifiedCheckIntervalSec int
}
// SyncTaskManager 同步任务管理器