Docker 启动前必须先手动创建 checkrr.yaml 和 checkrr.db 文件,否则会被当成目录报错;配置文件需删除未使用的段落(如不用 influxdb 就删掉整个 stats 块);3.1 起 arr 配置结构改为 arr 下每项带 service 键,升级需改配置;3.5 起需在配置中指定 language(目前仅 en-us)。
checkrr
aetaricMIT活跃维护扫描媒体库文件,用 ffprobe 检测损坏的音视频,并可自动通过 Sonarr 和 Radarr 替换问题文件。
Checkrr Scans your library files for corrupt media and optionally replaces the files via sonarr and radarr
wget https://raw.githubusercontent.com/aetaric/checkrr/main/checkrr.yaml.example -O checkrr.yaml
checkrr -c /path/to/checkrr.yaml --run-onceREADME 未说明硬件要求;需要 ffmpeg/ffprobe 可用,ffprobe 需在 PATH 中。
扫描媒体库文件找出损坏的媒体,并可通过 Sonarr/Radarr 自动替换
扫描媒体库文件,用 ffprobe 检测损坏的音视频,并可自动通过 Sonarr 和 Radarr 替换问题文件。
核心能力
- 用 ffprobe、magic number、mimetype 和文件哈希多重校验
- 通过 bbolt 记录已通过文件的哈希,后续扫描大幅加速
- 检测失败后连接 Sonarr/Radarr 删除并重新请求该文件
- 支持配置多个 arr 实例并做路径映射转换
- 可关闭 arr 处理,仅输出结果供 egrep 过滤
容易踩的坑
- 3.6.1checkrr-v3.6.1最新正式版2026-02-18 · 2026-02-18 02:14 UTC
Changelog
- dcf792ec8297152cedf618df2bf61207204eab29 Close #128. The variable for the movie file id is movie.MovieFile.ID not movie.MovieFile.MovieID. Increase debug logging somewhat in connections. Needs I18n and further extending.
- 834d42cc87aa69c2889b48b9f18106c23c7f95aa Fix path mapping debug messages using the wrong i18n message id for mapped path value.
- 7bb5a9edbe8bb33fb344ae8cf21909421904d637 Improve I18N for arr service debugging
- c3f09ac51391674ebc497ca0b6a9e6c9591b7954 fix some issues with radarr logging
- 5132873a0401bfa81492041655d82e3f5b057874 go mod tidy run
- 696736d136117ca6597eda8c59ce45eb078c94b8 rework ffprobe file handling
- 3.6.0checkrr-v3.6.02026-02-04 · 2026-02-04 01:22 UTC
查看更新说明
Changelog
- f530b5ee91f3155cd60881105ef587f0b7541a90 Add detection of files without audio tracks (requireaudio option) (#130)
- 725b168b04680618272486854f341da46ffc316f Bump golang.org/x/net from 0.36.0 to 0.38.0 (#131)
- 2d93ec86acd11d4a2848d5ad967680595b5904df Bump vite from 4.5.9 to 4.5.13 in /webserver (#132)
- 62480694e11a2f1bd896949856621ce95636a964 Fix discord regex.
- ba4a7441a71b96b488da94be3bea37607098f8ba Fix radarr
- cb840e38008fa010126873b9c71674916939e80f bump webserver deps
- c5bd9dfd18bc4cb210e08897d60df4afa9f535e1 ffmpeg quick and full options
- 92ad6cd5bfb175d3f8566daf1afb7c264ab63174 go mod tidy and update
- 8d7897f7bdbc25a4b008e5d83460b0f1a64bdafc update goreleaser to v2
- 3.5.4checkrr-v3.5.42025-03-20 · 2025-03-20 01:14 UTC
查看更新说明
Changelog
- 80d045adc092046bd5dfbfd27a32cb8f9ed3dbe4 fix issue with csv trying to close when not enabled
- 9c618c5d8f5bb354c2639bca87b2f6230446a578 fix issue with radarr using the wrong i18n id for the connected notifications
Fixes
- Issue with CSV causing crashes when not enabled
- Issue where radarr shows as noop when it's actually enabled
- 3.5.3checkrr-v3.5.32025-03-18 · 2025-03-18 21:39 UTC
查看更新说明
Changelog
- 38095f561e7f0d73fcaf5ad53388d01ebd3a9d12 Bump golang.org/x/net from 0.34.0 to 0.36.0 (#125)
- 2dafaf7c42f846d0459245b0d2c7a20c6343b0e7 close #126: koanf keys are case-sensitive. fixes some notification systems not working.
- 4ffa2e702df8ddb01b07e42cbb0a44fccc274a0a fix debug logging on windows
- b43c976497544b81970945f4b100d6130e485371 fixed an issue with logging not setting debug fully
- 49c4f7d3f2373b5a75e064702bc829ce9147006d fixed csv writter
- 14291088803206e50fc33f3c27a48a64f5440a97 fixed issue preventing arr services from working
- 35cf49bfd244efa14e6a88ba37140401afeead57 improved some debug logging
- 7ee2364cd7b2640c97d6231f0e96ff0dd3211703 web version bump
Fixes
- patched a few minor security issues
- fixed discord and gotify notifications not working
- actually set debug level on all loggers if enabled
- fixed issue with CSV writer
- fixed issue preventing arr services from working
- 3.5.2checkrr-v3.5.22025-03-11 · 2025-03-11 19:19 UTC
查看更新说明
Changelog
- 96b36d8d9006e3d8bf558157ba52d7aa6cea9a9e don't try to start the webserver if it's not defined
- 20ab7b7a0422ec8b759317c67332db4c94ad4548 enable debug in devshell for jetbrains
- 62365a35a87beb954853c7243c08010ac4f4959c fix a small typo
- 48c163a907fa88eb23d67cead484043ea1658a70 fix small issue where checkrr doesn't notify about last resort logger
- 40c8b510fb4cc79bd2635463f204181416f5229b log the error with the config instead of just a generic
- 012093c0b4ddd0428da112e5207d9ebd37637f54 resolve two bugs in the 3.5.x line.
Fixes
- Fixed issue where the webserver would cause a crash when there was no config block for it.
- Always notify user if there is no logging defined.
- Log the failure reading the config file.
- Fixed a regression that turned the WebUI's run button into a crash button.
- Fixed an issue where loading the WebUI before the first run would crash due to the "current stats" being empty.
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Checkrr
Scan your library files for corrupt media and replace the files via sonarr and radarr
Why does this exist
I've been running a media library since 2013, migrating my library between both servers (I've had 3 so far) and filesystems (ext4 on LVM was a mistake). I've lost whole disks worth of data in the past and my library has had various problems ever since that I have never bothered to fully track down until now.
Checkrr runs various checks (ffprobe, magic number, mimetype, and file hash on subsequent runs to drastically improve speed) on the path you specify as checkpath in the config.
- If the file passes inspection, the hash is recorded in a bbolt flatfile DB so future runs are insanely fast on large libraries.
- If the file fails any check checkrr will connect to sonarr and/or radarr for the file, remove it, and request a new version via the correct system (assuming they are enabled... you could just run checkrr in a no-op state by setting
sonarr.process: falseandradarr.process: falsein the config and then egrep the output like socheckrr check | egrep "Hash Mismatch|not a recognized file type"for environments that do not run either of these.)
Screenshots

Installation and running checkrr
cli (without package manager)
- Install prerequisite packages via your package manager or by downloading the installer (for windows): ffmpeg
- Make sure ffprobe is in your $PATH var. If you installed from a Linux/macOS package manager, it is. If you are on windows, you'll need to make sure you can run ffprobe from a basic command prompt/powershell.
- Grab a release from the releases page.
- Copy the example config from the repo:
wget https://raw.githubusercontent.com/aetaric/checkrr/main/checkrr.yaml.example -O checkrr.yaml - Edit the config in your favorite editor. Make sure you remove any sections you aren't using. (If you aren't using influxdb 1 and/or 2 for example, you should remove the entire stats block from your config.)If you aren't sure what the minimal config file can look like, check https://raw.githubusercontent.com/aetaric/checkrr/main/checkrr.yaml.minimal.
- To run checkrr as a daemon, use
checkrr -c /path/to/checkrr.yaml. If you'd like checkrr to run once and then exit (useful for running in your own cron daemon)checkrr -c /path/to/checkrr.yaml --run-once.
docker
YOU MUST CREATE THE CONFIG AND DB FILES BEFORE STARTING. checkrr will complain if these are directories. Docker doesn't know you want to mount a file unless it already exists.
- creating empty db file:
touch checkrr.db - creating a config file from the example:
wget https://raw.githubusercontent.com/aetaric/checkrr/main/checkrr.yaml.example -O checkrr.yamlmake sure you edit the example config from the defaults. Remove any unused sections. While editing the example you might want to add path mappings if the path to your media differs from arr services and checkrr.
debian/ubuntu
sudo wget -O /etc/apt/trusted.gpg.d/checkrr.gpg https://repo.checkrr.aetaric.ninja/checkrr.gpg
echo "deb [signed-by=/etc/apt/trusted.gpg.d/checkrr.gpg] https://repo.checkrr.aetaric.ninja/ checkrr main" | sudo tee /etc/apt/sources.list.d/checkrr.list
sudo apt update
sudo apt install checkrr
Running Checkrr
cli as a daemon:
checkrr -c /etc/checkrr.yaml
cli as a one-off:
checkrr -c /etc/checkrr.yaml -o
docker:
docker run -v /path/to/checkrr.yaml:/etc/checkrr.yaml -v /path/to/media:/media -v /path/to/checkrr.db:/checkrr.db aetaric/checkrr:latest
compose:
---
version: "3"
services:
checkrr:
container_name: checkrr
image: aetaric/checkrr:latest
volumes:
- /path/to/checkrr/config/checkrr.yaml:/etc/checkrr.yaml
- /path/to/checkrr/config/checkrr.db:/checkrr.db
- /path/to/media/to/scan:/media
ports:
- 8585:8585
restart: on-failure
unRAID using mrslaw's community applications repo
Please note the Additional Requirements on the details screen prior to pressing install. mrslaw has all the commands you need to run there.
Upgrading to 3.1 or newer
checkrr > 3.1 has changed the way arr services are handled. Please review the example config and bring your config into compliance prior to running checkrr. With the 3.1 release checkrr supports having multiple of each arr service. So you could have 3 sonarr instances connected. Each arr config under arr: has a service key to tell checkrr what service type it is. This can be set to sonarr, radarr, or lidarr. Please note that if you are running on docker, you will likely want to setup path mappings for each service. checkrr will attempt to translate the paths that the arr services see when working with their APIs.
Upgrading to 3.5 or newer
checkrr > 3.5 has changed the way logging is handled. Please review the example config and bring your config into compliance prior to running checkrr. Generally you can get away with not including a logging section and you will only get a nagging warning about using the default fallback logger. You do need to specify a language, as of the time of writing, only en-us is supported, but anyone is free to provide good translations if you happen to be a native or professional speaker. The language option is in the example config.
Building
See CONTRIBUTING.md
Contributions
See CONTRIBUTING.md
Security
If you think you have found a security issue with checkrr, see SECURITY.md for reporting instructions.
FAQ
How do I add multiple paths for checkrr to check?
You can specify multiple folders to check via the config file
checkrr:
checkpath:
- /media/TV_Shows
- /media/Movies