Uma alternativa à estrutura de diretórios do TRaSH Guides

Todos que já pesquisaram sobre programas como Radarr, Sonarr e os demais softwares relacionados já se depararam com o famoso TRaSH Guides. Em poucas palavras, ele é um guia de boas práticas e de como você pode tirar um bom proveito desses programas em relação ao armazenamento em disco.

A maioria desses softwares de mídia se baseia bastante no conceito de hardlinks. A principal utilidade nesse cenário é ter o mesmo arquivo em locais diferentes, por exemplo no diretório da sua biblioteca de mídia (Plex/Jellyfin) e no diretório do seu cliente BitTorrent para fazer a semeadura da mídia. Isso é muito útil para não ocupar espaço duplicado no seu HD/SSD, além de permitir renomear o arquivo no link e adicionar informações relevantes sobre a mídia.

Sugestão do TRaSH Guides

No site deles, eles sugerem a seguinte estrutura de diretórios para organizar seus arquivos:

data
├── torrents
│   ├── books
│   ├── movies
│   ├── music
│   └── tv
├── usenet
│   ├── incomplete
│   └── complete
│       ├── books
│       ├── movies
│       ├── music
│       └── tv
└── media
    ├── books
    ├── movies
    ├── music
    └── tv

O nível do data contém 3 pastas: torrents, usenet e media. Dentro de torrents e usenet estão as categorias dos seus downloads, enquanto media conterá os hardlinks que apontarão para os arquivos dos diretórios torrents e usenet. Ter uma pasta media separada da pasta de torrents é útil, pois o Jellyfin/Plex irá usar essa pasta para identificar suas mídias, já que a pasta de torrents pode conter arquivos irrelevantes.

Essa estrutura é boa e eu sempre usei desde quando comecei a me aventurar no mundo de self-hosting, porém acredito que possa melhorar.

A estrutura que uso atualmente

O ponto principal que não acho interessante nessa estrutura do TRaSH Guides é que, caso você baixe algo que não se enquadre nas pastas torrents e usenet (que não foi baixado pelo qBittorrent ou pelo SABnzbd, por exemplo), não teria um local adequado e ficaria “jogado”. Criar uma pasta para cada fonte também deixaria tudo desnecessariamente desorganizado.

Eu utilizo o Soulseek para algumas coisas e ele também ficaria “jogado”. Cada novo lugar de download seria mais uma pasta em um nível adicional, o que não faz sentido na minha opinião.

No meu homelab estou utilizando a seguinte estrutura:

/mnt/terachad
└── data
    ├── downloads
    │   ├── slskd
    │   ├── tidal
    │   ├── torrents
    │   └── usenet
    └── media
        ├── audiobooks
        ├── books
        ├── courses
        ├── movies
        ├── music
        └── tv

Desta forma fica bem mais intuitivo, pois estaria tudo dentro do diretório downloads. No compose, os volumes ficam assim (a depender de qual container usar, é claro):

- ${DATA_ROOT}:/data
- ${DATA_ROOT}/downloads/torrents:/data/torrents/
- ${DATA_ROOT}/media:/data/media:ro

Conclusão

No meu ponto de vista, ter uma pasta de downloads deixa a estrutura muito mais organizada.

Em um primeiro momento, isso pode parecer irrelevante, ou pensar algo como “eu só uso torrents”. Eu também pensava isso, mas a toca do coelho do self-hosting é grande, você vai querer cada vez mais serviços e provavelmente terá muitas pastas que estariam dentro de downloads.

Fazer essa mudança depois de já estar usando toda a stack de containers é bem trabalhoso, principalmente por se tratar de hardlinks. Além de que terá que fazer alguns mappings de volumes nos *arrs (eu tive que fazer) e é mais uma coisa para lembrar na hora do troubleshooting.

Então, se eu tivesse começando hoje, gostaria de ter alguém que me falasse para usar essa estrutura desde o começo para evitar retrabalho.