Skip to content
Devaev Maxim edited this page Aug 5, 2015 · 29 revisions

Описание

emdiff - команда для сравнения содержимого двух торрентов по спискам предоставляемых ими файлов. Выводит список затронутых изменениями файлов во втором торренте по сравнению с первым. Сравнение файлов происходит поименно. Например:

$ emdiff t1.torrent t2.torrent
 + directory/file1
 - directory/file2
 ~ directory/changed_file
 ? directory/changed_type

Ниже представлены расшифровки кодов:

Символ Значение
+ В торренте t2 существует файл, которого нет в t1.
- В торренте t2 нет файла, существующего в t1.
~ В обоих торрентах найден указанный файл, однако его содержимое различно.
? Указанный путь имеет разный тип в торрентах. Например, в одном торренте этим именем назывался файл, а в другом торренте это каталог.

Опции

  • -h, --help` - выводит краткую справку.
  • -c <path/to/file>, --config <path/to/file> - устанавливает путь к конфигу, по-умолчанию - ~/.config/emonoda.yaml.
  • -o sec/sub/opt=value ..., --set-options sec/sub/opt=value ... - переопределяет опции из конфига для единичного запуска команды. Вложенные ямловые ключи разделяются слешем, значение параметра устанавливается после знака равенства. Допустимо передавать несколько опций через пробел.
  • -m, --dump-config - выводит дамп конфигурации в виде YaML с комментариями.
  • -v, --verbose - включает дебаговые сообщения, направляемые в stderr.

Примеры использования

Чем различаются два файла в бекапах emfetch?

$ 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 попытается вытащить список файлов этой раздачи из клиента. А указав два хеша, можно сравнить две раздачи, зарегистрированные в клиенте. Для использования этой возможности вы должны сконфигурировать клиент в ~/.config/emonoda.yaml:

core:
    client: rtorrent

Замечания

В силу особенностей формата, нельзя точно определить, различается ли содержимое файлов, входящих два торрента. Файлы представлены единым потоком байтов, который режется на чанки фиксированного размера. Торрент так же несет в себе индекс со смещениями в данных, обозначающие границы файлов в раздаче. Границы чанков не совпадают с границами файлов, более того, в один чанк может входить несколько файлов. При определении различий содержимого используется сравнение размеров - это единственная информация о файле, которая хранится в торренте. То есть, если два файла будут различаться по содержимому, но их размер совпадет с точностью до байта, emdiff не увидит между ними разницы. Таким образом, если в диффе присутствует символ ~ - то указанные файлы различаются точно, однако его отсутствие не говорит о том, что файлы не менялись. С другой стороны, символы +, - и ? являются надежными и вы можете на них полагаться. Некоторые клиенты записывают поле md5sum для каждого из файлов, но на практике таких раздач я не встречал.

Clone this wiki locally