@@ -39,7 +39,7 @@ func (u *BackupService) WebsiteBackup(req dto.CommonBackup) error {
3939 fileName := fmt .Sprintf ("%s_%s.tar.gz" , website .Alias , timeNow + common .RandStrAndNum (5 ))
4040
4141 go func () {
42- if err = handleWebsiteBackup (& website , backupDir , fileName , "" , req .Secret , req .TaskID ); err != nil {
42+ if err = handleWebsiteBackup (& website , nil , backupDir , fileName , "" , req .Secret , req .TaskID ); err != nil {
4343 global .LOG .Errorf ("backup website %s failed, err: %v" , website .Alias , err )
4444 return
4545 }
@@ -82,7 +82,7 @@ func handleWebsiteRecover(website *model.Website, recoverFile string, isRollback
8282 isOk := false
8383 if ! isRollback {
8484 rollbackFile := path .Join (global .Dir .TmpDir , fmt .Sprintf ("website/%s_%s.tar.gz" , website .Alias , time .Now ().Format (constant .DateTimeSlimLayout )))
85- if err := handleWebsiteBackup (website , path .Dir (rollbackFile ), path .Base (rollbackFile ), "" , "" , "" ); err != nil {
85+ if err := handleWebsiteBackup (website , recoverTask , path .Dir (rollbackFile ), path .Base (rollbackFile ), "" , "" , taskID ); err != nil {
8686 return fmt .Errorf ("backup website %s for rollback before recover failed, err: %v" , website .Alias , err )
8787 }
8888 defer func () {
@@ -202,12 +202,20 @@ func handleWebsiteRecover(website *model.Website, recoverFile string, isRollback
202202 return recoverTask .Execute ()
203203}
204204
205- func handleWebsiteBackup (website * model.Website , backupDir , fileName , excludes , secret , taskID string ) error {
206- backupTask , err := task .NewTaskWithOps (website .Alias , task .TaskBackup , task .TaskScopeWebsite , taskID , website .ID )
207- if err != nil {
208- return err
205+ func handleWebsiteBackup (website * model.Website , parentTask * task.Task , backupDir , fileName , excludes , secret , taskID string ) error {
206+ var (
207+ err error
208+ backupTask * task.Task
209+ )
210+ backupTask = parentTask
211+ if parentTask == nil {
212+ backupTask , err = task .NewTaskWithOps (website .Alias , task .TaskBackup , task .TaskScopeWebsite , taskID , website .ID )
213+ if err != nil {
214+ return err
215+ }
209216 }
210- backupTask .AddSubTask (task .GetTaskName (website .Alias , task .TaskBackup , task .TaskScopeWebsite ), func (t * task.Task ) error {
217+
218+ backupWebsite := func (t * task.Task ) error {
211219 fileOp := files .NewFileOp ()
212220 tmpDir := fmt .Sprintf ("%s/%s" , backupDir , strings .ReplaceAll (fileName , ".tar.gz" , "" ))
213221 if ! fileOp .Stat (tmpDir ) {
@@ -273,7 +281,11 @@ func handleWebsiteBackup(website *model.Website, backupDir, fileName, excludes,
273281 }
274282 t .Log (i18n .GetWithName ("CompressFileSuccess" , fileName ))
275283 return nil
276- }, nil )
284+ }
285+ backupTask .AddSubTask (task .GetTaskName (website .Alias , task .TaskBackup , task .TaskScopeApp ), backupWebsite , nil )
286+ if parentTask != nil {
287+ return backupWebsite (parentTask )
288+ }
277289 return backupTask .Execute ()
278290}
279291
0 commit comments