Длинные имена файлов¶
Длинные имена файлов (Long File Names, LFN) — это механизм, позволяющий файловым системам хранить и обрабатывать имена файлов и каталогов, длина которых превышает традиционное ограничение в 8 символов для имени и 3 символа для расширения (формат 8.3). В современных операционных системах длинные имена файлов стали стандартом, обеспечивающим удобство пользователя за счёт использования осмысленных, описательных названий, включающих пробелы, строчные и заглавные буквы, а также множество специальных символов.
¶История
¶Ограничения ранних файловых систем
Первые массовые файловые системы, такие как FAT12, FAT16 и FAT32, разработанные для операционных систем MS-DOS и ранних версий Windows, использовали формат имени 8.3. Это ограничение было связано с архитектурными особенностями и необходимостью экономии памяти. Имя файла могло содержать не более 8 символов, затем точка и не более 3 символов расширения. Допускались только заглавные буквы латинского алфавита, цифры и некоторые символы (например, подчёркивание). Пробелы и строчные буквы были запрещены. Это создавало серьёзные неудобства, так как пользователи вынуждены были придумывать сокращённые, часто неинформативные имена.
¶Появление LFN в Windows 95
Ключевым этапом в популяризации длинных имён файлов стал выход операционной системы Microsoft Windows 95 в 1995 году. В ней была реализована поддержка LFN для файловой системы FAT16 (а затем и FAT32) через специальное расширение — VFAT (Virtual FAT). Механизм VFAT использовал несколько последовательных записей в каталоге для хранения имени, длина которого могла достигать 255 символов. Для обратной совместимости со старыми программами, не поддерживающими LFN, система автоматически генерировала для каждого файла короткое имя в формате 8.3 (например, ДЛИННО~1.TXT). Это позволило новым приложениям работать с длинными именами, а старым — не терять доступа к файлам.
¶Развитие в NTFS и других системах
С появлением файловой системы NTFS (New Technology File System) в Windows NT 3.1 (1993) и её последующих версиях, поддержка длинных имён файлов стала нативной. NTFS изначально проектировалась для работы с именами длиной до 255 символов (в кодировке Unicode), что позволяло использовать буквы национальных алфавитов, включая кириллицу. В этой системе отсутствует необходимость в автоматической генерации коротких имён 8.3, хотя для совместимости со старыми приложениями эта функция может быть включена.
В Unix-подобных операционных системах (Linux, macOS) файловые системы, такие как ext4, XFS, APFS, также поддерживают длинные имена. В Linux максимальная длина имени файла обычно составляет 255 байт (не символов), что в зависимости от кодировки может быть меньше 255 символов (например, для символов UTF-8, занимающих несколько байт). В macOS (APFS) максимальная длина имени — 255 символов Unicode.
¶Технические аспекты
¶Максимальная длина
Стандартная максимальная длина имени файла или каталога в большинстве современных файловых систем (FAT32, NTFS, ext4, APFS) составляет 255 символов (или байт в зависимости от реализации). Однако полный путь к файлу (включая букву диска, каталоги и имя файла) имеет более строгое ограничение. В Windows максимальная длина полного пути составляет 260 символов (константа MAX_PATH). Начиная с Windows 10 версии 1607, это ограничение может быть снято для некоторых приложений путём включения поддержки длинных путей (до 32767 символов) через групповые политики или реестр. В Linux и macOS ограничение на длину полного пути обычно составляет 4096 символов (константа PATH_MAX).
¶Допустимые символы
В Windows (NTFS, FAT32) в имени файла запрещены следующие символы: < > : " / \ | ? * и нулевой символ (ASCII 0). Также нельзя использовать зарезервированные имена устройств, такие как CON, PRN, AUX, NUL, COM1–COM9, LPT1–LPT9. В Unix-подобных системах (Linux, macOS) запрещены только символы / (разделитель каталогов) и нулевой символ. Это делает имена файлов в Linux более гибкими, но также может приводить к проблемам совместимости при переносе файлов между системами.
¶Кодировка
В Windows длинные имена файлов хранятся в кодировке UTF-16 (Unicode), что позволяет использовать символы практически всех языков мира. В Linux и macOS имена файлов хранятся в виде последовательности байт, обычно в кодировке UTF-8, что также обеспечивает поддержку национальных алфавитов. Различия в кодировке могут приводить к проблемам с отображением имён при переносе файлов между разными операционными системами.
¶Преимущества и недостатки
¶Преимущества
- Удобство для пользователя: возможность давать файлам осмысленные, описательные имена, содержащие пробелы и строчные буквы (например,
Отчёт_за_2023_год.docxвместоOTCHET~1.DOC). - Поддержка национальных языков: использование букв кириллицы, иероглифов и других символов.
- Улучшенная организация: длинные имена позволяют создавать более информативные иерархии каталогов.
¶Недостатки
- Проблемы совместимости: старые программы, утилиты и скрипты, написанные для работы с короткими именами, могут некорректно обрабатывать длинные имена, особенно содержащие пробелы или нелатинские символы.
- Сложность в командной строке: работа с длинными именами в командной строке (CMD, PowerShell, bash) требует использования кавычек или экранирования пробелов.
- Потенциальные проблемы с резервным копированием: некоторые старые системы резервного копирования могут не поддерживать длинные имена или пути, что приводит к потере данных.
- Ограничения в веб-среде: при загрузке файлов на веб-серверы или в облачные хранилища могут быть свои ограничения на длину имени, что требует переименования.
¶Применение
Длинные имена файлов используются повсеместно во всех современных операционных системах и файловых системах. Они являются основой для организации файлов в графических интерфейсах, таких как Проводник Windows, Finder в macOS и файловые менеджеры в Linux. Без них невозможно было бы комфортное использование мультимедийных файлов (например, Мой_отпуск_на_море_2024.mp4), документов с длинными названиями, проектов в системах контроля версий (Git) и баз данных.
¶Интересные факты
- В Windows 95 длинные имена файлов стали одной из самых заметных и рекламируемых функций, наряду с новым графическим интерфейсом.
- Механизм VFAT, обеспечивающий поддержку LFN в FAT16, был разработан инженером Microsoft Марком Збиковски (Mark Zbikowski).
- В некоторых старых программах, не поддерживающих LFN, при попытке открыть файл с длинным именем отображалось его короткое имя 8.3, что могло приводить к путанице.
- В Linux и macOS имена файлов чувствительны к регистру (
File.txtиfile.txt— это разные файлы), в то время как в Windows — нет. Это может вызывать проблемы при переносе файлов между системами.
¶Источники
- Microsoft Docs. "Naming Files, Paths, and Namespaces" (Windows).
- Microsoft Docs. "File Systems" (Windows).
- Wikipedia. "Long filename" (английская версия).
- The Linux Kernel documentation. "Filesystems" (ext4).
- Apple Developer Documentation. "File System Basics" (APFS).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →

