2019-02-22

윈도우즈의 AppData 폴더는 왜 있을까

0. 그저 유저의 입장에서는 딱히 알 필요도 없고, 알아서 도움이 될 것도 별로 없다. 흔히 윈도우즈에 프로그램을 설치하면 "C:\Program Files" 혹은 "C:\Program Files (x86)" 등에 모든 파일이 저장되는 줄로만 알았다. 그런데 실제론 "C:\Nexon"에 저장되거나, "C:\Users\사용자이름\AppData\Local"에 저장되는 경우가 더 많았다. 대체 이 차이는 왜 생기게 된걸까? 무엇을 프로그램 폴더에 저장하고, 무엇을 AppData라는 폴더에 저장하게 된걸까?

검색을 통해 내용을 짜깁기하고 정리해보았다. 순전히 호기심을 따라가며 알아본 내용이고, 내용을 정리하는 소양이 부족한 점은 양해 부탁드립니다.



1. AppData에는 총 3 개의 폴더가 있다. Roaming, Local, localLow이다.

Roaming 폴더는 유저의 계정을 통해 사용자의 PC와 '같은 도메인에 연결된 다른 PC'를 연결함으로써 주고받을(로밍) 데이터를 저장하는 용도로 사용된다. 다른 PC는 대표적으로 서버 컴퓨터가 될 수 있고, 웹 브라우저를 통해 북마크를 연동시키는 경우처럼 내 계정을 통해 데이터를 sync할 수 있는 기능을 담당한다. 로밍 유저의 장점이라면, 네트워크에 접속되어 있고 계정이 연동되어 있기만 하다면 별도의 프로파일을 만들거나 프로그램의 설정을 다시 맞춰주는 수고를 할 필요가 없다는 점이다.

Local 폴더는 단일 컴퓨터의 특정한 데이터가 저장된다. 이 폴더의 데이터들은 유저의 프로필을 따라 다른 곳으로 이동하거나 연동되지 않는다. 서버와 연동하기엔 너무 파일이 크거나, 고유해야만 하는 데이이터, 웹 브라우저의 임시 파일들이 주로 이 폴더에 저장된다.

사용자의 PC가 도메인에 연결되어 있지 않은 경우, Roaming 폴더와 Local 폴더는 실제 차이가 없다. 그러나 응용 프로그램 개발자는 경우에 따라 서로 다른 유형의 데이터를 분할할 때에 두 폴더를 구분하여 사용한다.

LocalLow은 Local 폴더처럼 이동하지 않는 데이터를 포함하고 있지만, 낮은 수준의 접근은 허용되는 폴더이다. 예를 들어서, 구글 크롬의 시크릿 모드를 사용하는 경우에 구글 크롬과 그 내부 앱들은 오직 LocalLow 폴더에만 접근할 수 있다.

프로그램이 설치되는 과정에서 해당 애플리케이션들은 설치 설정에 따라 Local, LocalLow, Roaming 폴더에 나누어져 저장된다. 대부분의 데스크탑 애플리케이션들은 Roaming 폴더에 들어가고, Windows Store에서 받은 애플리케이션들은 Local 폴더에 저장된다.



2. 평범한 사용자라면 이 폴더를 백업할 일이 별로 없다.

대부분의 윈도우즈 사용자들은 이 폴더의 존재조차 알 필요조차 없다. 그게 바로 이 폴더가 숨겨진 상태로 존재하는 이유이다. 프로그램이 애플리케이션 데이터를 이 폴더에 저장하고 있으니.. 원한다면 이 폴더를 들쑤시고 다녀도 좋겠지만, 유저가 그럴 필요가 생기는 경우는 별로 없다.

따라서 이 폴더를 전부 백업할 필요는 더더욱이 없다. 그럼에도 불구하고 내가 가진 모든 데이터를 백업하고 싶어지는 경우엔 이 폴더를 백업해도 된다. 예를 들어서 특정 프로그램의 설정들이나 게임 세이브 파일을 백업해서 다른 컴퓨터로 옮기고 싶다면, 이 폴더를 찾아 들어와서 해당 프로그램의 디렉토리를 찾아낸 후 복사해서 다른 PC의 같은 위치로 붙여넣으면 된다. 그러면 같은 환경에서 프로그램을 조작할 수 있게 된다. 

물론 이 방법은 전적으로 해당 프로그램이 어떠느냐에 따라 다르다. 즉, 개발자들이 항상 이 가이드라인을 지킨다는 의미는 아니다. 어떤 프로그램은 설정이나 파일들을 레지스트리에 저장하기도 하고, 어떤 프로그램은 '내 문서'같은 폴더에 저장해놓을 수도 있기 때문이다('카카오톡 받은 파일'처럼) 

많은 프로그램들이 해당 프로그램을 다른 PC로 연동할 수 있도록 sync 기능 혹은 설정 내보내기를 지원한다. 그런 기능이 존재한다면 먼저 사용하는 것이 깔끔할지도.



3. 그러면 Program Files, ProgramData 폴더는 왜 존재할까?

Program Files 폴더는 실행 파일(executable file)과 정적 파일(static file)을 보관하는 용도로 쓴다. ProgramData는 exe 파일을 실행할 때 공유되는 캐시, 공유되는 데이터베이스, 공유되는 환경설정 등이 정의된 파일을 담아둔다. 

한편 AppData 폴더는 사용자 계정(User profile)을 따라 움직이는 데이터들을 저장해두는 공간이다. 그래서 Local, LocalLow, Roaming 폴더는 모두 "C:\Users\사용자이름\AppData\"의 하위에 존재하고, Program Files와 ProgramData는 C드라이브 최상위(C:\)에 위치하고 있다.















댓글 2개:

  1. 감사합니다. 출처 밝히고 가져가도 될까요?? 다 기억못할거같아서 저장좀 해놓겠습니다.

    답글삭제