yhkylin-backup-tools/common/utils.h

128 lines
3.3 KiB
C++
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef UTILS_H
#define UTILS_H
#include <QString>
#include <QtDebug>
#include "mydefine.h"
/**
* @brief 工具类
* @author zhaominyong
* @since 2021/07/22
*/
class Utils
{
public:
/**
* @brief initSysRootPath, 根据应用程序路径推断系统根目录
* @param qsAppPath应用程序所在路径
*/
static void initSysRootPath(const QString& qsAppPath);
/**
* @brief getSysRootPath获取正式系统根目录
* @return const QString&,系统根目录
* @note
* 调用此函数前需要调用初始化系统根目录函数initSysRootPath否则返回默认目录“/”
*/
static const QString& getSysRootPath() { return m_sysRootPath; }
/**
* @brief customMessageHandler日志重定向句柄
* @param type 日志类型debug等
* @param context 上下文
* @param msg 日志信息
*/
static void customMessageHandler(QtMsgType type, const QMessageLogContext& context, const QString& msg);
/**
* @brief 文件锁,锁定应用程序
* @param frontUid锁定程序的用户id
* @return 锁文件的句柄
*/
static int lockProgram(int frontUid);
/**
* @brief 解除应用程序文件锁
* @param lock_file_fd 锁文件的文件描述符
* @return 0解除成功1解除失败
*/
static int unLockProgram(int lock_file_fd);
/**
* @brief 删除锁文件
* @return bool
*/
static bool rmLockFile();
/**
* @brief 检查/etc/.bootinfo是否存在并可读里面存放备份分区的UUID等信息
* @return bool
*/
static bool checkBootInfoExists();
/**
* @brief 获取备份分区的UUID
* @return 备份分区的UUID
*/
static QString getBackupPartitionUuid();
/**
* @brief 路径不存在则创建,不支持递归创建
* @param path
*/
static void mkdir(const QString& path);
/**
* @brief 创建路径,支持递归创建
* @param path
* @return bool
*/
static bool mkpath(const QString& path);
/**
* @brief 备份还原时,需要排除绑定挂载的路径,因为数据不是存放在挂载路径内
* @param excludes存放需要排除的绑定路径
*/
static void excludeFstabBindPath(QStringList &excludes);
/**
* @brief 生成rsync --exclude-from排除路径规则文件
* @return
*/
static bool generateExcludePathsFile();
/**
* @brief 获取系统备份还原排除路径列表
* @return 系统备份还原排除路径列表
*/
static QStringList getFromExcludePathsFile();
/**
* @brief 判断目录是否存在
* @param 目录路径
* @return true,存在false,不存在
*/
static bool isDirExist(const QString& fullDirName);
/**
* @brief 生成Uuid
* @return UUID
*/
static QString createUuid();
/**
* @brief 将列表中内容写入指定文件中
* @param fileName文件全路径
* @param lines内容列表
* @return true成功写入false写入失败
*/
static bool writeFileByLines(const QString& fileName, const QStringList& lines);
private:
// 系统根目录,默认"/"
static QString m_sysRootPath;
};
#endif // UTILS_H