LINUX.ORG.RU
ФорумTalks

Неужели windows превосходит linux...

 


1

2

...пусть даже в такой мелочи как максимальный размер имени файла?

ну вот посудите сами в ntfs максимальная длинна имени файла 255 16-битовых слов а в любой файловой системе православно верной ОС не превышает 255 самых обычных байт. И это системное ограничение именно ядра linux, а точнее его VFS подсистемы.

А осознал я это после того, как случилось следующее, решил я тут скачать один торент, но некоторые файлы из него отказывались качаться ссылаясь на слишком длинное имя файла. Не беда, подумал я, сейчас создадим файлик, форматнём во что нибудь более продвинутое, подмонтируем и натравим Transmission... ан нет, нет такой православно верной ФС для которой бы максимальное имя файла превышало эти заветные 255 байт, я так думаю и драйвер ntfs тоже не в силах выйти за это ограничение.

★★★

Перерыл весь порнолаб, не нашел торрента с этими файлами. Можно ссылочку?

Lavos ★★★★★
()

решил я тут скачать один торент, но некоторые файлы из него отказывались качаться ссылаясь на слишком длинное имя файла.

Это баг в качалке торентов, фс тут почти не при чем. Качалка сама должна обрезать длинные имена. Зачем ты пришел с этим на лор?

Legioner ★★★★★
()
Ответ на: комментарий от mm3

qbittorrent (на Qt)
deluge (на GTK).

Можно настроить демоном, и интерфейсом. Причем интерфейс может быть запущен на сторонней машине.

ivanlex ★★★★★
()

Тсо говорил, что, конечно же, нехорошо когда ограничение на длину имени файла зависит от национальности пользователя, но ничего не поделаешь. 255 байт на имя файла захардкожено во многих местах ядра и придётся перелопатить кучу кода, чтобы его изменить, причём это поломает множество программ, а Линус такое не одобряет.

Nebuchadnezzar ★★★★
()
Ответ на: комментарий от Deleted
<pengvado> that brings back the memory:
<pengvado> windows is posix compliant
<pengvado> every single posix function returns ENOTIMPLEMENTED, which is one complying implementation :)
Nebuchadnezzar ★★★★
()
Ответ на: комментарий от drBatty

Подтверждаю. На работе постоянно сталкиваюсь с такими проблемами. После всегда придумываю еще один способ мучительной казни.

ivanlex ★★★★★
()
Ответ на: комментарий от drBatty

Ему просто лень прописать все название, поэтому он его формирует в цикле и сохраняет в переменной. Твое утверждение про костыли, для меня загадка.

TGZ ★★★★
()

Формат имени 8.3 в кодировке ASCII(7). Остальное не нужно.

Delirium_veritas
()
Ответ на: комментарий от registrant

