mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2025-01-18 22:22:59 +08:00
fix: 解决计划任务升级导致数据异常问题 (#3744)
This commit is contained in:
parent
3846dcef86
commit
5c9315ff1c
@ -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…
Reference in New Issue
Block a user