dedup/inc/dedup.h

40 lines
874 B
C
Raw Normal View History

2022-10-21 19:39:55 +02:00
#pragma once
#include <cstdint>
2022-10-22 00:43:34 +02:00
#include <dirent.h>
2022-10-21 19:39:55 +02:00
#include <map>
#include <memory>
#include "file.h"
#include "files.h"
#include "searchfolder.h"
class Dedup {
public:
Dedup();
~Dedup();
void addSearchFolder(const std::string& path, bool recurse = true);
void start();
private:
2022-10-22 00:43:34 +02:00
void indexFolder(const SearchFolder& sf);
void handleFolderContent(dirent* dircont, const SearchFolder& sf);
void handleNewFile(ino_t inode, const std::string& path);
Files& getFiles(uint64_t fs);
// all files that where found
2022-10-21 19:39:55 +02:00
std::map<uint64_t, Files> filesizes;
2022-10-22 00:43:34 +02:00
// files that where found ordered by inode (to detect deduplicated files)
std::map<ino_t, std::shared_ptr<File>> inodes;
// folders that should be scanned
2022-10-21 19:39:55 +02:00
std::vector<SearchFolder> folders;
bool hardlink = true;
2022-10-22 00:43:34 +02:00
bool ignoredotfiles = false;
uint64_t deduplicated = 0; // amount of bytes deduplicated
2022-10-21 19:39:55 +02:00
};