this post was submitted on 05 Jul 2024
14 points (100.0% liked)

Selfhosted

40006 readers
591 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 1 year ago
MODERATORS
 

Hello! I have jellyfin+qbittorrent+radarr on my home server, but I can't make it work with hardlinks. When a download finishes, it just copies it to the /movie folder, doubling the disk space. at least, I think that it's just a copy, because the disk space is double and find ./downloads -samefile ./movies/path/to/file.mkv returns no result, meaning if I understand correctly that file.mkv is not hardlinked to any file in the download folder (but it should).

this is the docker compose:

radarr:
    image: lscr.io/linuxserver/radarr:latest
    container_name: radarr
    network_mode: container:gluetun
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Rome
    volumes:
      - ./radarr-config:/config
      - /media/HDD1/movies:/movies
      - /media/HDD1/downloads:/downloads
    restart: unless-stopped

HDD1 hard drive is formatted ext4, that supports hardlinks (in fact I can create them manually), and in the radarr settings the checkbox "use hardlinks instead of copy" is checked.

Ideally I'd prefer softlinks instead of hadlinks, but I don't think there's a way to do it natively, I think I'd need an external script

Any tips? Thanks in advance!

all 6 comments
sorted by: hot top controversial new old
[–] [email protected] 25 points 4 months ago* (last edited 4 months ago) (3 children)

It's the multiple volumes that are throwing it.

You want to mount the drive at /media/HDD1:/media or something like that and configure Radarr to use /media/movies and /media/downloads as it's storage locations.

Hardlinks only work on the same volume, which technically they are, but the environment inside the container has no way of knowing that.

[–] [email protected] 2 points 4 months ago

I can't believe it, thank you very much!

[–] [email protected] 1 points 4 months ago

I didn't realize this when I first set up Radarr/Sonarr and they ended up copying every single file instead of hardlinking. By the time I realized, I had like 400gb of duplicate files. Ended up running fclones and getting it all back.

[–] [email protected] 5 points 4 months ago

The container sees each volume as a seperate filesystem, regardless of your underlying disk setup and you cannot hardlink across filesystems.

[–] [email protected] 4 points 4 months ago

IIRC from running into this same issue, this won't work the way you have the volume bind mounts set up because it will treat the movies and downloads directories as two separate file systems, which hardlinks don't work across.

If you bind mounted /media/HDD1:/media/HDD1 it should work, but then the container will have access to the entire drive. You might be able to get around that by running the container as a different user and only giving that user access to those two directories, but docker is also really inconsistent about that in my experience.