Систем датотека мобилног уређаја: шта је то, структура директоријума и како ради

Аутор: IT Sectr Објављено: 2026-03-13 Време читања: 11 мин

Систем датотека мобилног уређаја је начин организације, складиштења и именовања података на флеш меморији. Према Android Developers, 2026, мобилни оперативни системи користе хијерархијску структуру директоријума, где свака апликација ради у изолованом сендбоксу. Таква архитектура спречава неовлашћени приступ подацима и обезбеђује стабилан рад система при истовременом покретању више апликација.

Главне тачке

  • Систем датотека одређује како су подаци организовани, индексирани и заштићени на уређају
  • Android користи партиције /data, /system и /sdcard са различитим правима приступа и системима датотека
  • iOS ради са APFS и Sandbox контејнерима, где је свака апликација изолована на нивоу језгра
  • EXT4 и F2FS су главни системи датотека на Android-у, APFS на iOS-у, exFAT на SD картицама
  • Права приступа Linux (rwx) на Android-у и Sandbox профили на iOS-у управљају које датотеке апликација може да чита и мења

Шта је систем датотека мобилног уређаја?

Систем датотека је софтверска компонента оперативног система која управља тиме како се подаци записују, читају и организују на физичком медијуму. На мобилним уређајима систем датотека обавља критично важне функције: управљање простором флеш меморије, контролу приступа датотекама на основу дозвола, евидентирање промена за опоравак након отказа и оптимизацију уписа узимајући у обзир карактеристике NAND флеш меморије.

За разлику од десктоп оперативних система, мобилни системи датотека се пројектују узимајући у обзир ограничен ресурс циклуса преписивања флеш меморије. NAND ћелије издржавају ограничен број операција брисања — од 3 000 до 10 000 циклуса за TLC и MLC меморију респективно. Да би се продужио век трајања уређаја за складиштење, системи датотека примењују механизме wear leveling (изједначавање хабања) и TRIM команде. F2FS, коју је Samsung развио специјално за флеш меморију, узима у обзир геометрију NAND низа и поставља податке тако да се минимизира фрагментација и број операција брисања блокова.

Савремени мобилни уређаји користе комбинацију више система датотека. Интерна меморија (партиција /data) се форматира у EXT4 или F2FS на Android-у и APFS на iOS-у. SD картице традиционално користе exFAT за подршку датотекама већим од 4 GB или FAT32 за максималну компатибилност. Партиција /system на Android-у се често монтира само за читање и користи EXT4 или EROFS (Enhanced Read-Only File System) — компресовани систем датотека који је развио Huawei за смањење величине системске партиције.

Структура директоријума на Android-у

Хијерархија директоријума Android-а се заснива на Linux структури са кореном у /. Свака партиција има свој систем датотека, права приступа и намену. Апликација може приступити само ограниченом скупу директоријума — остали су заштићени root правима.

ПутањаПартицијаСистем датотекаПриступ за апликацију
/dataUserdataF2FS / EXT4Само свој сендбокс
/systemSystemEROFS / EXT4Само читање (root)
/sdcardExternalexFAT / FAT32Уз дозволу
/cacheCacheEXT4Само root
/vendorVendorEROFS / EXT4Само читање (root)

Партиција /data и сендбокс апликација

Партиција /data је главна партиција за складиштење корисничких података, инсталираних апликација и њихових подешавања. Свака апликација добија сопствени директоријум на путањи /data/data/<package_name>/. Унутар овог директоријума систем аутоматски креира поддиректоријуме: files/ за датотеке апликације, cache/ за привремене датотеке, databases/ за SQLite базе података, shared_prefs/ за SharedPreferences. Права приступа овом директоријуму се постављају приликом инсталације апликације и не могу се мењати без root приступа. Партиција /data се форматира у F2FS на већини савремених уређаја, што обезбеђује до 40% већу брзину случајног уписа у поређењу са EXT4.

Партиција /system и системске компоненте

