dedup/inc/dedup.h

43 lines
993 B
C++

#pragma once
#include <cstdint>
#include <dirent.h>
#include <map>
#include <memory>
#include "file.h"
#include "fileindexer.h"
#include "files.h"
#include "searchfolder.h"
class Dedup {
public:
Dedup();
~Dedup();
void addSearchFolder(const std::string& path, bool recurse = true);
void start();
private:
void removeUninterestingFiles(std::multimap<uint64_t, std::shared_ptr<File>>& files);
std::map<uint64_t, Files> hash(std::multimap<uint64_t, std::shared_ptr<File>>& files, uint64_t bytestohash);
void resolveDuplicates(std::map<uint64_t, Files>& hashed);
bool relinkFile(const std::string& linkbase, const std::string& replacedfile);
static const uint_fast8_t HASHTHREADCOUNT;
std::vector<SearchFolder> folders;
FileIndexer indexer;
bool hardlink = true;
bool ignoredotfiles = false;
bool dryrun = true;
bool deleteDuplicates = true;
bool ignoreInodeID = true;
uint64_t deduplicatedBytes = 0; // amount of bytes deduplicated
uint64_t deduplicatedFiles = 0;
};