Snapper is a nice tool to revert changes made to your system.
Unfortunately, it has a nasty side effect: If you happen to delete some large files (say, an ISO image you accidentally copied to the wrong place), and that large file ended up in one of your snapshots, well … the file will be gone but the disk space will still be allocated.
The first step is to locate the large file(s) under /.snapshots
The next step is to delete it/them. That’s not so easy since snapper created read-only file system snapshots. The workaround is to create a writable snapshot, delete the files, delete the read-only snapshot, create a new one and then delete the writable snapshot. Too much on one sentence? Here is the sequence of commands:
cd .../ btrfs subvolume snapshot snapshot snapshot.bak rm -rf snapshot.bak/... btrfs subvolume delete snapshot btrfs subvolume snapshot -r snapshot.bak snapshot btrfs subvolume delete snapshot.bak
Breakdown: First, we cd into the folder which contains the snapshot itself (it also contains a file “info.xml”).
Then we clone the snapshot in “snapshot.bak” which we can modify.
The last three steps replace “snapshot” with the new, cleaned “snapshot.bak”.
In at least one occasion, that didn’t free the disk space, yet. I also had to delete the oldest snapshot which contained the file.