yhkylin-backup-tools/backup-daemon/systemrestoreproxy.h

88 lines
2.7 KiB
C
Raw Normal View History

2021-12-09 10:00:07 +08:00
#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
bool rsyncEfi();
// 系统还原
void restoreSystem();
// 删除home下的用户家目录
void removeHome(const QString& path);
// 获取备份点里存在家目录的用户列表
QStringList getBackupPointUsers();
QStringList getBackupPointUsers(const QString& path);
// 待还原数据
void undoRestoreData();
// 还原备份还原工具自身
void rsyncBackupSelf();
/**
* @brief
* @note
* 1~/.config等目录中的部分文件可能会更新bug
* a.
* b. desktop文件
* c. 1%
*/
void rsyncAgain();
2021-12-09 10:00:07 +08:00
/**
* @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;
2021-12-09 10:00:07 +08:00
};
#endif // SYSTEMRESTOREPROXY_H