I don't know what file system you are using or cluster size but here is some generic information that should help.
The file system allocates data in groups sometimes called clusters(by some file systems). The cluster size is variable, but in many cases a power of 2 at least 512 bytes in size. The 512 bytes represents the physical sector size of all but the newest hard drives which have 4096 byte sectors.
Each file uses at least 1 cluster, and in most cases the last cluster is not fully used. The remaining space on each file is remains not allocatable. Using FAT,FAT32,NTFS it is not possible to go higher than 64kb each cluster, but the same is not true for linux.
ls -alhs
how big is the file at the top of list the . and the ..?
So if you have a lot of files wasting tiny amounts of space it all adds up to a large amount of wasted space.
You would have to look into the exact details of your file system to find this data out. Changing file systems can have a major impact on the overhead. I tried BTRFS and it wasted a tons of space. I did a fresh install and ran updates and it was like 2x or more higher than other file systems.
Ext4 also does poorly with a large number of small files, a perfect example of this is 1 copy of the kernel source code has 10,000's of thousands of small files.
It is entirely possible that your file system is responsible for the wasted space and the only way to change that is changing the file system.
In addition, some file systems support snapshots which allows for back up copies of the same file to be stored in the file system. The distro controls how the feature is configured and whether it is on by default. Every file you change or delete could be in a snapshot and not actually deleted. There is a command to remove the old snapshots, but I don't recall what the command is.