目录
本文是高阶教程-追剧全流程自动化的扩展阅读
这篇文章也是值得买的值友提醒我的,一开始我也没注意到。关于Sonarr Radarr与下载器的硬链接hardlinking
,其实并不难理解,实现起来也非常简单,但是有一定的文件夹层次要求,比如我就无法实现
硬链接hardlinking
介绍
从英文翻译而来-在计算中,硬链接是将名称与文件系统上的文件相关联的目录条目。所有基于目录的文件系统都必须至少具有一个硬链接,为每个文件指定原始名称。术语“硬链接”通常仅在允许同一文件使用多个硬链接的文件系统中使用。
没有看懂也没关系,总之就是帮你省地方,省磁盘IO,一个文件可以出现在多个地方,但只占用一次空间,如果没有启用硬链接,就会执行 复制粘贴/剪切 操作
如何实现docker中Sonarr Radarr 与下载器的硬链接
在linuxserver/sonarr
的介绍中有说明
我简单的说一下,这段不难理解
如果要实现docker中Sonarr Radarr 与下载器的硬链接,对于目录层级是有要求的,否则实现起来会很麻烦,挂载磁盘根目录为最省事办法
不过,对于群晖来说,docker挂载磁盘根目录是很麻烦的一件事,所以最好的方法就是,整理好自己的影视目录,把所有的影视文件夹分类放到一个大影视文件夹,同时,下载文件夹也放到影视文件夹
注意:下载器的下载位置必须和影视库在一个磁盘
影视
-电影
-电视剧
-动画片
-综艺
-downloads
整理好影视文件夹后,nas下的qbittorrent、sonarr,radarr docker容器这样配置挂载文件夹
注意:我这里qbittorrent为什么会挂载incomplete,因为我是有SSD下载盘,下载完成后会从SSD转到HDD,你们没有的话,就不需要设置挂载incomplete
qbittorrent下载位置,设置为/影视/downloads/
再来讲一下Radarr和Sonarr里的相关设置
首先勾选显示高级选项,具体设置如图,可以只看Radarr,因为是中文的
Radarr
设置->媒体管理->使用硬链接代替复制
根目录
Sonarr
获取卷路径
ssh进群晖,获取卷路径
cd volume
# 会显示所有的卷,选取你影视资料的卷
# 比如我的是 /volume2/存储池2/
删除容器,重新创建
删除sonarr和raderr还有qBittorrent容器,在终端里用命令创建这三个容器,创建的时候把地址填上
# 例
docker create \
--name=sonarr \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Asia/Shanghai \
-p 8989:8989 \
-v /volume2/存储池2/影视:/影视 \
--restart unless-stopped \
linuxserver/sonarr
这样,sonarr和raderr还有qBittorrent容器挂载的卷的最上级都是/volume2/存储池2/影视
,就可以实现硬链接了
Remote Path Mappings
非必要
如果你的sonarr和qbittorrent下载路径区别很大,sonarr无法在对应的下载目录找到媒体文件,那么就会从qbittorrent的服务器上下载下来,这里的Remote Path Mappings指的是,下载任务在qbittorrent里的实际地址
Remote Path Mappings配置
Settings
->Download Clients
里添加Remote Path Mappings
填写刚才获取的卷地址,还有你qBittorrent下载机的IP地址(docker qBittorrent推荐使用host网络模式,性能更好。桥接网络模式,ip请填写172.17.0.1
)
qBittorrent的下载路径如下
/影视/downloads/
这样,硬链接的设置就结束了
2021.08.15日更新
如果不想挂载磁盘跟目录,还有一个办法,就是提前共有目录
举例:比如我的目前的设置,所有的影视都放在影视文件夹下
影视文件夹下存在如下文件夹
影视
-电影
-电视剧
-动画片
-综艺
-downloads
这样的话,Sonarr、Radarr还有qBittorrent只用挂载 影视 文件夹即可,-v /volume2/存储池2/影视:/影视
还不懂的话,就在多看看docker-compose.yml
version: "3"
services:
# qbittorrent,推荐使用 host 网络模式,性能更好,少一层nat
# 并且后面 下载器IP地址填写简单,填写 172.17.0.1 即可
# 注意:所有的UID,GID,要根据你的实际情况填写,不懂就都填写 0
# volumes 下的存储位置,请根据的实际情况修改
qbittorrent:
image: linuxserver/qbittorrent:latest
container_name: qbittorrent
environment:
- PUID=1026
- PGID=100
- TZ=Asia/Shanghai
volumes:
- /volume1/docker/qbittorrent:/config
- /volume2/存储池2/影视:/影视
network_mode: host
restart: unless-stopped
jackett:
image: linuxserver/jackett:latest
container_name: jackett
environment:
- PUID=1026
- PGID=100
- TZ=Asia/Shanghai
volumes:
- /volume1/docker/jackett:/config
ports:
- 9117:9117
restart: unless-stopped
radarr:
image: linuxserver/radarr:latest
container_name: radarr
environment:
- PUID=1026
- PGID=100
- TZ=Asia/Shanghai
volumes:
- /volume1/docker/radarr:/config
ports:
- 7878:7878
restart: unless-stopped
# 需要两个 sonarr 的同学,再添加一个sonarr容器即可,记得更改 名字和端口映射
sonarr:
image: linuxserver/sonarr:latest
container_name: sonarr
environment:
- PUID=1026
- PGID=100
- TZ=Asia/Shanghai
volumes:
- /volume1/docker/sonarr:/config
ports:
- 8989:8989
restart: unless-stopped
emby:
image: emby/embyserver
container_name: embyserver
environment:
- UID=1026 # The UID to run emby as (default: 2)
- GID=100 # The GID to run emby as (default 2)
- TZ=Asia/Shanghai
- GIDLIST=100 # A comma-separated list of additional GIDs to run emby as (default: 2)
volumes:
- /volume1/docker/emby:/config
- /volume2/存储池2/影视:/影视
ports:
- 8096:8096 # HTTP port
devices:
- /dev/dri:/dev/dri # VAAPI/NVDEC/NVENC render nodes
restart: unless-stopped
# 自动更新docker镜像,可选,建议开启
watchtower:
image: containrrr/watchtower
container_name: watchtower
restart: unless-stopped
environment:
- TZ=Asia/Shanghai
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: --cleanup --interval 7200
# 网络方面,网络访问不通畅的可以用小猫咪,懂的用,不懂的请勿操作
# clash:
# image: dreamacro/clash-premium
# container_name: clash
# restart: unless-stopped
# network_mode: host
# volumes:
# - /volume1/docker/clash:/root/.config/clash
结语
其实弄起来还是非常简单的,重点在于你的影视的存放,像我一样的媒体存放方式,直接挂载 影视文件夹就可以了
本文断断续续的一直没有写完,主要原因是有相关需求的人应该很少,并且太折腾了,最终能写完还是不想让前面写的那么多浪费了,也想把高阶教程-追剧全流程自动化给尽量完善,这一套工具链用的越久,越顺手,sonarr的快速迭代也添加了更多功能,值得长期的用下去
PS1
很多人会好奇,为什么会有两份文件
看具体情况,因为使用了硬链接,如果你在做种,那么文件会会出现在两个位置
如果你在qb里设置是不做种,那么文件只会在一个位置,就是你sonarr和radarr指定导入的文件夹里
本文由 NG6 于2020年08月31日发表在 sleele的博客
如未特殊声明,本站所有文章均为原创;你可以在保留作者及原文地址的情况下转载
转载请注明:Sonarr Radarr qBittorrent 硬链接讲解 | sleele的博客
如果sonarr能支持将文件保存到在添加下载客户端时设置的分类在下载器内的保存路径下就好了,例如下载器默认下载目录是
~/downloads
而sonarr调用下载器执行的下载文件保存到
~/downloads/tv-sonarr/…
这样就是成功了对吗?
谢谢分享。
最后的一份yml里面,sonarr、radarr是否缺了挂媒体文件夹,就上面的/影视,应该也要挂的吧
@Sean 对,根据自己的情况挂载影视文件夹
qBittorrent 的初始用户名密码是多少?进不去。。
@Rain 账户 admin
密码 adminadmin
对于硬链接,radarr的媒体库根路径与下载器的下载路径如果在同一个盘挂载点下,应该是不需要Remote Path Mappings的吧。https://trash-guides.info/Radarr/Radarr-remote-path-mapping/
@CyberRim 如果都是用docker部署的,那应该还是需要的,我这边实测,如果不勾选
Remote Path Mappings
,那么硬链接将会失效,变为复制radarr的硬链接机制好像和sonarr不太一样?sonarr我导入之后全都是自动创建了硬链接 但radarr就全是复制
你好,请问下博主,跨硬盘的硬连接有试过吗?
@匿名 硬链接只能在同一个磁盘
qBittorrent,host网络模式,ip请填写172.17.0.1。这块不知道怎么操作,能解释下吗?直接在docker qBittorrent 网络定义host,ip为“172.17.0.1”但是我无法访问。
@errorking 这里写错了,桥接网络模式
host填 127.0.0.1或者NAS在路由器中分配的IP
在这里推荐一个自己写的硬链接工具
https://github.com/appotry/PTtool
同步镜像:https://gitee.com/bloodwolf/PTtool
PT hard link tools。方便PT用户硬链接文件,不需要再最大可能情况下节约空间,并保持做种。 小于1M的文件直接复制,方便emby,tmm等工具刮削修改nfo等小文件。 大于1M的文件硬链接到目的目录,可以修改文件名,但是不能修改文件内容!
请问一下这是因为权限设置的问题吗?使用的是群晖的下载器,PT下载,要继续做种。
21-2-28 19:54:39.0|Error|DownloadedEpisodesImportService|Import failed, path does not exist or is not accessible by Sonarr: /volume3/PT/WandaVision.S01E08.Previously.On.1080p.DSNP.WEB-DL.DDP5.1.H.264-TOMMY.mkv. Ensure the path exists and the user running Sonarr has the correct permissions to access this file/folder
@kpnew9
path does not exist or is not accessible by Sonarr
,有可能是的,你检查一下下载器是以哪个用户在运行,sonarr要和这个用户一个权限下载器建议用docker部署,权限好配置
https://sleele.com/2020/04/09/docker-qbittorrent-optimizing/
博主的sonarr和radarr文章很好,简直打开新世界的大门
但博主这里最后的映射有一些误导,我也是研究了很久才搞清楚:
这个远程文件夹映射的逻辑是 :
1.download client 通知sonarr 我这里(clients的下载目录)/donwloads下有下载好的xxx文件,sonarr你可以来取
2.sonarr会在自己容器内的这个被通告路径/downloads下寻找是否有匹配的文件,发现找不到, sonarr则会在/downloads被远程映射的目录下去取下载文件
也就是说remote path 远程文件夹那里应该是download client 的下载目录(如果download client 是docker下的话 应该是mnt后的路径 而不是被mnt的原始路径)
local path 也是需要填写 sonarr/radarr docker下被mnt后的路径如/media /downloads而不是被mnt的原始路径如/volume2/存储池2/downloads
@houwa 原来是这样,我自己这块也没太搞懂,稍后更新进去,👍🏻
@houwa 那radarr在docker部署时要映射访问下载客户端的下载位置不就可以了吗?比如下载客户端的下载路径为/volume1/qb/,而radarr映射下载客户端的下载路径,例如:/volume1/qb:/download。这不就完了吗?这怎么会出现找不到的情况。
我把sonarr和jackett装在一台跑服务的小机子上,qb装在群晖上,硬链接已经是不去想他了。现在qb用来下bt,tr用来下pt,qb设置做种5分钟后删种,用下来还挺好
你好,下载后是下载在downloads目录的。我看电影是复制,而不是移动,原下载文件并没有删除,是哪里设置不对吗
@匿名 一样,一样,折腾了1个月了,有空就来弄弄,还是没弄好,各方法都按博主来弄的,下完只有复制,没有硬链接,还有一点,sonarr只能通过tvdb分季吗,这样和已有的tmbd分季资源很不好匹配
@匿名 一年过去了,有解决吗?我也是一直复制,不能自动删除。
这个,我用的是qnap有 下载磁盘和电影磁盘,电影下载后能不能自动到电影盘,删除下载盘里面的电影,我按博主的教程一个星期了还没搞好能提醒下我怎么做吗
@匿名 正常来说下载完后会自动移动到设定好的目录,并删除原文件,看看是不是卷挂载那块没弄好
@NG6 我的也是这样子,是不是要把媒体目录放到下载文件夹目录才能实现移动而不是复制?