Партиција /system садржи оперативни систем, системске апликације и библиотеке. Ова партиција се монтира само за читање како би се спречила случајна или злонамерна измена системских датотека. На уређајима са Android 10+ и Project Treble, партиција /system је динамичка и може се ажурирати путем OTA пакета без потребе за комплетним флешовањем. За апликације, партиција /system је недоступна — покушај уписа ће изазвати изузетак SecurityException. Међутим, апликације могу читати неке датотеке из /system, на пример системске фонтове и конфигурационе датотеке, ако имају одговарајуће дозволе.

Тачка монтирања /sdcard

Тачка монтирања /sdcard је симболичка веза ка партицији емулованог или физичког спољашњег складишта. На уређајима без SD картице, /sdcard указује на подпартицију унутар /data која је издвојена за заједнички приступ. Ова партиција је видљива кориснику када се уређај повеже са рачунаром путем MTP протокола. Апликације добијају приступ /sdcard-у кроз дозволе READ_EXTERNAL_STORAGE и WRITE_EXTERNAL_STORAGE, а од Android 10 — кроз Scoped Storage коришћењем MediaStore API-ја. Величина /sdcard-а обично износи 60–80% укупног обима флеш меморије уређаја, а остатак је резервисан за партицију /data.

Структура директоријума на iOS-у

На iOS-у систем датотека је организован кроз Sandbox контејнере апликација. Свака апликација добија изоловани директоријум, чији је приступ ограничен на нивоу XNU језгра. Корисничка партиција користи систем датотека APFS (Apple File System), представљен у iOS 10.3. APFS подржава снимке (snapshots), клонирање датотека и шифровање на нивоу датотека, што га чини оптималним за мобилне уређаје.

Стандардни директоријуми Sandbox контејнера

Sandbox контејнер iOS-а укључује четири главна директоријума: Documents, Library, tmp и SystemData. Сваки директоријум има своју политику резервног копирања, период чувања података и ниво приступа. Documents се аутоматски укључује у резервно копирање iCloud и iTunes. Library садржи поддиректоријуме Caches (не прави се резервна копија), Preferences (прави се резервна копија) и Application Support (прави се резервна копија). Директоријум tmp је намењен привременим датотекама — iOS их може обрисати при недостатку простора и не укључује се у резервно копирање. SystemData користи сам систем и недоступан је апликацији путем стандардних API-ја.

swift
let fm = FileManager.default

let documents = fm.urls(
    for: .documentDirectory,
    in: .userDomainMask
).first!

let caches = fm.urls(
    for: .cachesDirectory,
    in: .userDomainMask
).first!

let appSupport = fm.urls(
    for: .applicationSupportDirectory,
    in: .userDomainMask
).first!

Сваки директоријум Sandbox контејнера има сопствену класу заштите (protection class). iOS подржава четири класе: Complete Protection (датотека недоступна када је уређај закључан), Protected Unless Open (већ отворене датотеке су доступне при закључавању), Protected Until First User Authentication (датотеке доступне након првог откључавања) и No Protection (датотеке увек доступне након покретања уређаја). Подразумевано, све датотеке у Documents и Library добијају класу Complete Protection, што гарантује максималну заштиту корисничких података. Приликом креирања датотеке може се експлицитно навести друга класа заштите ако позадинска апликација треба да има приступ подацима када је уређај закључан.

Права приступа и безбедност система датотека

Управљање приступом датотекама на мобилним уређајима је кључна разлика између Android-а и iOS-а. Android користи класични Linux модел права приступа (читање, писање, извршавање) са проширењима за изолацију апликација. iOS примењује строжи Sandbox модел, где свака апликација ради у изолованом контејнеру и нема приступ датотекама других апликација без посебних механизама.

Дозволе на Android-у