Я же выше объяснял, что это не я... :-[

Axon ★★★★★
()

В этом вопросе — безусловно.

aidaho ★★★★★
()
Ответ на: комментарий от mm3

пока ещё не изобрели модуль позволяющий бить током по IP.

А жаль. Тех, кто не умеет в «тся/ться» я бы бил.

J ★★★★★
()
Ответ на: комментарий от science

какому оголтелому идиоту нужны и он может работать с файлами, имя которых превышает 100 символов?

Очень_интересный_фильм_о_том_как_парень_влюбился_в_девушку_а_родственники_были_против_их_связи_снят_по_мотивам_классического_произведения_великого_британского_писателя_уильяма_нашего_шекспира.avi

J ★★★★★
()
Ответ на: комментарий от J

Блин! А название не поместилось ;(

J ★★★★★
()
Ответ на: комментарий от megabaks

которое не понимает шифровок вне контекста?

Разговор разве не о формате имен файлов?

J ★★★★★
()
Ответ на: комментарий от Reset

Значит POSIX — говно

Тут один слакофил ещё упрекал NTFS в старости, лол.

wintrolls ☆☆
()

...пусть даже в такой мелочи как максимальный размер имени файла?

а ты пробовал переносить файлы с названием в 255 байт с харда на хард под виндой?)

Murg ★★★
()
Ответ на: комментарий от Deleted

Windows — POSIX-совместимая система.

NT4 разве-что. И то, ЕМНИП до какого-то сервиспака.

drBatty ★★
()
Ответ на: комментарий от TGZ

Ему просто лень прописать все название, поэтому он его формирует в цикле и сохраняет в переменной. Твое утверждение про костыли, для меня загадка.

про его цикл я понял. А что касается костылей, то это его chcp 1251>>nul setlocal enabledelayedexpansion, благодаря которым новые версии маздая способны в их «эмуляторе терминала» понимать какие-либо другие кодировки, отличные от cp866. Эти костыли есть в их недотерминале, но нет в Over9000 программах, ради которых собственно и приходится юзать маздай(всякие специальные программы, аффторы которых либо уже сдохли, либо давно занимаются чем-то другим, более полезным обществу. Но программы таки живут в продакшенах многих дебилов СР).

drBatty ★★
()
Ответ на: комментарий от J

Очень_интересный_фильм_о_том_как_парень_влюбился_в_девушку_а_родственники_были_против_их_связи_снят_по_мотивам_классического_произведения_великого_британского_писателя_уильяма_нашего_шекспира.avi

про поля комментариев и описания ты не слышал?

drBatty ★★
()
Ответ на: комментарий от drBatty

И где здесь костыль? Включил отложенное расширение переменных и указал кодировку батника. Тогда все костыли, iconv в пайпе тоже костыль получается.

TGZ ★★★★
()

Ограничения должны определяться совестью, а не техническими недостатками, ленью, трусостью или бредом разработчиков.

record ★★★★★
()
Последнее исправление: record (всего исправлений: 1)
Ответ на: комментарий от tailgunner

Во-первых, это как? Во-вторых, в этом случае linux не является POSIX-совместимой, так как хранит имена в кодировке локали.

Reset ★★★★★
()

Нормальные качалки умеют обрезать имена файлов.

Programmist11180 ★★★
()
Ответ на: комментарий от Reset

в этом случае linux не является POSIX-совместимой,

Думаю, эту «несовместимость» мы легко переживем. Венда с POSIX совместима чуть лучше, чем никак, и нчего - некоторым даже нравится.

хранит имена в кодировке локали.

А напомни, что именно POSIX имеет сказать по этому поводу.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Венда с POSIX совместима чуть лучше, чем никак, и нчего - некоторым даже нравится.

sfu есть для совместимости с legacy posix софтом

А напомни, что именно POSIX имеет сказать по этому поводу.

Ты вроде утверждаешь про utf8?

Reset ★★★★★
()

Ну выложи торрент с файами con, prn, и т.п.

ya-betmen ★★★★★
()
Ответ на: комментарий от Reset

Венда с POSIX совместима чуть лучше, чем никак, и нчего - некоторым даже нравится.

sfu есть

Это, конечно, чуть лучше, чем ничего.

А напомни, что именно POSIX имеет сказать по этому поводу.

Ты вроде утверждаешь про utf8?

Да. Поскольку байтовые строки, передаваемые ядру, им никак не интерпретируются, в них можно передавать utf-8 (он для этого и создавался). Так ты скажешь, что POSIX имеет сказать на тему «не является POSIX-совместимой, так как хранит имена в кодировке локали»?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Да. Поскольку байтовые строки, передаваемые ядру, им никак не интерпретируются, в них можно передавать utf-8

Ага, а можно передавать в другой кодировке, что линукс и делает, если сменить локаль. И это никак не решает проблему, затронутую в топике.

Reset ★★★★★
()
Ответ на: комментарий от Reset

Да. Поскольку байтовые строки, передаваемые ядру, им никак не интерпретируются, в них можно передавать utf-8

Ага, а можно передавать в другой кодировке

Конечно.

что линукс и делает, если сменить локаль.

Кто-то использует кодировку символов (не локаль), отличную от utf8?

И это никак не решает проблему, затронутую в топике.

Проблема, затронутая в топике, как минимум преувеличена.

P.S. так ты процитируешь место в POSIX, где запрещается хранение имен в разных кодировках?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

P.S. так ты процитируешь место в POSIX, где запрещается хранение имен в разных кодировках?

В том то и дело, что это не запрещено. И это ужасно!

Reset ★★★★★
()
Ответ на: комментарий от Reset

так ты процитируешь место в POSIX, где запрещается хранение имен в разных кодировках?

В том то и дело, что это не запрещено

А если не запрещено, то в этом аспекте Linux вполне совмепстим с POSIX.

И это ужасно!

Как говорится, different tradeoffs.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от drBatty

новые версии маздая

Конечно, по сравнению с передовыми технологиями линукса, NT 5.1 — новейшая ОС.

понимать какие-либо другие кодировки

iconv тоже костыль?

нет в Over9000 программах

Примеры?

ради которых собственно и приходится юзать маздай

Потому что кроме ведра и полтора недоDE за 20 лет в линуксах ничего и нет.

wintrolls ☆☆
()
Ответ на: комментарий от Axon

это новая формулировка оправдания «не работает - не нужно»?

xtraeft ★★☆☆
()
Ответ на: комментарий от xtraeft

готов, но не очень
там еще и во весь рост патченная производителем (synology) самба, с глюками, зато со своими ACL.

kott ★★★★★
()
Ответ на: комментарий от TGZ

Тогда все костыли, iconv в пайпе тоже костыль получается.

безусловно. Вот только мне не нужно костылей, и УМВР. Но с ограничением. Однако это ограничение разумное и нужное. Что-бы обойти его, нужен костыль в терминале, и в других новых программах(при этом старые программы с такими файлами работать НЕ будут). У меня в терминале такого костыля нет, и потому не получается прямо так создать длинный файл. Мне придётся самому наворачивать костыли, например используя xattr(встроенные костыли есть также в gnu tar, ибо имя там считается вместе с путём. Т.е. tar сохраняет как имя, так и (частичный)путь. Он естественно может быть больше 255 байт, вот и используется костыль, позволяющий тарить файлы с именами любой длинны). Но такие имена не нужны, потому и нет костыля.

Мало того, для использования этого костыля нужен ЕЩЁ один костыль, задающий кодировку, ибо вообще говоря для совместимости, терминал в маздае до сих пор работает в DOS-кодировке.

Ну и третий костыль зарылся в ФС, и нужен для перекодирования имён файлов из той кодировки что выдаёт программа, в какой-то внутренний неизвестный формат(предположительно UTF-16 с костылями для совместимости с DOS, потому-что там некоторые символы кодируются половинками UTF-16). В Linux такого костыля не было никогда, потому-что юзеру по барабану, как оно там внутри хранится. И ФС потому пишет AS IS, если ты назовёшь файл в cp866, он так и запишется.

drBatty ★★
()
diff -ur linux-3.10.1/fs/reiserfs/reiserfs.h linux-3.10.1-fxd/fs/reiserfs/reiserfs.h
--- linux-3.10.1/fs/reiserfs/reiserfs.h	2013-07-13 22:42:41.000000000 +0400
+++ linux-3.10.1-fxd/fs/reiserfs/reiserfs.h	2013-07-19 13:02:26.000000000 +0400
@@ -1759,7 +1759,7 @@
 #define B_I_E_NAME(bh,ih,entry_num) ((char *)(bh->b_data + ih_location(ih) + deh_location(B_I_DEH(bh,ih)+(entry_num))))
 
 // two entries per block (at least)
-#define REISERFS_MAX_NAME(block_size) 255
+#define REISERFS_MAX_NAME(block_size) 2000
 
 /* this structure is used for operations on directory entries. It is
    not a disk structure. */

user@debian:~/nametest$ i=1; n="1"; while touch $n 2> /dev/null; do n="1$n"; i=$(($i + 1)); done; echo $i
2001
user@debian:~/nametest$

В ext4 в некоторых местах используется u8 для длины имени. В btrfs ограничено 255-ю, но написано, что можно любое ставить. В остальных не смотрел.

i-rinat ★★★★★
()
Ответ на: комментарий от Reset

linux не является POSIX-совместимой, так как хранит имена в кодировке локали.

а как по твоему хранить имя «ФЫЯ»? В ASCII таких символов тупо нет.

drBatty ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.