IOS File System

Borysarang·2022년 7월 18일
0

swift

목록 보기
4/7
post-thumbnail

IOS File System

tags: study

IOS file system

ios의 파일시스템은 자체적으로 실행되는 앱들에 맞춰져있다. 또한 시스템을 단순하게 유지하고, 보안성을 높이기 위해 사용자는 파일시스템에 직접적으로 접근 할 수 없게 되어있다.


하나의 앱에는 샌드박스단위로 구성된 파일 구조가 존재한다. 앱은 일반적으로 이 샌드박스 외부에 액세스하거나 파일을 추가, 수정할 수 없다(연락처, 음악 같은 공용 인터페이스를 사용하는 경우를 제외하고)

샌드 박스 내부에는 총 3개의 디렉토리가 존재한다.

  • 번들 컨테이너
    • 실행가능한 코드와 이와 연관된 미디어 데이터, 레이아웃 파일(nib)등의 자원이 묶여있는 영역
  • 데이터 컨테이너
    • 어플리케이션과 사용자를 위한 데이터를 갖는다.
  • 추가 컨테이너 디렉토리
    • icloud 등

BundleContainer - AppName.app

  • 해당앱과 필요한 모든자원이 포함
  • 다만 개발자는 이 영역에 직접 쓰기 행위를 할 수 없음
  • 또한 조작을 방지하기위해 서명이 추가됨.
  • 디렉토리 내부 데이터는 iTunes(Finder) 및 iCloud에 의한 백업 X

Data container - Document

  • 유저가 앱을 통해 생성한 문서 혹은 데이터를 저장하는 곳
  • 외부 어플리케이션에서 받은 데이터가 저장되는 곳
  • 유저에 의해 삭제되거나 내용이 변경되어도 무방하고, 유저가 다루는 컨텐츠와 관련이 있는 파일을 저장하는 곳
  • 유저의 파일 직접 추가 및 삭제가 가능한 곳
  • 사용자에게 노출될 수 있는 파일만을 포함해야 한다
  • 디렉토리 내부 데이터는 iTunes(Finder) 및 iCloud에 의한 백업 가능

Data container - Library/ApplicationSupport

  • 일반적으로 앱이 실행하는데 사용되는 파일로서, 사용자에게 비공개되어야하는 파일을 저장하는 곳
  • 앱이 생성하고 관리하는 데이터, 리소스 등이 저장된다
  • Document에서 사용자의 데이터를 제외한 나머지가 저장됨
  • 사용자에게 노출될 수 있는 파일만을 포함해야 한다
  • 디렉토리 내부 데이터는 iTunes(Finder) 및 iCloud에 의한 백업 가능

Data container - Library/Cache

  • 임시 데이터보다 오래 유지되며 반복 사용할 가능성이 있는 파일을 저장
  • 어플리케이션 작동을 위하여 캐시파일이 필요하지 않지만 캐시 데이터를 통해 성능 향상 기대 가능
  • 디렉토리 내부 데이터는 iTunes(Finder) 및 iCloud에 의한 백업 X
  • 시스템이 자동으로 디스크 공간 확보를 위해 캐시데이터 삭제 가능 -> 필요에 따라 다시 생성하거나 다운로드 가능해야 함

Data container - Library/Preferences

  • 앱의 설정 데이터가 저장된다.
  • 디렉토리 내부 데이터는 iTunes(Finder) 및 iCloud에 의한 백업 가능
  • 디렉터리에 직접적으로 파일을 생성할 수 없으며 NSUserDefaults를 비롯한 클래스를 통하여 접근해야한다

Data container - Tmp

  • 앱 실행 간에 지속할 필요가 없는 임시 파일 저장
  • 앱은 더 이상 필요하지 않은 파일을 해당 디렉터리에서 제거해야 함
  • 시스템은 앱이 실행되고 있지 않을 때 해당 디렉터리 제거 가능
  • 디렉토리 내부 데이터는 iTunes(Finder) 및 iCloud에 의한 백업 X

정리

카카오톡은 위와 같이 저장된 기타 데이터를 캐시에 저장하고 있으며, 사진을 비롯한 미디어 데이터는 다른 영역에 저장되는것으로 보인다. 그렇다면 이게정답일까? 이는 서비스하는 어플리케이션에 따라 다르다. 대화 내역을 Document영역에 저장할수도 있고, 캐시 영역에 저장할 수도 있을 것이다. 정답은 없고 상황에 맞게 잘 쓰자.

참조

파일시스템 공식 문서
이동건의 이유있는 코드
퓨림노 님 블로그

0개의 댓글