На Android-у свака апликација се покреће са посебним UID (User ID). Све датотеке које апликација креира у свом сендбоксу припадају овом UID-у и нису видљиве другим апликацијама. За приступ заједничким директоријумима (спољашња меморија), апликација мора да затражи дозволе READ_EXTERNAL_STORAGE и WRITE_EXTERNAL_STORAGE. Од Android 11, дозволе се морају тражити током извршавања, а апликација са targetSdkVersion 30+ за приступ датотекама других апликација мора користити SAF. Кршење модела дозвола доводи до SecurityException, који се обрађује стандардним try-catch блоком. Google Play аутоматски проверава усклађеност апликације са политиком дозвола пре објављивања.

kotlin
if (ContextCompat.checkSelfPermission(
    context,
    Manifest.permission.READ_EXTERNAL_STORAGE
) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(
        activity,
        arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE),
        REQUEST_CODE
    )
}

Sandbox на iOS-у и Keychain

iOS Sandbox је имплементиран на нивоу XNU језгра и не дозвољава апликацији да изађе из свог контејнера. Чак и ако апликација добије приступ URI-ју спољашње датотеке путем Document Picker-а, оперативни систем креира привремену копију у контејнеру апликације уместо да обезбеди директан приступ оригиналу. За размену датотека између апликација iOS користи механизме Share Sheet и UIActivityViewController, који копирају датотеку из контејнера једне апликације у контејнер друге. За безбедно складиштење акредитива (токени, лозинке, кључеви) iOS пружа Keychain — шифровано складиште доступно систему на нивоу језгра. Keychain није део Sandbox контејнера и управља га посебан демон securityd, што обезбеђује додатни ниво заштите чак и у случају компромитовања апликације.

Карактеристике система датотека: EXT4, APFS, F2FS

Избор система датотека директно утиче на перформансе и поузданост складиштења података. Сваки систем датотека има своју архитектуру, оптимизације и ограничења. Програмеру је корисно да разуме ове разлике како би предвидео понашање апликације на различитим уређајима.

  • EXT4 — стандардни Linux систем датотека са журналисањем, подршком за датотеке до 16 TB и волумене до 1 EB. Користи се на Android-у као главни пре увођења F2FS. Обезбеђује поузданост захваљујући журналу, али је инфериоран у односу на F2FS по брзини случајног уписа због потребе за ажурирањем инода и битмапа блокова при свакој операцији
  • F2FS — систем датотека који је Samsung развио 2012. године специјално за NAND флеш меморију. Узима у обзир геометрију флеш низа, користи лог-структуирану архитектуру и обезбеђује 25–40% веће перформансе случајног уписа у поређењу са EXT4. Од Android 11, F2FS препоручује Google као главни систем датотека за партицију /data
  • APFS — Apple-ов систем датотека, представљен 2017. године. Подржава снимке, клонирање датотека (copy-on-write), шифровање на нивоу датотека и строгу контролу интегритета података путем контролних сума. APFS је оптимизован за SSD и користи TRIM команде за одржавање перформанси током целог века трајања уређаја за складиштење
  • exFAT — Microsoft-ов систем датотека, који се користи на SD картицама и USB дисковима. Подржава датотеке веће од 4 GB и волумене до 128 PB. Нема журналисање, тако да изненадни прекид напајања може довести до оштећења података. Препоручује се за преносиве медије, али не за системске партиције

Приликом развоја апликација узмите у обзир да различити системи датотека имају различита ограничења дужине имена датотеке (255 бајтова за EXT4 и F2FS, 255 Unicode знакова за APFS), максималну величину датотеке и подршку за специјалне знакове. На пример, APFS дозвољава Unicode знакове у именима датотека, укључујући емоџије, док је EXT4 ограничен на ASCII. Ако апликација креира датотеке са именима на различитим језицима, тестирајте рад на свим циљаним уређајима — име датотеке правилно креирано на APFS-у може бити скраћено на EXT4.

Препоруке за рад са системом датотека

