Давно известен тот факт, что Проводник Windows и большинство Windows-приложений не могут работать с файлами и папками, длина пути к которым превышает 260 символов. И это — лишь программное ограничение на уровне Win32 API, известное также как MAX_PATH, тогда как файловая система NTFS сама по себе допускает до 32767 символов в адресе объекта файловой системы, чем успешно пользовались сторонние приложения, работавшие в обход стандартного API, например, FAR и Total Commander.
Также данное ограничение не касалось работы с файлами при сетевом доступе, что приводило к казусным ситуациям: рядовой пользователь в расшаренной папке может создавать и изменять файлы и папки, администратор через Windows Explorer — получает отказ доступа. Причём данное ограничение имело место не только в Windows 7/8/8.1 и более ранних ОС, но и в новейшей Windows 10.
Для обхода ограничения применялся, в зависимости от ситуации и уровня подготовки сидящего за ПК пользователя, целый ряд различных приёмов: символические ссылки, ручное сокращение количества символов, создание виртуальных дисков и прочее.
И вот, как сообщает ряд тестеров регулярно выпускаемых закрытых сборок Windows 10, компания Microsoft, наконец, снизошла до исправления этого недостатка и выпуска исправления. Точнее — реализации настройки, которую должен будет включить сам пользователь. В шаблонах групповых политик появился соответствующий параметр «Включение длинных адресов NTFS» (Конфигурация компьютера -> Административные шаблоны -> Система -> Файловая система -> NTFS).
Единственное, что огорчает — Редактор групповых политик (gpedit.msc) отсутствует в редакциях Windows 10, отличных от «Профессиональная» и «Корпоративная» (хотя существуют неофициальные и не совсем легальные способы обойти это ограничение). Впрочем, необходимые ключи в реестре наверняка будут найдены. Как подсказывает один из читателей, это параметр LongPathsEnabled (тип DWORD), расположенный в реестре по адресу HKEY_LOCAL_MACHINE\System\CurrentControlSet\Policies.
Telegram-канал @overclockers_news — теперь в новом формате. Подписывайся, чтобы быть в курсе всех новостей!
Слишком длинное имя файла или слишком длинный целевой путь — как исправить?
При копировании, создании, сохранении или перемещении файлов и папок в Windows 11 и Windows 10 на внутреннем HDD или SSD, при копировании данных на внешний диск или флешку, вы можете столкнуться с ошибками вида «Слишком длинный целевой путь. Имена файлов слишком длинны для помещения в эту целевую папку», «Указано неправильное или слишком длинное имя файла» и другие, имеющие отношение к слишком длинным именам или путям к файлам и папкам.
В этой инструкции подробно о том, чем вызваны эти ошибки и как можно их исправить в Windows последних версий, а также дополнительная информация, которая может быть полезной, чтобы решить проблему.
- Слишком длинное имя файла или слишком длинный целевой путь
- Причины ошибки и способы её исправить
- Как включить поддержку длинных путей в Windows
- В редакторе реестра
- В редакторе локальной групповой политики
- Почему ошибка сохраняется при включенной поддержке длинных путей
Причины ошибки «Слишком длинное имя файла» и «Слишком длинный целевой путь» и способы её исправить
Несмотря на то, что файловой системой NTFS длина пути ограничена 32760 символов, в Windows существует ограничение на полный путь в 260 символов, включая путь к папке и имя файла с расширением. Ещё одно ограничение — 255 символов на имя файла или отдельной папки. Схожие ограничения есть для файловых систем FAT32 и ExFAT. Когда полный путь к файлу, с которым вы выполняете действия, превышает указанное число символов, вы можете получить сообщение об ошибках о слишком длинном целевом пути или слишком длинном имени файла.
Отсюда основные способы исправить ошибки, связанные с использованием слишком длинного пути:
- Использовать более короткие имена файлов и более простое и «компактное» дерево папок.
- Включить поддержку длинных путей — такая опция есть в Windows 10 и Windows 11, далее будет рассмотрен порядок действий. Однако, это решит не все проблемы, о чем мы также поговорим.
- Использовать файловые менеджеры, которые могут работать с длинными путями по умолчанию: Total Commander, Files (но для него потребуется включить и поддержку длинных путей в системе) или даже 7-Zip File Manager, который прекрасно с этим справляется.
Как включить поддержку длинных путей в Windows 10 и Windows 11
В зависимости от установленной редакции Windows, можно использовать один из следующих способов включения поддержки длинных путей.
В редакторе реестра
Если на вашем компьютере установлена Windows 11 или Windows 10 Домашняя, используйте редактор реестра для включения опции:
- Нажмите правой кнопкой мыши по кнопке «Пуск» и выберите пункт «Выполнить» или нажмите клавиши Win+R на клавиатуре, введите regedit и нажмите Enter.
- В редакторе реестра перейдите к разделу
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
- В правой панели редактора реестра дважды нажмите по параметру с именем LongPathsEnabled и присвойте значение 1 вместо 0 для этого параметра.
- Закройте редактор реестра, перезагрузите компьютер.
В редакторе локальной групповой политики
В Windows Pro и Enterprise можно использовать редактор локальной групповой политики:
- Нажмите клавиши Win+R на клавиатуре, введите gpedit.msc в диалоговом окне «Выполнить» и нажмите Enter.
- Перейдите к разделу Конфигурация компьютера — Административные шаблоны — Система — Файловая система.
- Дважды нажмите по параметру «Включить длинные пути Win32».
- Установите значение «Включено» для этого параметра, примените настройки.
- Закройте редактор локальной групповой политики и перезагрузите компьютер.
Готово, теперь поддержка длинных путей в Windows включена, однако это не означает, что ошибки, с ними связанные, исчезнут.
Почему ошибки длинных путей появляются, несмотря на включенную поддержку длинных путей
Даже если вы включите поддержку длинных путей к папкам и файлам в Windows 11/10, при действиях с такими файлами в проводнике и некоторых программах вы продолжите получать ошибки вида «Слишком длинный целевой путь. Имена файлов слишком длинны для помещения в эту целевую папку» или «Указано неправильное или слишком длинное имя файла», также будут недоступны некоторые действия в папках, имеющих длинный путь.
Причина этого — поддержка длинных путей требуется не только на уровне системы, но и в самой программе, которая работает с этими путями, в качестве примера:
- Проводник не сможет полноценно работать с длинными путями даже при включенной поддержке.
- Файловый менеджер Files из магазина приложений будет исправно работать, если включить поддержку длинных путей, и будет сообщать об ошибках при отключенной поддержке.
- Total Commander или встроенный файловый менеджер 7-Zip работают с длинными путями независимо от того, включена ли их поддержка в Windows.
То же самое касается не только файловых менеджеров, но и прикладных программ: текстовых, графических и видео редакторов и другого ПО.
Надеюсь, инструкция прояснила причины ошибки и возможные способы решения проблемы. Если же вопросы остаются — жду их в комментариях.
Материал из РУВИКИ — свободной энциклопедии
Проводится экспертиза
Российской Академией Наук
Подробнее
Экспертиза РАН
Проводится экспертиза
Российской Академией Наук
База знаний для подготовки к ЕГЭ и ОГЭ, проверенная Российской Академией наук
Подробнее
Материал ОГЭ/ЕГЭ
База знаний для подготовки к ЕГЭ и ОГЭ, проверенная Российской Академией наук
Полное имя файла — это строка символов, определяющая путь к файлу в файловой системе, включая все каталоги от корня до самого файла. Оно позволяет однозначно идентифицировать и найти файл в операционной системе.
Основные понятия
- Имя файла — название файла в каталоге, используемое для его идентификации.
- Полное (абсолютное) имя файла — путь, содержащий все каталоги от корневого до файла.
- Относительный путь — путь к файлу относительно текущего каталога.
- Расширение имени файла — часть имени после последней точки, указывающая тип или формат файла.
Структура полного имени файла в разных системах
Windows
Отображение содержимого каталога C:\temp
с именами файлов в командной строке Windows
В операционных системах Windows полное имя файла записывается следующим образом:
C:\Каталог\Подкаталог\ИмяФайла.расширение
- C: — буква диска.
- \ — разделитель каталогов (обратная косая черта).
- Каталоги и подкаталоги следуют через \.
- Имя файла может содержать расширение после точки.
Пример:
C:\Windows\System32\calc.exe
Максимальная длина полного имени файла составляет 260 символов, однако с использованием специальных префиксов можно увеличить этот предел до 32 767 символов:
\\?\C:\Путь\Очень_длинное_имя_файла.txt
UNIX и UNIX-подобные системы
В UNIX-системах полное имя файла выглядит так:
/Каталог/Подкаталог/ИмяФайла
- / — корневой каталог и разделитель каталогов.
- Каталоги и подкаталоги разделяются символом /.
Пример:
/usr/local/bin/gcc
Относительные пути начинаются без / и отсчитываются от текущего каталога. Символ ~ обозначает домашний каталог пользователя:
~/Документы
— домашний каталог текущего пользователя.~user/Загрузки
— домашний каталог пользователя user.
Расширение имени файла
Расширение имени файла — последовательность символов после последней точки в имени файла, обозначающая тип или формат файла.
Примеры:
document.txt
— текстовый файл.archive.zip
— архивный файл.photo.jpg
— изображение в формате JPEG.
Операционные системы и приложения могут использовать расширения для определения программы по умолчанию для открытия файла. Иногда используются множественные расширения, например, archive.tar.gz
.
Запрещённые символы в именах файлов
Некоторые символы запрещены в именах файлов из-за их специального значения в операционной системе.
В Windows запрещены следующие символы:
\
,/
— разделители каталогов.:
— отделяет букву диска или поток данных.*
,?
— символы подстановки в масках."
— для обозначения строк.<
,>
,|
— перенаправление ввода/вывода..
— недопустима в конце имени (за исключением особых случаев).
В UNIX-системах запрещены:
/
— разделитель каталогов.- Символ null (
\0
) — конец строки в языке C.
Заключение
Понимание структуры и правил формирования полных имён файлов важно для эффективной работы с файловыми системами разных операционных систем. Правильное использование имён и путей обеспечивает корректный доступ к файлам и их организацию, а знание запрещённых символов помогает избежать ошибок при именовании.
Литература
- Босова Л. Л., Босова А. Ю. Информатика: учебник для 9 класса. — М.: БИНОМ. Лаборатория знаний, 2013.
- Семакин И. Г., Залогова Л. А., Русаков С. В., Шестакова Л. В. Информатика: учебник для 9 класса. — М.: БИНОМ. Лаборатория знаний, 2015. — Т. 3-е изд..
- Поляков К. Ю., Еремин Е. А. Информатика. 9 класс. — М.: БИНОМ. Лаборатория знаний, 2017.
- Угринович Н. Д. Информатика и ИКТ: учебник для 9 класса. — М.: БИНОМ. Лаборатория знаний, 2012. — Т. 6-е изд..
В общем, нашёл, что под Windows ограничение на 255 символов, а под Linux на 255 байт, и написал такой код для копирования файлов с переименованием (там в имени сохраняются координаты прямоугольиков, и их может быть много, не лучшее решение, но это не я придумал).
std::string filename = current_image->path().stem().string();
#if OS == LINUX
for (const auto& ch : filename)
if (!std::isalpha(ch) && !std::isdigit(ch) &&
ch != ' ' && ch != '.' &&ch != '-' && ch != '_')
{
QMessageBox::warning(
this, "Warning",
"Файл не будет сохранён, т.к. содержит недопустимые символы в "
"своём имени.\nДопустимые символы: латинские буквы, цифры, "
"пробел, точка, '-' и '_'."
);
goto filename_invalidity;
}
#endif
for (const auto& rect : rect_grabber->getRects())
{
std::string rect_data = "_["
+ std::to_string(rect.x()) + "," + std::to_string(rect.y()) + ","
+ std::to_string(rect.width()) + "," + std::to_string(rect.height()) + ","
+ rect.getType() + "]";
if (filename.size() + rect_data.size()
+ current_image->path().extension().string().size() <= 255)
{
filename += rect_data;
}
else
{
QMessageBox::warning(
this, "Warning",
"Имя файла превысило максимально допустимую длину (255 символов)."
" Часть данных разметки не будет сохранена в имени файла."
);
break;
}
}
filename += current_image->path().extension().string();
fs::copy(current_image->path(),fs::path{load_window->getOutDirPath()/filename});
}
Всё это падает сразу после вывода второго QMessageBox::warning, т.е. при сохранении с переименованием. Но сам алгоритм исключает ситуацию, что будет сохранено более 255 символов (включая расширение с точкой). Что не так?
Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 12 марта 2013;
проверки требуют 11 правок.
Данная таблица сравнивает основные и технические особенности для списка файловых систем. Пожалуйста, смотрите отдельные статьи о каждой файловой системе для получения дополнительной информации.
Содержание
- 1 Основная информация
- 2 Ограничения
- 3 Мета-данные
- 4 Особенности
- 5 Политики размещения и компоновки
- 6 См. также
- 7 Ссылки
- 7.1 Русскоязычные сайты
- 7.2 Зарубежные сайты
Основная информация[править | править исходный текст]
Файловая система | Создатель | Дата представления | Родная ОС или платформа |
---|---|---|---|
DECtape | DEC | 1964 | PDP-6 Monitor |
Level-D | DEC | 1968 | TOPS-10 |
George 2 | ICT (later ICL) | 1968 | George 2 |
RT-11 | DEC | 1970 | RT-11 |
V6FS | Bell Labs | 1972 | Version 6 Unix |
V7FS | Bell Labs | 1979 | Version 7 Unix |
Disk Operating System (GEC DOS) | GEC | 1973 | Core Operating System |
CP/M file system | Gary Kildall | 1974 | CP/M |
GEC DOS extended | GEC | 1977 | OS4000 |
FAT12 | Microsoft | 1980 | Microsoft Disk BASIC |
FAT16 | Microsoft | 1983 | MS-DOS 2.0 |
MFS | Apple | 1984 | Mac OS |
HFS | Apple | 1985 | Mac OS |
OFS[1] |
Metacomco для Commodore | 1985 | Amiga OS |
FAT32 | Microsoft | 1996 | Windows 95b[2] |
HPFS | IBM & Microsoft | 1988 | OS/2 |
NTFS | Microsoft, Gary Kimura, Tom Miller | 1993 | Windows NT |
HFS+ | Apple | 1998 | Mac OS |
FFS | Kirk McKusick | 1983 | 4.2BSD |
Amiga FFS | Commodore | 1987 | Amiga OS 1.3 |
SFS | John Hendrikx | 1998 | Amiga OS |
PFS (AFS) | Michiel Pelt для Fourth Level Developments | 1995 | Amiga OS |
PFS2 | GREat Effects Development | 1998 | Amiga OS |
PFS3 | GREat Effects Development | 1999 | Amiga OS |
UFS1 | Kirk McKusick | 1994 | 4.4BSD |
UFS2 | Kirk McKusick | 2002 | FreeBSD 5.0 |
NILFS | NTT | 2005 | Linux |
LFS | Margo Seltzer | 1993 | Berkeley Sprite |
ext2 | Rémy Card | 1993 | Linux |
ext3 | Stephen Tweedie | 1999 | Linux |
ext4 | Andrew Morton | 2006 | Linux |
ReiserFS | Namesys | 2001 | Linux |
Reiser4 | Namesys | 2004 | Linux |
XFS | SGI | 1994 | IRIX |
JFS | IBM | 1990 | AIX[3] |
JFS2 | IBM | 1999 | OS/2 WSeB |
Be File System | Be Inc., D. Giampaolo, C. Meurillon | 1996 | BeOS |
AdvFS | DEC | 1993 | Digital Unix |
NSS | Novell | 1998 | NetWare 5 |
NWFS | Novell | 1985 | NetWare 286 |
ODS-2 | DEC | 1979 | OpenVMS |
ODS-5 | DEC | 2003 | OpenVMS 8.0 |
UDF | ISO/ECMA/OSTA | 1995 | — |
VxFS | VERITAS | 1991 | SVR4.0 |
Fossil | Bell Labs | 2003 | Plan9 4 |
ZFS | Sun Microsystems | 2004 | Solaris |
btrfs | Oracle Corporation | 2007 | Linux |
exFAT | Microsoft | 2008 | Windows Vista SP1+ |
Файловая система | Создатель | Дата представления | Родная ОС или платформа |
- Примечания
- ↑ Metacomco выпустила так называемую «evolution» версию оригинальной файловой системы Amiga, реализованной первой Amiga Corporation (бывшая Hi-Toro) в 1982-83/85. По правде говоря, Metacomco сделала кашу из ранних ФС, убивших ее простую и легкую структуру. Сперва OFS называлась просто Amiga File System. Название изменили с появлением «новой» Fast File System, созданной в 1987 для той же платформы.
- ↑ Microsoft впервые представила FAT32 в Windows 95 OSR2 (OEM Service Release 2) и впоследствии в Windows 98.
- ↑ IBM представила JFS с начальным релизом AIX версии 3.1 в 1990 году. Эта файловая система сейчас называется JFS1. Новая JFS (сейчас называемая JFS2), базирующаяся на Linux‐портах, была впервые применена в OS/2 Warp Server for e-Business в 1999 году.
Ограничения[править | править исходный текст]
Максимальная длина имён файлов | Допустимые символы в названиях[1] | Максимальная длина пути файла | Максимальный размер файла | Максимальный размер тома[2] | |
---|---|---|---|---|---|
RT-11 | 6+3 символа в коде RADIX50 | A-Z, 0-9, $ . % <пробел> | 14 символов | 33,554,432 байт (65536 * 512) | 33,554,432 байт |
V6FS | 14 байт[3] | Любые символы, кроме NUL и /[4] | Нет установленных ограничений[5] | 8MiB[6] | 2TiB |
V7FS | 14 байт[3] | Любые символы, кроме NUL и /[4] | Нет установленных ограничений[5] | 1GiB[7] | 2TiB |
FAT12 | 8+3 символов (255 байт для VFAT)[3] | Любые символы ANSI (Unicode для VFAT), кроме NUL[3][4] | Нет установленных ограничений[5] | 32MiB | 1MiB — 32MiB |
FAT16 | 8+3 символов (255 байт для VFAT)[3] | Любые символы ANSI (Unicode для VFAT), кроме NUL,[3][4] | Нет установленных ограничений[5] | 2GiB | 16MiB — 2GiB |
MFS | 30 байт[3] | Любые символы, кроме NUL и :[4] | Нет установленных ограничений[5] | ? | ? |
HFS | 30 байт[3] | Любые символы, кроме NUL и :[4] | Нет установленных ограничений[5] | ? | ? |
FAT32 | 255 байт[3] | Любые символы Юникода, кроме NUL[3][4] | Нет установленных ограничений[5] | 4GiB | 512MiB — 8TiB[8] |
HPFS | 255 байт | Любые символы, кроме NUL[4] | Нет установленных ограничений[5] | 4GiB | 2TiB[9] |
NTFS | 255 символов | Любые символы Юникода, кроме «NUL» и «/» для POSIX или «NUL», «/», «\», «»», «*», «?», «<», «>», «|», «:» для Win32[10] | 32 767 символов Юникода; каждая компонента пути (каталог или имя файла) — до 255 символов[5] | 16 EiB[11] | 16 EiB[11] |
HFS+ | 255 символов[12] | Любые символы Юникода, кроме NUL[4][13] | ? | 8EiB | 8EiB |
FFS | 255 байт | Любые символы, кроме NUL[4] | Нет установленных ограничений[5] | 4GiB | 256TiB |
Amiga FFS | 30 байт | Любые символы, кроме NUL, / и : | Нет установленных ограничений[5] | 2GiB | 4GiB |
SFS | 107 байт | Любые символы, кроме NUL, / и : | Нет установленных ограничений[5] | 4GiB | 128GiB |
PFS3 | 31-106 байт[14] | Любые символы, кроме NUL, / и : | Нет установленных ограничений[5] | 108GiB | 2TiB |
UFS1 | 255 байт | Любые символы, кроме NUL[4] | Нет установленных ограничений[5] | 4GiB — 256TiB | 256TiB |
UFS2 | 255 байт | Любые символы, кроме NUL[4] | Нет установленных ограничений[5] | 512GiB — 32PiB | 1YiB |
ext2 | 255 байт | Любые символы, кроме NUL, /[4] | Нет установленных ограничений[5] | 16GiB — 2TiB[2] | 2TiB — 32TiB |
ext3 | 255 байт | Любые символы, кроме NUL, /[4] | Нет установленных ограничений[5] | 16GiB — 2TiB[2] | 2TiB — 32TiB |
ext4 | 255 байт | Любые символы, кроме NUL, /[4] | Нет установленных ограничений[5] | 16GiB — 16TiB[2] | 1 EiB |
ReiserFS | 4032 байт/255 символов | Любые символы, кроме NUL, /[4] | Нет установленных ограничений[5] | 8TiB[15] | 16TiB |
Reiser4 | ? | ? | Нет установленных ограничений[5] | 8TiB on x86 | ? |
XFS | 255 байт | Любые символы, кроме NUL[4] | Нет установленных ограничений[5] | 9EiB[16] | 9EiB[16] |
JFS | 255 байт | Любые символы, кроме NUL[4] | Нет установленных ограничений[5] | 8EiB | 512TiB — 4PiB |
JFS2 | 255 байт | Любые символы Юникода, кроме NUL | Нет установленных ограничений[5] | 4PiB | 32PiB |
Be File System | 255 байт | Любые символы, кроме NUL[4] | Нет установленных ограничений[5] | 12288 байт — 260GiB[17] | 256PiB — 2EiB |
AdvFS | 255 символов | Любые символы, кроме NUL[4] | Нет установленных ограничений[5] | 16TiB | 16TiB |
NSS | 256 символов | Depends on namespace used[18] | Ограничивается только возможностями клиента | 8TiB | 8TiB |
NWFS | 80 байт[19] | Depends on namespace used[18] | Нет установленных ограничений[5] | 4GiB | 1TiB |
ODS-5 | 236 байт[20] | ? | 4096 байт[21] | 1TiB | 1TiB |
VxFS | 255 байт | Любые символы, кроме NUL[4] | Нет установленных ограничений[5] | 16EiB | ? |
UDF | 255 байт | Любые символы Юникода, кроме NUL | 1023 байт[22] | 16EiB | ? |
ZFS | 255 байт | Любые символы Юникода, кроме NUL | Нет установленных ограничений[5] | 16EiB | 16EiB |
Btrfs | 255 байт | Любые символы Юникода, кроме NUL и / | ? | 16EiB | 16EiB |
exFAT | Неизвестно | Любые символы Юникода, кроме NUL | Нет установленных ограничений | 16EiB | 64 ZiB[23] в теории 512 TiB |
Максимальная длина имён файлов | Допустимые символы в названиях[1] | Максимальная длина пути файла | Максимальный размер файла | Максимальный размер тома[2] |
- Примечания
- ↑ 1 2 Это ограничения на структуры входа на-диске каталога непосредственно. Специфические Устанавливаемые драйверы Файловой системы могут разместить собственные ограничения на названия{имена} каталога и файл; и частность и операционные системы могут также разместить собственные ограничения, поперек всего файловых систем. MS DOS, Microsoft Windows, и OS/2 отвергают символы \ / : ? * » > < | и NUL в названии файлов и каталогов на протяжении всех файловых систем. Аналогично, версии операционной системы UNIX и Linux отвергают символы / и NUL.
- ↑ 1 2 3 4 5 Для файловых систем с переменным размером единицы размещения (блока/кластера) приведён диапазон размеров, показывающий максимальные размеры тома для минимально и максимально возможного размера единицы размещения файловой системы (напр., 512 байт и 128 КиБ для FAT — таков диапазон размера кластера, позволяемый структурами данных на диске, хотя некоторые драйверы устанавливаемых файловых систем и операционные системы не поддерживают размеры кластеров, большие 32 КиБ).
- ↑ 1 2 3 4 5 6 7 8 9 10 В Windows 95 появилась надстройка над FAT12 и FAT16, называемая VFAT. Она добавляет в указанные файловые системы поддержку длинных имён, до 255 символов и поддержку Unicode. При этом сама основная структура FAT12 и FAT16 не меняется, и может быть прочитана старыми версиями MS-DOS (с поддержкой только коротких имён формата 8.3). В FAT32 поддержка длинных имён имеется изначально. При запуске Windows 95 и Windows 98 в режиме MS-DOS поддержка длинных имён отсутствует, вне зависимости от применяемой файловой системы. В OS/2 длинные имена на FAT не поддерживаются (уточнить). Linux имеет чёткое разграничение на файловые системы FAT12/16 и VFAT. Если при монтировании раздела в Linux указан тип ФС «msdos», то будут поддерживаться только 8-разрядные имена формата 8.3 и не смогут содержать NUL (маркёр конца-каталога) или символ 229 (маркёр стёртого файла). Короткие имена также обычно не содержат символы нижнего регистра.
- ↑ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 В этих файловых системах элементы каталога с именами «.» и «..» имеют особенное значение. Элементы с этими именами не запрещены, и на самом деле существуют как обычные элементы каталога в структурах данных на диске. Однако, эти элементы должны обязательно присутствовать в каталоге и иметь вышеуказанные значения. Эти элементы автоматически создаются в каждом создаваемом каталоге и каталоги без них считаются испорченными
- ↑ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 Структурам не свойственны ограничения в пределах диска. Специфические драйверы файловых систем и операционные системы могут наложить собственные ограничения. MS DOS не поддерживает пути к файлам длиннее 260 байт для FAT12 и FAT16. Аналогичное ограничение в Windows NT 32767 байт для файловой системы NTFS.
- ↑ Действительный максимум был 8 847 360 байт, с 7 singly-indirect блоками и 1 doubly-indirect блоком; Вариант PWB/UNIX 1.0 использовал 8 singly-indirect блоков, достигая максимума в 524 288 байт или в половину MiB.
- ↑ Действительный максимум был 1 082 201 088 байт, с 10 direct блоками, 1 singly-indirect блоком, 1 doubly-indirect блоком, и 1 triply-indirect блоком. Версии 4.0BSD и 4.1BSD, а также System V использовали 1024-байтные блоки вместо 512-байтных, с максимумом в 4 311 812 608 байт или примерно 4 GiB.
- ↑ Большой раздел FAT32, будучи созданным, может работать нормально, но некоторые программы не позволяют создавать раздел FAT32 более 32GiB. К ним относится и программа установки Windows XP. Используйте команду FDISK с диска восстановления Windows ME (Emergency Boot Disk), для обхода этого ограничения.
- ↑ Это — предел структур «на-диске». Устанавливаемый драйвер Файловой системы HPFS для OS/2 использует высшие 5 битов номера сектора тома для его собственного использования, ограничивая размер тома до 64 ГБ.
- ↑ www.linux-ntfs.org — NTFS Documentation (single HTML file)
- ↑ 1 2 Это ограничение дисковых структур. драйвер NTFS для Windows NT ограничивает размер поддерживаемого тома до 256 TiB, а размер файла — до 16 TiB соответственно.
- ↑ HFS, устаревшая версия HFS+, поддерживает только 31‐символьные имена файлов; более старые приложения обычно не работают с именами такой длины.
- ↑ HFS+ поддерживает использование escape-последовательностей, чтобы работать с Unicode. Пользователи старого программного обеспечения могут увидеть escape-последовательности вместо символов.
- ↑ Однократно задаётся специальной программой setfnsize.
- ↑ ReiserFS теоретически может иметь размер файлов в 1 ЭиБ, но «предел в 8 ТиБ появился на данный момент в результате применения 32‐битной архитектуры распределения страничного кэша»[1]
- ↑ 1 2 XFS имеет ограничение в Linux 2.4 на 64 ТиБ размер файлов и 2 ТиБ размер файловой системы. Этого ограничения нет в системе IRIX.
- ↑ Сильно варьирует в зависимости от размера блока и фрагментации групп размещения блоков.
- ↑ 1 2 NSS позволяет файлам иметь множественные названия, в отдельном именном пространстве.
- ↑ Некоторые пространства имен имели меньшие ограничения по длине имени. В «LONG» был лимит в 80 байт, в «NTFS» 80 байт, в «NFS» 40 байт и в «DOS» подразумевались имена типа 8.3.
- ↑ Максимальная общая длина имени файла/расширения составляет 236 байт; некоторые компоненты имеют собственную максимальную длину в 255 байт.
- ↑ Максимальная длина имени пути — 4096 байтов, но предел на индивидуальных компонентах составляют в целом 1664 байта.
- ↑ Это ограничение может быть снято в более новых версиях.
- ↑ Значение вычислено на основании 64-разрядного количества секторов размером 4096 байт. Однако текущая спецификация exFAT 32-разрядная с наибольшим кластером в 25 бит, что даёт адресуемый объём около 128 PiB
Мета-данные[править | править исходный текст]
Запись владельца файла | Права файлов POSIX | Временные метки создания файла | Временные метки доступа/чтения | Временные метки изменений метаданных | Временные метки последнего архивирования | ACL | Метки безопасности/MAC | Расширенные атрибуты/Fork (filesystem)|Альтернативные потоки данных/вызовы | Контрольные суммы/ECC | |
---|---|---|---|---|---|---|---|---|---|---|
RT-11 | Нет | Нет | Нет | Да | Да | Нет | Нет | Нет | Нет | Нет |
V6FS | Да | Да | Нет | Да | Да | Нет | Нет | Нет | Нет | Нет |
V7FS | Да | Да | Нет | Да | Да | Нет | Нет | Нет | Нет | Нет |
FAT12 | Нет | Нет | Да | Да | Нет | Нет | Нет | Нет | Нет[1] | Нет |
FAT16 | Нет | Нет | Да | Да | Нет | Нет | Нет | Нет | Нет[1] | Нет |
FAT32 | Нет | Нет | Да | Да | Нет | Нет | Нет | Нет | Нет[1] | Нет |
HPFS | Да[2] | Нет | Да | Да | Нет | Нет | Нет | ? | Да | Нет |
NTFS | Да | Нет[3] | Да | Да | Да | Нет | Да | ? | Да | Нет |
HFS+ | Да | Да | Да | Да | Да | ? | Да | ? | Да | Нет |
FFS | Да | Да | Нет | Да | Да | Нет | Нет | Нет | Нет | Нет |
Amiga FFS | Нет | Нет | Да | Нет | Да | Нет | Нет | Нет | Да | Нет |
SFS | Нет | Нет | Да | Нет | Да | Нет | Нет | Нет | Да | Нет |
PFS3 | Нет | Нет | Да | Нет | Да | Нет | Нет | Нет | Да | Нет |
UFS1 | Да | Да | Нет | Да | Да | Нет | Да[4] | Да[4] | Нет[5] | Нет |
UFS2 | Да | Да | Да | Да | Да | Нет | Да[4] | Да[4] | Да | Нет |
LFS | Да | Да | Нет | Да | Да | Нет | Нет | Нет | Нет | Нет |
ext2 | Да | Да | Нет | Да | Да | Нет | Да[6] | Да[6] | Да | Нет |
ext3 | Да | Да | Нет | Да | Да | Нет | Да[6] | Да[6] | Да | Нет |
ext4 | Да | Да | Да | Да | Да | Нет | Да[6] | Да[6] | Да | Да |
ReiserFS | Да | Да | Нет | Да | Да | Нет | Да[6] | Да[6] | Да | Нет |
Reiser4 | Да | Да | Нет | Да | Да | Нет | Нет | Нет | Нет | Нет |
XFS | Да | Да | Нет | Да | Да | Нет | Да | Да[6] | Да | Нет |
JFS | Да | Да | Да | Да | Да | Нет | Да | Да | Да | Нет |
Be File System | Да | Да | Да | Нет | Нет | Нет | Нет | Нет | Да | Нет |
AdvFS | Да | Да | Нет | Да | Да | Нет | Да | Нет | Да | Нет |
NSS | Да | Да | Да[7] | Да[7] | Да | Да[7] | Да | ? | Да[8][9] | Нет |
NWFS | Да | ? | Да[7] | Да[7] | Да | Да[7] | Да | ? | Да[8][10] | Нет |
ODS-5 | Да | Да | Да | ? | ? | Да | Да | ? | Да[11] | Нет |
VxFS | Да | Да | Да | Да | Да | Нет | Да | ? | Да[6] | Нет |
UDF | Да | Да | Да | Да | Да | Нет | Да | Нет | Да | Нет |
Fossil | Да | Да[12] | Нет | Да | Да | Нет | Нет | Нет | Нет | Нет |
ZFS | Да | Да | Да | Да | Да | Да | Да | Да | Да[13] | Да |
exFAT | Нет | Нет | Неизвестно | Неизвестно | Неизвестно | Неизвестно | Неизвестно | Неизвестно | Неизвестно | Частично |
Запись владельца файла | Права файлов POSIX | Временные метки создания файла | Временные метки доступа/чтения | Временные метки изменений метаданных | Временные метки последнего архивирования | ACL | Метки безопасности/MAC | Расширенные атрибуты/Fork (filesystem)|Альтернативные потоки данных/вызовы | Контрольные суммы/ECC |
- Примечания
- ↑ 1 2 3 Драйверы FAT12 и FAT16 в OS/2 и Windows NT поддерживают расширенные атрибуты (используя псевдофайл «EA DATA. SF», чтобы занять для них кластеры для них). Драйверы для других операционных систем их не поддерживают.
- ↑ F-node содержит поле идентификатора пользователя. Это не используется нигде, кроме OS/2 Warp Server.
- ↑ Списки контроля доступа NTFS могут описывать любой способ доступа в стиле POSIX, но использование POSIX-подобного интерфейса не поддерживаются без дополнения «Сервисов для UNIX» или Cygwin.
- ↑ 1 2 3 4 Списки контроля доступа и Мак-метки наслоены наверху расширенных атрибутов.
- ↑ Некоторые операционные системы осуществили расширенные атрибуты как слой по UFS1 с параллельным поддерживанием файлов (например, FreeBSD 4.x).
- ↑ 1 2 3 4 5 6 7 8 9 10 Некоторые устанавливаемые драйверы файловой систем и операционные системы не могут поддержать расширенные атрибуты, списки контроля доступа или защищённые метки на этих файловых системах. Ядра Linux до 2.6.x могут или пропускать поддержку их в целом или требовать патча.
- ↑ 1 2 3 4 5 6 Местное время, смещение по часовым поясам/UTC, и дата получено из параметров настройки времени ссылок/single timesync source in the NDS tree.
- ↑ 1 2 Novell называет эту особенность «множественные потоки данных». В опубликованных спецификациях говорится, что NWFS разрешает до 16 атрибутов и 10 потоков данных, и NSS разрешает неограниченные количества для обоих.
- ↑ Некоторые метаданные файлов и каталогов сохранены на сервере Netware независимо от того, установлены ли Сервисы директорий или нет, подобно дате/времени создания, размеру файла, состояния чистки, и так далее; и некоторые метаданные файлов и каталогов сохранённые в NDS/eDirectory, подобно разрешению доступа, монопольному использованию, и т. д.
- ↑ Ошибка в сносках?: Неверный тег
<ref>
; для сносокref29
не указан текст - ↑ Атрибуты сервисов управлениев записями (RMS) включают тип и размер записи среди многих других.
- ↑ Атрибуты доступа файлов в 9P являются вариантом традиционных атрибутов доступа Unix с незначительными отличиями, например suid bit заменён новым атрибутом — эксклюзивный доступ (англ. exclusive access).
- ↑ «Расширенные атрибуты» Solaris’а на самом деле развитая версия альтернативных потоков данных, как в Solaris UFS, так и в ZFS.
Особенности[править | править исходный текст]
Жёсткие ссылки | Символьные ссылки | Журналирование блоков или | Журналирование только мета-данных | Чувствительно к регистру | Сохранение регистра символов | Лог изменений файлов | Снапшоты | XIP | |
---|---|---|---|---|---|---|---|---|---|
RT-11 | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
V6FS | Да | Нет | Нет | Нет | Да | Да | Нет | Нет | Нет |
V7FS | Да | Нет[1] | Нет | Нет | Да | Да | Нет | Нет | Нет |
FAT12 | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет[2] | Нет |
FAT16 | Нет | Нет | Нет | Нет | Нет | Частично | Нет | Нет[2] | Нет |
FAT32 | Нет | Нет | Нет | Нет | Нет | Частично | Нет | Нет[2] | Нет |
HPFS | Нет | Нет | Нет | Нет | Нет | Да | Нет | Неизвестно | Нет |
NTFS | Да | Да[3] | Да[4] | Да | Да[5] | Да | Да | Да[6] | Неизвестно |
HFS+ | Частично | Да | Нет | Да[7] | Да[8] | Да | Нет | Неизвестно | Нет |
FFS | Да | Да | Нет | Нет | Да | Да | Нет | Нет | Нет |
UFS1 | Да | Да | Нет | Нет | Да | Да | Нет | Нет | Нет |
UFS2 | Да | Да | Нет | Нет | Да | Да | Нет | Да | Неизвестно |
LFS | Да | Да | Да[9] | Нет | Да | Да | Нет | Да | Нет |
ext2 | Да | Да | Нет | Нет | Да | Да | Нет | Нет | Неизвестно |
ext3 | Да | Да | Да[10] | Да | Да | Да | Нет | Нет | Неизвестно |
ext4 | Да | Да | Да[10] | Да | Да | Да | Нет | Нет | Неизвестно |
ReiserFS | Да | Да | Да[11] | Да | Да | Да | Нет | Нет | Неизвестно |
Reiser4 | Да | Да | Да | Нет | Да | Да | Нет | Неизвестно | Неизвестно |
XFS | Да | Да | Нет | Да | Да[12] | Да | Да | Да | Неизвестно |
JFS | Да | Да | Нет | Да | Да[13] | Да | Нет | Неизвестно | Неизвестно |
Be File System | Да | Да | Нет | Да | Да | Да | Неизвестно | Неизвестно | Нет |
NSS | Да | Да | Неизвестно | Да | Да[14] | Да[14] | Да[15] | Да | Нет |
NWFS | Да[16] | Да[16] | Нет | Нет | Да[14] | Да[14] | Да[15] | Неизвестно | Нет |
ODS-2 | Да | Да[17] | Нет | Да | Нет | Нет | Да | Да | Нет |
ODS-5 | Да | Да[17] | Нет | Да | Нет | Да | Да | Да | Неизвестно |
UDF | Да | Да | Да[9] | Да[9] | Да | Да | Нет | Нет | Да |
VxFS | Да | Да | Да | Нет | Да | Да | Да | Нет | Неизвестно |
Fossil | Нет | Нет | Нет | Нет | Да | Да | Да | Да | Нет |
ZFS | Да | Да | Да[18] | Нет[18] | Да | Да | Нет | Да | Неизвестно |
exFAT | Нет | Нет | Неизвестно | Неизвестно | Неизвестно | Неизвестно | Неизвестно | Неизвестно | Неизвестно |
Жёсткие ссылки | Символьные ссылки | Журналирование блоков или | Журналирование только мета-данных | Чувствительно к регистру | Сохранение регистра символов | Лог изменеий файлов | Снапшоты | XIP |
- Примечания
- ↑ System V Release 4, и некоторые другие Unix-системы, модифицировали свои версии файловой системы Version 7 Unix для поддержки символических ссылок, хотя оригинальная версия такой возможностью не обладала.
- ↑ Ошибка в сносках?: Неверный тег
<ref>
; для сносокref60
не указан текст - ↑ NTFS 3.0 (Windows NT 5.0) и выше может создавать связывания, которые позволяют монтировать отдельные каталоги (но не файлы!) в любое место дерева каталогов локально управляемого диска. Связывания реализованы через так называемые reparse points, которые позволяют расширить обычный процесс разрешения файловых имён гибким способом.
- ↑ Журналирование собственно данных, в отличие от метаданных (что было всегда), появилось в Windows Vista и называется TxF. Эта возможность, помимо повышения устойчивости к сбоям, поддерживает откаты транзакций на файлах, а также объединение операций с файлами, реестрами и базами данных в одну ACID транзакцию.
- ↑ http://support.microsoft.com/kb/100625 — В рамках POSIX-приложений да, в рамках Win32-приложений нет.
- ↑ Снапшоты поддерживаются не самой NTFS, которая сама по себе не имеет ровно никаких средств их поддержки в своих метаданных, а нижележащим драйвером VolSnap.sys, и потому не зависят от типа FS и поддерживаются для FAT. Тем не менее, системные данные снапшота могут храниться только на NTFS томе, потому при снапшоте FAT тома его системные данные хранятся на другом томе.
- ↑ Журналирование только метаданных было представлено в драйвере HFS+ Mac OS 10.2.2; журналирование по умолчанию было включено в Mac OS 10.3 и более поздних.
- ↑ Отключено по умолчанию.
- ↑ 1 2 3 UDF и LFS (log-structured file system) являются файловыми системами с журнальным структурированием и ведут себя как будто вся файловая система является журналом. Неверно: UDF может использоваться в таком режиме, но это не обязательно
- ↑ 1 2 По умолчанию отключено.
- ↑ Полное журналирование блоков в ReiserFS было добавлено в Linux 2.6.8.
- ↑ В ОС IRIX возможно необязательное игнорирование регистра букв имён файлов в XFS.
- ↑ Некоторые драйверы устанавливаемых файловых систем и операционные системы могут не поддерживать регистрозависимость JFS. В частности, OS/2 вообще не поддерживает, а в Linux существует опция монтирования, отключающая регистрозависимость.
- ↑ 1 2 3 4 Чувствительность к регистру/Сохранение зависит от клиента. Windows, DOS, и клиенты OS/2 не замечают/сохраняют различия между разным регистром, тогда как клиенты, обращающиеся через NFS или AFP могут.
- ↑ 1 2 Логи и время изменения файла и другие метаданные файловой системы — часть обширного набора программ поддержки аудитинга встроенного в NDS/eDirectory — NSure Audit. (Filesystem Events tracked by NSure)
- ↑ 1 2 Доступно только в пространстве имён «NFS».
- ↑ 1 2 Это передаётся как «алиасы».
- ↑ 1 2 ZFS — транзакционная файловая система, использующая семантику copy-on-write, гарантирующую всегда корректное состояние данных на диске без использования традиционного журнала. Однако она также использует специальный журнал для увеличения производительности при запросах на синхронную запись.
Политики размещения и компоновки[править | править исходный текст]
Частичная (Хвостовая) упаковка | Прозрачная компрессия | Шифрование | Перераспределение блоков | Распределение на лету | Экстент | Переменный размер блоков[1] | |
---|---|---|---|---|---|---|---|
V6FS | Нет | Нет | Неизвестно | Нет | Нет | Нет | Нет |
V7FS | Нет | Нет | Неизвестно | Нет | Нет | Нет | Нет |
FAT12 | Нет | Нет[2] | Неизвестно | Нет | Нет | Нет | Нет |
FAT16 | Нет | Нет[2] | Неизвестно | Нет | Нет | Нет | Нет |
FAT32 | Нет | Нет[2] | Неизвестно | Нет | Нет | Нет | Нет |
HPFS | Нет | Нет | Неизвестно | Нет | Нет | Да | Нет |
NTFS | Нет | Да | Да (ESF начиная с NTFS 3.0) | Частично | Нет | Да | Нет |
HFS+ | Нет | Нет | Неизвестно | Неизвестно | Нет | Да | Нет |
FFS | Нет | Нет | Неизвестно | 8:1[3] | Нет | Нет | Нет |
UFS1 | Нет | Нет | Неизвестно | 8:1[3] | Нет | Нет | Нет |
UFS2 | Нет | Нет | Неизвестно | 8:1[3] | Нет | Нет | Да |
LFS | Нет | Нет | Неизвестно | 8:1[3] | Нет | Нет | Нет |
ext2 | Нет | Нет[4] | Неизвестно | Нет[5] | Нет | Нет | Нет |
ext3 | Нет | Нет | Неизвестно | Нет[5] | Нет | Нет | Нет |
ext4 | Неизвестно | Нет | Нет | Неизвестно | Неизвестно | Да | Нет |
ReiserFS | Да | Нет | Неизвестно | Нет | Нет | Нет | Нет |
Reiser4 | Да | Да[6] | Да (прозрачное, плагин)[6] | Нет | Да | Да[7] | Нет |
XFS | Нет | Нет | Неизвестно | Нет | Да | Да | Нет |
JFS | Нет | Да[источник не указан 1855 дней] | Неизвестно | Да | Нет | Да | Нет |
Be File System | Нет | Нет | Неизвестно | Неизвестно | Нет | Нет | Неизвестно |
NSS | Нет | Да | Да (зашифрованные тома) | Нет | Нет | Да | Нет |
NWFS | Нет | Да | Неизвестно | Да[8] | Нет | Нет | Нет |
ODS-5 | Нет | Нет | Неизвестно | Нет | Нет | Да | Нет |
VxFS | Нет | Нет | Неизвестно | Неизвестно | Нет | Да | Нет |
UDF | Нет | Нет | Неизвестно | Нет | Неизвестно[9] | Да | Нет |
Fossil | Нет | Да | Неизвестно | Нет | Нет | Нет | Нет |
ZFS | Нет | Да | Да (c версии ZFS Pool Version 30) | Неизвестно | Неизвестно | Нет | Да |
exFAT | Неизвестно | Неизвестно | Неизвестно | Неизвестно | Неизвестно | Неизвестно | Неизвестно |
Частичная (Хвостовая) упаковка | Прозрачная компрессия | Шифрование | Перераспределение блоков | Распределение на лету | Экстент | Переменный размер блоков[1] |
- Примечания
- ↑ 1 2 Переменный размер блока относится к системам, поддерживающим переменную длину блока пофайлово. (Аналогично extent, но это несколько иная реализация.) В настоящий момент UFS2 поддерживает такой вариант в режиме только для чтения.
- ↑ 1 2 3 DoubleSpace в DOS 6, и DriveSpace в Windows 95 и Windows 98 предоставлял схемы сжатия данных для FAT; в данное время не поддерживается Microsoft.
- ↑ 1 2 3 4 Так же поддерживаются и другие варианты соотношений блок: фрагмент; Большинство реализаций рекомендуют соотношение 8:1.
- ↑ e2compr, набор патчей реализующих поблочное сжатие для ext2, доступен с 1997, но его никогда не включали в основное ядро Linux.
- ↑ 1 2 В ext2 и ext3 предполагалась поддержка фрагментов, однако она так и не была реализована.
- ↑ 1 2 Reiser4 включает сжатие данных, но это не представлено в VFS API. Reiser4 поддерживает прозрачное сжатие и шифрование с плагином cryptcompress который идёт в комплекте с версией 4.1.
- ↑ В «расширенном» режиме.
- ↑ Подвыделение блоков делит устройство хранения на блоки от 4 KiB до 64 KiB (обычно 8 KiB), и если блок не используется целиком, остаток снова делится на 512-байтные подблоки для других файлов, обычно небольшого размера.
- ↑ Присутствует в зависимости от реализации UDF.
См. также[править | править исходный текст]
- Список файловых систем
- Хронология операционных систем
- Сравнение дистрибутивов Linux
Ссылки[править | править исходный текст]
Русскоязычные сайты[править | править исходный текст]
- Файловые системы @ dmoz.org
- Современные файловые системы
- Сравнение файловых систем (FAT16/32 и NTFS)
Зарубежные сайты[править | править исходный текст]
- Disc and volume size limits (англ.)
- Attribute — $EA_INFORMATION (0xD0) (англ.)
- Attribute — $EA (0xE0) (англ.)
- Attribute — $STANDARD_INFORMATION (0x10) (англ.)
- Local Filesystems for Windows (англ.)
- Understanding File-Size Limits on NTFS and FAT (англ.)
- Benchmarking Filesystems Part II using kernel 2.6, by Justin Piszcz, Linux Gazette 122, January 2006 (англ.)
- Linux File System Benchmarks v2.6 kernel with a stress on CPU usage (англ.)
- Interview With the People Behind JFS, ReiserFS & XFS (англ.)
- Overview of some filesystems (outdated) (англ.)
- Linux large file support (outdated) (англ.)
- Sparse files support (outdated) (англ.)
- Benchmarking Filesystems (outdated) by Justin Piszcz, Linux Gazette 102, May 2004 (англ.)
- Journaled Filesystem Benchmarks (outdated): A comparison of ReiserFS, XFS, JFS, ext3 & ext2 (англ.)
- Journal File System Performance (outdated): ReiserFS, JFS, and Ext3FS show their merits on a fast RAID appliance (англ.)
- IOzone Filesystem Benchmark (англ.) — Средство тестирования производительности ФС.