How to make sonarr stop creating duplicates of my files


I already check for that issue, but still don’t understand really well the answers.
So i have Sonarr + transmission to download torrents via docker-compose.

Here is my configuration :

    container_name: sonarr
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
      - /DATA/multimedia/sonarr/config:/config
      - /DATA/multimedia/transmission/downloads:/downloads
      - /DATA/multimedia/sonarr/tv:/tv
      - 8989:8989
    restart: unless-stopped

    container_name: transmission
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
      - /DATA/multimedia/transmission/config:/config
      - /DATA/multimedia/transmission/downloads:/downloads
      - 9091:9091
      - 51413:51413
      - 51413:51413/udp
    restart: unless-stopped

When i ask sonarr to download a tv show, it will send the instruction to transmission, it’s downloading and transmission put the downloaded file in “/DATA/multimedia/transmission/downloads”.
My issue is when i add a tv show on sonarr it must be a root folder image

That’s why i added another volume /tv.
But when it’s fully downloaded i have duplicate files, one raw from transmission, and one renamed from sonarr. So it’s taking more space in my disks.

Before sonarr does the copy :
df -h .
Sys. de fichiers            Taille Utilisé Dispo Uti% Monté sur
/dev/mapper/data_vg-lv_data   5,5T     13G  5,2T   1% /DATA

After :

df -h .
Sys. de fichiers            Taille Utilisé Dispo Uti% Monté sur
/dev/mapper/data_vg-lv_data   5,5T     18G  5,2T   1% /DATA

I know sonarr will delete the file from transmission when the seed ratio will be done, but i don’t want to delete it, i want to let it perma seed.

So my question is how stop duplicating file, or maybe any other way i could workaround ?


You ignored LSIO’s instructions that explicitly said their poor optional paths would result in duplicate space for all torrents. Sonarr is doing exactly what you configured it to do and exactly what you wanted.

Media folders

We have set /tv and /downloads as optional paths, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.
Use the optional paths if you dont understand, or dont want hardlinks/atomic moves.
The folks over at wrote a good write-up on how to get started with this.

Based on your chosen paths, you can never not have duplicate space for all torrents.

This is also in the install docs and faq

Hello, thanks for answer.
So what’s the solution, removing /download & /tv path and that’s all ?

i don’t really get it

Redoing your setup that are not the poor optional paths that LSIO linked.

their readme, the sonarr faq, the sonarr website, and the sonarr install docs all say how to avoid this and link to the docker guides

For those who don’t understand how it works, I found a dirty workaround.
In the docker compose you mount the volumes /tv.
Then you add a new series on sonarr, select the /tv directory.
Next, delete the /tv volumes in the docker-compose; restart everything.
You can still add series to sonarr in /tv , it will just tell you that it can’t find it, and in this case it won’t duplicate files
It’s ugly, because sonarr doesn’t see the files, but plex is very good at reading files not sorted by sonnar and at least you don’t have wasted disk space.


But woking fine on plex.

That’s not a workaround.

What’s unclear about following your container maintainers instructions - following trash’s guide or the docker guide - and fixing your poor paths that do not support hardlinks?

Why were you unable to follow the step by step instructions of trash’s guide and did you go on his discord for support as his guides say?

Everything says you absolutely should not have /tv and /downloads if you want hardlinks, why ignore this?

What’s unclear about redoing your docker setup to only have a single mount (besides config)?

Based on your “solution” and just letting everything be downloaded and never imported, it sounds like sonarr is not the tool for you as you aren’t using itZ perhaps use flexget which will just filter your site’s RSS feeds for you.

I already tried flexget or sickchill but i prefer sonarr’s interface.
It works like i want now.

Maybe oneday it will not work anymore, then i would follow the guide.

I use sonarr just to download series automatically without having to do anything manually. Including for the new episodes that will be released on my series

So why can’t you fix your bad paths?

It’s not complicated at all…it seems you made no attempt to view or open the docker guides?

Your setup is not supported and will cause issues.

Hello guys,

i’ve a new question.

When i search a TV show on sonarr, i use the path /series
But transmission is downloading the file in /downloads


I guess it still using 2x my space disk, i think it’s still copying the file from /download to put in in /series ? instead of doing hardlink ?


My transmission configuration :


My sonarr configuration :


I’ve checked the Hardlink box :

And added the Remote patch mapping :

Does someone know why it still using twice the disk space please ?

Get rid of the remote path mapping and redo your docker mounts as per the guides linked above.

Whitout path mapping will it be working as i want ?
Download in /download and sonarr link it in /series ?

No, linking without taking duplicate space will never, ever work with your setup, as repeatedly stated in all the guides.
Repeating it here again: /downloads and /series are considered separate harddisks from a docker container point of view (for simplicity’s sake).

Here we go, I guess. All of this is mentioned in the various guides, maybe slightly different. This is based on my working setup with file moves / hardlinks.

For starters: redo all your paths. Especially considering you have a “transmission” folder and inside that “series” and “downloads”. That’s just plain confusing.

For every media type, make a folder:

(keep making /DATA/multimedia/whatever for every media type)

For every download client, make a download folder:

(keep making /DATA/multimedia/downloads/whatever for all your download clients)

Docker config folders:

(keep making /DATA/docker/whatever for all your docker containers)

Needless to say, both sonarr and transmission containers/users need access to /DATA/multimedia, as well as their own /DATA/docker/... folder. How you achieve this is up to your host OS, but I assume you have that covered.

Transmission mounts:

- /DATA/multimedia:/multimedia <-- PAY ATTENTION HERE
- /DATA/docker/transmission:/config

Transmission config:
Inside transmission, tell it to save downloads to /multimedia/downloads. If this exact path is not available, go back to Go, do not collect $200, start again.

Sonarr mounts:

- /DATA/multimedia:/multimedia <-- PAY ATTENTION HERE
- /DATA/docker/sonarr:/config

Sonarr config:
Inside sonarr, tell it your media library is in /multimedia/series. Again, if this path is not available, re-read and start again.

Once you configure transmission as a download client in sonarr and can succesfully connect to it, it will Just Work™ because transmission is telling sonarr "hey there’s something to import in /multimedia/downloads", which is a path sonarr knows because it’s a subfolder of the /multimedia mount point, which… is the same for both containers.

Sonarr can then perform a move operation from /multimedia/downloads to /multimedia/series and use hardlinks so you can continue seeding while the actual file is nicely sorted/renamed in your series folder, because it’s all on the same “drive” (mount point). And not taking up double the diskspace, obviously.


Thanks for your detailled answer. That’s was really helpfull, everything works as i want now.
Thank you again.

1 Like

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.