mirror of
				https://github.com/1Panel-dev/1Panel.git
				synced 2025-10-27 01:05:57 +08:00 
			
		
		
		
	fix: 解决计划任务升级导致数据异常问题 (#3744)
This commit is contained in:
		
							parent
							
								
									3846dcef86
								
							
						
					
					
						commit
						5c9315ff1c
					
				
					 2 changed files with 17 additions and 10 deletions
				
			
		|  | @ -272,16 +272,16 @@ var UpdateCronjobSpec = &gormigrate.Migration{ | |||
| 			jobs           []model.Cronjob | ||||
| 			backupAccounts []model.BackupAccount | ||||
| 		) | ||||
| 		mapAccount := make(map[uint]string) | ||||
| 		mapAccount := make(map[uint]model.BackupAccount) | ||||
| 		if err := tx.Find(&jobs).Error; err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 		_ = tx.Find(&backupAccounts).Error | ||||
| 		for _, item := range backupAccounts { | ||||
| 			mapAccount[item.ID] = item.Type | ||||
| 			mapAccount[item.ID] = item | ||||
| 		} | ||||
| 		for _, job := range jobs { | ||||
| 			if job.KeepLocal && mapAccount[uint(job.TargetDirID)] != constant.Local { | ||||
| 			if job.KeepLocal && mapAccount[uint(job.TargetDirID)].Type != constant.Local { | ||||
| 				if err := tx.Model(&model.Cronjob{}). | ||||
| 					Where("id = ?", job.ID). | ||||
| 					Updates(map[string]interface{}{ | ||||
|  | @ -316,6 +316,7 @@ var UpdateCronjobSpec = &gormigrate.Migration{ | |||
| 							CronjobID:  job.ID, | ||||
| 							Type:       "snapshot", | ||||
| 							Name:       job.Name, | ||||
| 							FileDir:    "system_snapshot", | ||||
| 							FileName:   snap.Name + ".tar.gz", | ||||
| 							Source:     snap.From, | ||||
| 							BackupType: snap.From, | ||||
|  | @ -324,16 +325,22 @@ var UpdateCronjobSpec = &gormigrate.Migration{ | |||
| 					} | ||||
| 					continue | ||||
| 				} | ||||
| 				itemPath := mapAccount[uint(job.TargetDirID)].BackupPath | ||||
| 				if itemPath != "/" { | ||||
| 					itemPath = strings.TrimPrefix(itemPath, "/") + "/" | ||||
| 				} else { | ||||
| 					itemPath = "" | ||||
| 				} | ||||
| 				if job.Type == "log" { | ||||
| 					item := model.BackupRecord{ | ||||
| 						From:       "cronjob", | ||||
| 						CronjobID:  job.ID, | ||||
| 						Type:       "log", | ||||
| 						Name:       job.Name, | ||||
| 						FileDir:    path.Dir(record.File), | ||||
| 						FileDir:    path.Dir(strings.TrimPrefix(record.File, itemPath)), | ||||
| 						FileName:   path.Base(record.File), | ||||
| 						Source:     mapAccount[uint(job.TargetDirID)], | ||||
| 						BackupType: mapAccount[uint(job.TargetDirID)], | ||||
| 						Source:     mapAccount[uint(job.TargetDirID)].Type, | ||||
| 						BackupType: mapAccount[uint(job.TargetDirID)].Type, | ||||
| 					} | ||||
| 					_ = tx.Create(&item).Error | ||||
| 					continue | ||||
|  | @ -344,14 +351,14 @@ var UpdateCronjobSpec = &gormigrate.Migration{ | |||
| 						CronjobID:  job.ID, | ||||
| 						Type:       "directory", | ||||
| 						Name:       job.Name, | ||||
| 						FileDir:    path.Dir(record.File), | ||||
| 						FileDir:    path.Dir(strings.TrimPrefix(record.File, itemPath)), | ||||
| 						FileName:   path.Base(record.File), | ||||
| 						BackupType: mapAccount[uint(job.TargetDirID)], | ||||
| 						BackupType: mapAccount[uint(job.TargetDirID)].Type, | ||||
| 					} | ||||
| 					if record.FromLocal { | ||||
| 						item.Source = constant.Local | ||||
| 					} else { | ||||
| 						item.Source = mapAccount[uint(job.TargetDirID)] | ||||
| 						item.Source = mapAccount[uint(job.TargetDirID)].Type | ||||
| 					} | ||||
| 					_ = tx.Create(&item).Error | ||||
| 					continue | ||||
|  |  | |||
|  | @ -108,7 +108,7 @@ func (s sftpClient) Download(src, target string) (bool, error) { | |||
| 	} | ||||
| 	defer dstFile.Close() | ||||
| 
 | ||||
| 	if _, err = io.Copy(srcFile, dstFile); err != nil { | ||||
| 	if _, err = io.Copy(dstFile, srcFile); err != nil { | ||||
| 		return false, err | ||||
| 	} | ||||
| 	return true, err | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue