#pragma once #include #include #include #include #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>& files); std::map hash(std::multimap>& files, uint64_t bytestohash); void resolveDuplicates(std::map& hashed); bool relinkFile(const std::string& linkbase, const std::string& replacedfile); static const uint_fast8_t HASHTHREADCOUNT; std::vector 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; };