markfasheh / duperemove

Tools for deduping file systems
GNU General Public License v2.0
829 stars 82 forks source link

libblkid: could not get uuid for device #359

Closed Justinzobel closed 1 month ago

Justinzobel commented 1 month ago

duperemove . folder2 Gathering file list... libblkid could not get uuid for device /dev/mapper/luks-49330a12-6c14-4ada-a015-f990c2965b26. Run blkid as root to populate the cache. libblkid could not get uuid for device /dev/mapper/luks-49330a12-6c14-4ada-a015-f990c2965b26. Run blkid as root to populate the cache. Hashfile "(null)" written

JackSlateur commented 1 month ago

Hello,

There is no point in looking after files that are spread across filesystems: they will never be deduplicated, so the whole task is worthless. Because of this, duperemove locks itself on the filesystem that stores the first file it encounters. There are no good way to get a filesystem persistent identity, on Linux (the fsinfo() call etc are not merged, as far as I know).

As a better-than-nothing solution, the filesystem UUID is retrieved. To do that, the filesystem must be read: so either duperemove is run as root (in which case, the block device can be opened and the UUID can be retrieved) or duperemove is run as a regular user, in which case the UUID is retrieved from the cache (/run/blkid/blkid.tab on Debian). This cache is built when you run blkid as root, and lives until reboot. Of course, if you mount your filesystem, blkid must be rerun to grab the newly entry.

I hope the clean the situation, feel free to give me suggestions of improvements or reopen the issue if the explanation is not enough

Best regards,