Поуздан рад са системом датотека мобилног уређаја захтева поштовање неколико кључних правила. Она се заснивају на анализи типичних грешака програмера и препорукама званичне документације.

  • Не користите тврдо кодиране путање ка директоријумима. Увек добијајте путање кроз системске API-је: context.filesDir на Android-у, NSSearchPathForDirectoriesInDomains на iOS-у. Тврде путање се мењају између верзија оперативног система и уређаја
  • Обрађујте изузетке операција са датотекама: IOException, FileNotFoundException, SecurityException. На iOS-у све FileManager операције могу да баце грешку — обмотајте их у do-catch. На Android-у операције са спољашњом меморијом могу завршити грешком због недостатка медија
  • Проверите доступан простор пре уписа. Користите File.getUsableSpace() на Android-у и URLResourceValues.volumeAvailableCapacityKey на iOS-у. Упозорите корисника ако слободног простора нема довољно
  • Избегавајте чување великих датотека у директоријумима који улазе у резервно копирање. На iOS-у искључите кеш из резерве путем isExcludedFromBackup. На Android-у преферирајте cacheDir за привремене датотеке
  • Тестирајте понашање при пуњењу меморије и изненадном прекиду напајања. Користите трансакциони упис: пишите у привремену датотеку, затим атомично преименујте

Посебну пажњу посветите вишеплатформским разликама. Путање до датотека на Android-у се граде косом цртом (/data/data/.../files/), на iOS-у — URL шемом (file:///var/mobile/.../Documents/). Ако ваша апликација користи мултиплатформски оквир (Flutter, React Native, Kotlin Multiplatform), унификујте операције са датотекама кроз платформске адаптере. На пример, Flutter пружа пакет path_provider, који враћа исправну путању до Documents или filesDir на обе платформе без писања платформски зависног кода. Никада не конкатенирајте путање операцијама на стринговима — користите File.join() или URL.appendingPathComponent(), који правилно обрађују сепараторе на различитим платформама.

Често постављана питања

Који систем датотека се подразумевано користи на Android-у?

На савременим Android уређајима (11+) за партицију /data користи се F2FS. На старијим уређајима — EXT4. Партиција /system користи EROFS или EXT4. SD картице се форматирају у exFAT или FAT32 у зависности од капацитета.

По чему се APFS разликује од EXT4?

APFS подржава снимке, клонирање датотека, шифровање на нивоу датотека и контролне суме. EXT4 има журналисање и ширу компатибилност. APFS је оптимизован за SSD, EXT4 је универзални систем датотека.

Како добити путању до documents директоријума на iOS-у?

Користите FileManager.default.urls(for: .documentDirectory, in: .userDomainMask). Метод враћа низ URL адреса, први елемент је главни Documents директоријум Sandbox контејнера апликације.

Шта је Scoped Storage на Android-у?

Scoped Storage је модел приступа уведен у Android 10 који ограничава директан приступ систему датотека. Апликације могу без дозволе да читају само своје датотеке. За приступ заједничким медијским датотекама користи се MediaStore API.

Који систем датотека је бољи за SD картицу — FAT32 или exFAT?

exFAT је пожељнији за SD картице капацитета преко 32 GB, јер подржава датотеке веће од 4 GB. FAT32 обезбеђује максималну компатибилност са старијим уређајима, али ограничава величину датотеке на 4 GB.

Резиме

  • Систем датотека мобилног уређаја управља складиштењем, индексирањем и заштитом података у флеш меморији узимајући у обзир ограничен ресурс NAND ћелија
  • Android користи партиције /data (F2FS/EXT4), /system (EROFS/EXT4) и /sdcard (exFAT/FAT32) са различитим моделима приступа
  • iOS ради на APFS-у са Sandbox контејнерима, где је свака апликација изолована на нивоу XNU језгра
  • F2FS обезбеђује 25–40% веће перформансе случајног уписа у поређењу са EXT4 захваљујући лог-структуираној архитектури
  • Дозволе на Android-у се заснивају на Linux UID моделу, на iOS-у на Sandbox профилима са четири класе заштите датотека
  • Различити системи датотека имају ограничења дужине имена, величине датотека и подршке за знакове — тестирајте на свим циљаним уређајима
  • Трансакциони упис и провера доступног простора пре чувања спречавају оштећење података при отказима

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође