You check your storage and a large chunk is gone. You haven't added much. You go looking for the culprit, add up your movies and shows, and the number doesn't come close to matching what the drive claims is used.
The usual answer is that your library is storing a lot of things twice, and it's doing it because of one setting that's easy to get wrong and produces no warning whatsoever.
Copy versus hardlink
Automated library tools work in two stages. Files arrive in a working directory, then get moved into your organized library with proper names. That second step can happen two ways.
| Copy | Hardlink | |
|---|---|---|
| Disk used | Twice | Once |
| Time to import | Minutes for a big file | Instant |
| Both locations usable | Yes | Yes |
| Deleting one | Other survives | Other survives |
A hardlink is a second name for the same data on disk. Both paths are equally real, both work normally, and the space is only counted once. The data isn't freed until every name pointing at it is gone.
This sounds like a trick, and it's genuinely not — it's a standard filesystem feature that every automated media setup is designed around. Getting it working is the single biggest storage win available, and it costs nothing.
Why it silently falls back to copying
Here's the trap. Hardlinks only work within the same filesystem. If your working directory and your library live on different volumes — or, very commonly, are presented to the software as unrelated paths — a hardlink is impossible. The tool doesn't error. It just quietly copies instead, and every import costs double.
The usual cause is path layout. Software that sees this:
/downloads → working files
/tv → library
/movies → library …has no way to know those live on one disk. Presented like this instead:
/data/downloads
/data/media/tv
/data/media/movies …everything sits under one visible root, hardlinks work, and imports become instant. This single change is the most-repeated piece of advice in the whole hobby, and it's repeated because it's constantly gotten wrong. The NAS layout article covers how to set the mounts up so this is true from the start.
How to tell which one you're getting
Two quick checks:
- Timing. If importing a large file takes minutes and drive activity spikes, you're copying. A hardlink is instantaneous no matter the size.
- The link count. On Linux or macOS,
ls -lshows a small number after the permissions. For a normal file it's1. For a hardlinked file it's2or more — that's the giveaway.
$ ls -l "Show Name - S01E01.mkv"
-rw-rw-r-- 2 user group 1738232 ...
^ two names point at this data Cleaning up after the fact
If you've been copying for a while, you have two full sets of a lot of files. Fixing the configuration stops the bleeding but doesn't reclaim anything already duplicated. Be careful here, because the working copies are not always disposable:
- Fix the paths first, so new imports stop duplicating.
- Audit before deleting. Compare what's in the working directory against what made it into the library. Anything that never imported is not a duplicate — it's the only copy.
- Beware differing path views. When software runs in a container, the paths it reports may not be the paths you see in a terminal. Deleting based on a mismatched path is how people remove the wrong thing. Confirm the mapping first.
- Delete through the application that manages the files where possible, rather than by hand.
Sorting out hardlinks on a healthy drive is a config change and a cup of tea. Sorting it out at 100% full — when things have already started failing and you're deleting under pressure — is a genuinely bad evening. Check it while it's boring.
Other quiet space eaters
- Transcode scratch space. Temporary conversion files can grow large, and don't always clean up after a crash.
- Thumbnail previews. The feature that shows video frames when you scrub the timeline generates a lot of images across a big library.
- Quality upgrades. If your tools are set to keep improving on files you already have, they'll keep replacing them — and any failed replacement can linger.
- Trash. Some setups keep deleted items recoverable for a while. That space isn't free yet.
The short version
- Copying stores everything twice; hardlinking stores it once. Both work identically.
- Hardlinks need one filesystem and one visible path root.
- Instant imports mean it's working. Slow imports mean you're copying.
- Check the link count with
ls -l—1means copies. - Fix it while the drive is healthy, not when it's full.