feat: 数据库备份文件先生成到临时文件夹避免过早显示到列表中
This commit is contained in:
parent
667417d789
commit
cc6085f06d
@ -115,22 +115,32 @@ public class SysDbBackupService : IDynamicApiController, ITransient
|
||||
break;
|
||||
}
|
||||
|
||||
var path = Path.Combine(_backupDir, $"{db.Ado.Connection.Database}_{DateTime.Now:yyyyMMddHHmmss}.{ext}");
|
||||
// 生成临时文件路径
|
||||
var tempPath = Path.Combine(Path.GetTempPath(), $"{db.Ado.Connection.Database}_{DateTime.Now:yyyyMMddHHmmss}.{ext}");
|
||||
var finalPath = Path.Combine(_backupDir, $"{db.Ado.Connection.Database}_{DateTime.Now:yyyyMMddHHmmss}.{ext}");
|
||||
|
||||
// 备份数据库
|
||||
switch (option.DbType)
|
||||
{
|
||||
case DbType.MySql or DbType.Sqlite or DbType.SqlServer:
|
||||
await Task.Run(() => { db.DbMaintenance.BackupDataBase(db.Ado.Connection.Database, path); });
|
||||
break;
|
||||
{
|
||||
// 使用临时路径进行备份
|
||||
await Task.Run(() => { db.DbMaintenance.BackupDataBase(db.Ado.Connection.Database, tempPath); });
|
||||
// 备份成功后,将临时文件移动到目标路径
|
||||
File.Move(tempPath, finalPath);
|
||||
break;
|
||||
}
|
||||
|
||||
case DbType.PostgreSQL:
|
||||
{
|
||||
var fileStreamResult = (FileStreamResult)(await _databaseService.BackupDatabase());
|
||||
// 将 fileStreamResult 保存为文件
|
||||
await using var fileStream = new FileStream(path, FileMode.Create);
|
||||
// 将 fileStreamResult 保存为临时文件
|
||||
await using var fileStream = new FileStream(tempPath, FileMode.Create);
|
||||
await fileStreamResult.FileStream.CopyToAsync(fileStream);
|
||||
await fileStream.FlushAsync();
|
||||
|
||||
// 备份成功后,将临时文件移动到目标路径
|
||||
File.Move(tempPath, finalPath);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user