#ifndef SYSTEMRESTOREPROXY_H #define SYSTEMRESTOREPROXY_H #include "workerfactory.h" #include "myprocess/rsyncpathtodirprocess.h" #include "parsebackuplist.h" class SystemRestoreProxy : public Worker { Q_OBJECT DECLARE_DYNCREATE(SystemRestoreProxy) public: // 系统还原的几种场景 enum SystemRestoreScene { SYSTEM_RESTORE, // 系统还原 RESTORE_SYSTEM_WITH_DATA, // 保留用户数据还原 EFI_RESTORE, // efi还原 }; explicit SystemRestoreProxy(); virtual ~SystemRestoreProxy(); public: // 环境检测 virtual bool checkEnvEx(); // 任务处理 virtual void doWorkEx(); private: // 还原efi bool restoreEfi(); // 修复efi目录 void repairEfi(); // 以读写方式重新挂载efi分区 void remountEfi(); // 以读写方式重新挂载boot分区 void remountBoot(); // 同步efi bool rsyncEfi(); // 系统还原 void restoreSystem(); // 删除home下的用户家目录 void removeHome(const QString& path); // 获取备份点里存在家目录的用户列表 QStringList getBackupPointUsers(); QStringList getBackupPointUsers(const QString& path); /** * @brief 根据场景获取rsync命令参数 * @param scene,场景 * @return 组装好的rsync的参数信息 */ QStringList getRsyncArgs(SystemRestoreScene scene); // .user.txt文件路径 QString m_userFile; // .exclude.user.txt文件路径 QString m_excludeUserFile; // 备份数据所在的data目录 QString m_backupPath; // 是否还原成功 bool m_bSuccess; // 当前备份uuid QString m_curUuid; // 当前还原源目录 QString m_srcPath; // 备份进程 RsyncPathToDirProcess *m_p; // 当前备份节点 ParseBackupList::BackupPoint m_backupPoint; // 是否保留用户数据 bool m_bRetainUserData; }; #endif // SYSTEMRESTOREPROXY_H