备份过程中拔掉U盘

This commit is contained in:
zhaominyong 2022-01-25 14:38:00 +08:00
parent 1f43c12ca1
commit 4ae3f10a7b
3 changed files with 30 additions and 3 deletions

View File

@ -407,6 +407,8 @@ int MyBackupManager::cancel()
{
if (workerThread.isRunning())
emit workerThread.cancelWork();
else
return 1;
return 0;
}

View File

@ -136,6 +136,7 @@ void UDiskSystemRestoreProxy::repairEfi()
QString newPath = m_backupPath + "/boot";
args << newPath;
QProcess::execute("mv", args);
QProcess::execute("sync");
}
}

View File

@ -124,7 +124,11 @@ void SystemBackup::initFirstWidget()
beginBackup->setAutoRepeat(true);
font.setPixelSize(24);
beginBackup->setFont(font);
connect(beginBackup, &MyPushButton::clicked, this, &SystemBackup::on_next_clicked);
connect(beginBackup, &MyPushButton::clicked, this, [=](bool clicked) {
this->m_prefixDestPath = "";
this->m_backupName = "";
this->on_next_clicked(clicked);
});
// 底部控件布局
QHBoxLayout *bottomHBoxLayout = new QHBoxLayout;
@ -211,7 +215,6 @@ void SystemBackup::initSecondWidget()
if (GlobelBackupInfo::inst().hasBackupPartition()) {
QString qsLocalDefaultPath = Utils::getSysRootPath() + BACKUP_SNAPSHOTS_PATH;
qsLocalDefaultPath.replace("//", "/");
this->m_prefixDestPath = "";
this->m_udiskPaths << "";
comboSelect->addItem(iconFolder, tr("local default path : ") + qsLocalDefaultPath);
}
@ -975,6 +978,18 @@ void SystemBackup::on_checkBackup_end(int result)
// 检查是否有备份分区
errTip = tr("Check whether there is a backup partition");
break;
case int(BackupResult::UDISK_FILESYSTEM_TYPE_IS_VFAT):
// 移动设备的文件系统是vfat格式
errMsg = tr("The filesystem of device is vfat format");
// 请换成ext4、ntfs等格式
errTip = tr("Please change filesystem format to ext3、ext4 or ntfs");
break;
case int(BackupResult::UDISK_FILESYSTEM_IS_READONLY):
// 移动设备是只读的
errMsg = tr("The device is read only");
// 请修改为可读写权限的
errTip = tr("Please chmod to rw");
break;
case int(BackupResult::BACKUP_CAPACITY_IS_NOT_ENOUGH):
// 备份空间不足
errMsg = tr("The storage for backup is not enough");
@ -1000,7 +1015,10 @@ void SystemBackup::on_checkBackup_end(int result)
errTip = tr("The system is being compressed to the local disk, please wait patiently...");
emit this->backupWarnning(errTip);
return;
case int(BackupResult::BACKUP_START_SUCCESS):
case int(BackupResult::MKSQUASHFS_DO_FAIL):
break;
case int(BackupResult::BACKUP_START_SUCCESS): // 非移动设备备份不需要此信号
case int(BackupResult::MKSQUASHFS_DO_SUCCESS):
// 正在传输image文件到移动设备即将完成...
errTip = tr("Transferring image file to mobile device, about to be completed...");
emit this->backupWarnning(errTip);
@ -1020,6 +1038,12 @@ void SystemBackup::on_checkBackup_end(int result)
GlobelBackupInfo::inst().setIsBusy(false);
m_systemBackupState = SystemBackupState::IDEL;
this->on_next_clicked(true);
if (errMsg.isEmpty()) {
// 备份过程中出现错误
errMsg = tr("An error occurred during backup");
// 错误信息参考日志文件:/var/log/backup.log
errTip = tr("Error messages refer to log file : /var/log/backup.log");
}
emit this->checkBackupResult(bRst, errMsg, errTip);
disconnect(m_pInterface, &ComKylinBackupManagerInterface::sendEnvCheckResult, this, &SystemBackup::on_checkEnv_end);
disconnect(m_pInterface, &ComKylinBackupManagerInterface::progress, this, &SystemBackup::progress);