Data-Based Matching
Why?
Torrent-based matching relies on .torrent
files to be able to search for
cross-seeds. In this method, it analyzes the list of files stored in the
.torrent
file and searches your trackers for similar files. If the files found
from the remote torrent (candidate) match the local torrent (searchee), this is
a match.
Data-based matching allows cross seed to not require the .torrent
file,
and instead to look at actual data files on disk to search for matches. This is
great if you have the actual files to cross-seed, but not the .torrent
files.
Torrent-based matching will take priority over data-based when they are equivalent.
Torrent-based is more robust, and prevents some performance issues with dataDirs
wherein cross-seed
has to frequently scan your dataDirs
and watch all of their
children for changes.
General Usage for dataDirs
Most users will not need to use dataDirs
. You should only use dataDirs
if:
-
You are downloading through Usenet or other non-torrent methods in order to match new content not present in your torrent client.
-
You have content in your media or data directories that is not already present in your torrent client. In this scenario, you only need to perform a search with
dataDirs
once. After the initial search, you should remove the directories fromdataDirs
entirely. -
You want to cross seed from
TorrentClientA
toTorrentClientB
. In this case, you can setdataDirs
to the path of the downloaded data (e.g/data/torrents/tv
) inTorrentClientA
, and configurecross-seed
withTorrentClientB
only. This will likely create duplicate torrents seeding in both clients, ensure you will be following your tracker's rules.
Setting up data-based matching
-
Set up linking as described in the linking tutorial.
-
If you are trying to cross-seed data that has been renamed or whose names don't match standard torrent release naming schemes, set your
matchMode
toflexible
, or if you want all matches, consider setting up partial matching. -
Set
dataDirs
andmaxDataDepth
to informcross-seed
on where to generate searchees. Here are some examples of common structures and their optimal configuration. If multiple apply, setmaxDataDepth
to the highest value.
data/
├─ usenet/
│ ├─ movies/ # 0
│ | ├─ Movie.mkv # 1
dataDirs: ["/data/usenet/movies", ...],
maxDataDepth: 1,
data/
├─ torrents/
│ ├─ tv/ # 0
│ | ├─ Show S01/ # 1
│ | | ├─ Episode 1.mkv # 2
│ | | ├─ Subtitles # 2
│ | | | ├─ Episode 1.srt # 3
dataDirs: ["/data/torrents/tv", ...],
maxDataDepth: 1, # cross-seed will ignore season pack episodes even if set to 2 or more
data/
├─ radarr/ # 0
│ ├─ Movie/ # 1
│ | ├─ Movie.mkv # 2
dataDirs: ["/data/radarr", ...],
maxDataDepth: 2, # cross-seed will not search 'Movie/' itself, using a value of 1 will do nothing
data/
├─ sonarr/ # 0
│ ├─ Show/ # 1
│ | ├─ Season 1/ # 2
│ | | ├─ Episode 1.mkv # 3
dataDirs: ["/data/sonarr", ...],
maxDataDepth: 2, # use 3 if using seasonFromEpisodes or includeSingleEpisodes (note: cross-seed will not search 'Show/' itself)