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 лет припасено (ц) Кузьмич.
Единственный способ это обойти - использовать отличную от 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 лет припасено (ц) Кузьмич.