emdiff
Описание¶
emdiff - команда для сравнения содержимого двух торрентов по спискам предоставляемых ими файлов. Выводит список затронутых изменениями файлов во втором торренте по сравнению с первым. Сравнение файлов происходит поименно. Например:
$ emdiff t1.torrent t2.torrent + directory/file1 - directory/file2 ~ directory/changed_file ? directory/changed_type
Ниже представлены расшифровки кодов диффа:
Код | Расшифровка |
---|---|
+ |
В торренте t2 находится файл, которого нет в t1 . |
- |
В торренте t2 нет файла, находящегося в t1 . |
~ |
В обоих торрентах найден указанный файл, однако его содержимое различно. Эта метка ненадежна! Пожалуйста, внимательно прочтите описание ниже! |
? |
Указанный путь имеет разный тип в торрентах. Например, в одном торренте этим именем назывался файл, а в другом торренте это каталог. |
Замечание относительно ~
В силу особенностей формата, нельзя точно определить, различается ли содержимое файлов, входящих в два торрента. Файлы представлены единым потоком байтов, который режется на чанки фиксированного размера. Торрент так же несет в себе индекс со смещениями в данных, обозначающие границы файлов в раздаче. Границы чанков не совпадают с границами файлов, более того, в один чанк может входить несколько файлов. При определении различий содержимого используется сравнение размеров - это единственная информация о файле, которая хранится в торренте. Некоторые клиенты записывают в торрент поле md5sum
для каждого из файлов, но на практике таких раздач я не встречал.
Таким образом, если в диффе присутствует символ ~
, то указанные файлы различаются абсолютно точно, однако его отсутствие не говорит о том, что файлы не менялись. С другой стороны, символы +
, -
и ?
являются надежными и вы можете на них полагаться. Если два файла будут различаться по содержимому, но их размер совпадет с точностью до байта, то emdiff не увидит между ними разницы.
Опции¶
Info
Кроме собственных опций, указанных ниже, команда поддерживает еще и общий стандартный набор (например, --help
и --config
). За подробностями обратитесь на страницу config.
-v, --verbose
- Включает отладочные сообщения, направляемые в stderr.
Примеры использования¶
Чем отличаются два файла в бекапах emupdate?
$ emdiff backup/attack_on_titan.torrent.1380475600.bak backup/attack_on_titan.torrent.1380873522.bak + Shingeki no Kyojin [KANSAI]/[KANSAI] Shingeki no Kyojin - 25 1280x720.mp4
Чем отличается старый бекап от торрента, загруженного в клиенте?
$ emdiff backup/attack_on_titan.torrent.1380475600.bak 8237951c7e1abdfbbefce7e7996ed792d8bf2c5d + Shingeki no Kyojin [KANSAI]/[KANSAI] Shingeki no Kyojin - 25 1280x720.mp4 ~ Shingeki no Kyojin [KANSAI]/[KANSAI] Shingeki no Kyojin - 23 1280x720.mp4 ~ Shingeki no Kyojin [KANSAI]/[KANSAI] Shingeki no Kyojin - 24 1280x720.mp4
Если указан относительный путь к файлу, emdiff попытается найти его в каталоге, указанном параметром core/torrents_dir
в конфигурации. Если указан хеш, то будет использован список файлов раздачи, взятый из клиента. Можно указывать два хеша, и тогда emdiff сравнит два списка файлов из клиента. Для использования этой возможности вы должны настроить интеграцию с клиентом в ~/.config/emonoda.yaml
.
core: client: rtorrent
Подробнее об этом и о порядке поиска торрент-файлов смотрите на странице config.