【云备份】客户端模块

33. 客户端数据管理模块实现-数据信息设计

客户端要实现的功能是对指定文件夹中的文件自动进行备份上传。但是并不是所有的文件每次都需要上传,我们需要能够判断,哪些文件需要上传,哪些不需要,因此需要将备份的文件信息给管理起来,作为下一次文件是否需要备份的判断。因此需要被管理的信息包含以下:

  • 文件路径名称
  • 文件唯一标识:由文件名,最后一次修改时间,文件大小组成的一串信息
34. 客户端文件检测模块实现-文件操作实用类设计

这个其实与服务端的文件实用工具类雷同,只是功能需求并没有服务端那么多,复制过来即可。

namespace fs = std::experimental::filesystem;
class FileUtil {
    private:
    	std::string _name;
    public:
        FileUtil(const std::string &name) :_name(name) {}
        size_t FileSize();
        time_t LastATime();
        time_t LastMTime();
        std::string FileName();
        bool GetPosLen(std::string *content, size_t pos, size_t len);
        bool GetContent(std::string *content);
        bool SetContent(const std::string &content);
    	bool Exists();
    	bool CreateDirectory();
        bool ScanDirectory(std::vector *arry);
};
35. 客户端数据管理模块实现-数据管理类设计
class DataManager{
	private:
		std::unordered_map _table;
    	std::string _back_file;
    public:
    	DataManager(const std::string back_file);
    	bool InitLoad();//程序运行时加载以前的数据
    	bool Storage();//持久化存储
    	bool Insert(const std::string &key, const std::string &val);
    	bool Update(const std::string &key, const std::string &val);
    	bool GetOneByKey(const std::string &key, std::string *val);
};
36. 客户端文件备份模块实现-文件备份类设计
#define SRV_IP "192.168.X.X"
#define SRV_PORT 9000
class BackUp {
		private:
			DataManager *_data;
			std::string _back_dir;
			std::string _back_file;
		public:
			BackUp(const std::string &back_dir, const std::string &back_file)
                : _back_dir(back_dir)
				, _back_file(back_file){}
			std::string GetFileIdentifier(const std::string &filename);
			bool Upload(const std::string &filename);
			bool IsCanBeUpload(const std::string &filename);
			bool RunModule();
	};

你可能感兴趣的:(云备份,算法,服务器,运维)