ZED 21.03.2011 01:58
Tips & tricks — Длинные имена файлов в торрентах
Торренты, созданные в Windows имеют ограничение на длину файла с кириллическим названием 255 символов, а в линуксе ограничение такого файла 128 символов. Из-за этого любой торрент-клиент при записи файла напишет, что имя файла слишком длинное и остановит закачку с ошибкой. И это к сожалению красиво не побороть. Как я понял это из-за того в линуксе ограничение на длину файла идет не на символы, а на байты. И этот атавизм присущ всем nix-системам, включая фряху. В винде используется utf16 и каждый символ занимает 2 байта, в никсах же по-умолчанию используется utf-8, латиница занимает 1 байт, европейские языки, включая кириллицу 2 байта, а арабские символы и иероглифы 4 байта. Но ограничение идет уже на байты, а не символы, поэтому для латиницы разницы не будет, а для остальных языков будет.Единственный способ это обойти - использовать отличную от utf8 локаль. Создаем например cp1251 (если ее нет):
localedef -c -i ru_RU -f CP1251 ru_RU.CP1251
Проверяем список установленных локалей:
locale -a
После чего запускаем торрент-клиент:
LC_ALL=ru_RU.CP1251 azureus
или
LANG=ru_RU.CP1251 azureus
Но проблема возникает еще и в том, что большинство клиентов все равно пишут файлы в utf8 независимо от локали. По крайней мере этим точно страдает transmission и rtorrent. Vuze (azureus) пишет имена в кодировке используемой локали. Про остальные клиенты не в курсе.
Так же можно использовать uTorrent через wine:
LANG=ru_RU.cp1251 wine utorrent.exe
После закачки файлы выглядят "крякозябрами", но читаются и могут быть переименованы как надо. Для этого сначала проверяем какие файлы не могут быть переименованы автоматом (если в раздаче только часть файлов с длинными именами):
convmv -f CP1251 -t UTF-8 * -r
После чего переименовываем руками косячные файлы и конвертируем остальные файлы из раздачи:
convmv -f CP1251 -t UTF-8 * -r --notest
Поскольку vuze я не люблю из-за жабы, подобные корявые торренты попадаются редко (но среди книжек бывает чаще), а uTorrent отлично работает под вайном и не требует установки, я предпочел последний вариант.
Пост написан не только для решения проблемы, которое в целом довольно банальное, но и для объяснения причин данной проблемы, чтобы никто на красивое решение не надеялся. Пенять на винду не совсем корректно, поскольку в данном вопросе она предстает более прогрессивной. Торренты специально для заблудшего линуксоида тоже никто переделывать не будет, урезая имена файлов, вы их или скачиваете через костыли или не скачиваете вовсе. Дураков на Руси на 100 лет припасено (ц) Кузьмич.
насколько я понимаю, это проблема файловых систем, а не ядра...Зато райзерФс4 поддерживает 3976 байт
В том то и дело, что на уровне файловых систем ограничений нет, а вот в ядре где-то на уровне библиотек C оно есть.
почти 3 года использую торренты в различных Linux-дистрибутивах, и ни разу не попадались торрент-файлы со сверх-длинными именами. неужели кому-то может не хватить 128 символов для "обызвания" файла? Не обязательно жетуда впихивать краткое описание раздачи.
ни разу не попадались торрент-файлы со сверх-длинными именами
Такие имена часто попадаются в раздачах книг и живописи. Названия книг и картин бывают очень длинными. Я сам с этим столкнулся сравнительно недавно.
https://bbs.archlinux.org/viewtopic.php?id=89174 Вот тут не хватило, например.
А вообще стыдно в 21 веке такие ограничения иметь, у NTFS и то больше буковок влазит.
А вообще стыдно в 21 веке такие ограничения иметь, у NTFS и то больше буковок влазит.
Костыли плодятся и размножаются.
Никогда не видел такой баги, но тестовый торрент файл выдал ошибку. Нехорошо, решил я, и запостил проблему на багтрекер. Через два часа в svn уже был фикс.
http://qbittorrent.svn.sourceforge.net/viewvc/qbittorrent?revision=5355&view=revision
А вы какой-то фигней занимаетесь. Нет бы достучаться до разрабов или самим код поправить
Никогда не видел такой баги, но тестовый торрент файл выдал ошибку. Нехорошо, решил я, и запостил проблему на багтрекер. Через два часа в svn уже был фикс.
http://qbittorrent.svn.sourceforge.net/viewvc/qbittorrent?revision=5355&view=revision
А вы какой-то фигней занимаетесь. Нет бы достучаться до разрабов или самим код поправить
Во-первых, я привел ссылку, где показано, что это не проблемы торрент-клиентов, а проблема всех POSIX систем. Если проблемы исправляют разработчики клиентов, будьте спокойны, они засовывают такие же костыли внутрь. Рано или поздно это приведет к тому что сейчас мы наблюдаем в X11.
Во-вторых, проверьте фикс, он работает? Потому что в Deluge это фиксят уже давно и все никак не отфиксят.
Во-вторых, проверьте фикс, он работает? Потому что в Deluge это фиксят уже давно и все никак не отфиксят.
Данный фикс всего лишь обрезает название файла, что вполне согласуется со стандартами POSIX.
И да, он вполне работает
И да, он вполне работает
На самом деле, насколько я понимаю, это проблема файловых систем, а не ядра. Скажем, и в стане виндовз-систем не все так радужно, потому что джульет и удф файловые системы работают, соответственно, с 64 символа и 255 байт максимум.
Зато райзерФс4 поддерживает 3976 байт. Сам не тестил не знаю, только в доке читал, хехе)