개발 취재 노트

Termux 깔았는데 다운로드 폴더가 안 보여요 — storage 권한부터 잡는 순서

무용 연습실에서 다 같이 영상에 맞춰 대형을 보는 웹앱(formation)을 노트북 없이 안드로이드 폰 한 대로 돌려보려고 Termux(안드로이드용 터미널 앱)를 설치했다. 그런데 프로젝트 폴더를 분명 폰 다운로드에 넣어 뒀는데, Termux에서 ls를 쳐도 아무것도 안 보이고 cd로 어디로 가야 할지조차 막막했다.

결론

Termux는 설치 직후 폰의 공유 저장소(다운로드, 사진 등)를 아예 보지 못하는 상태로 시작한다. 아래 순서대로 권한을 먼저 터줘야 한다.

# 1. 저장소 접근 권한 요청 (팝업에서 반드시 "허용")
termux-setup-storage

# 2. 다운로드 폴더에 뒀다면
ls ~/storage/downloads
# 안 보이면 폰 내부저장소 최상위(파일 앱 맨 위)부터
ls ~/storage/shared

# 3. 프로젝트 폴더로 이동 → server.js 확인 → 실행
cd ~/storage/downloads/formation/live
ls
node server.js

매번 긴 경로를 치기 싫으면 Termux 홈으로 복사해두는 편이 낫다.

cp -r ~/storage/downloads/formation ~/
cd ~/formation/live

길을 잃었을 때는 pwd(지금 위치), ls(여기 뭐 있나), cd ../cd ~(위로/홈으로) 세 개면 충분하다. 폴더 이름 몇 글자 치고 Tab을 누르면 자동완성된다.

상황

formation은 무용 연습 영상 위에 격자를 띄우고 무용수 위치를 찍어 대형·동선을 시각화하는 웹 앱으로, 연습실에서 한 명(리더)이 영상을 재생하면 나머지는 각자 폰으로 접속해 같은 지점의 영상을 함께 보는 라이브 기능이 있다. 이 라이브 기능은 server.js를 Node.js로 실행하는 서버가 필요한데, 지금까지는 노트북에서 서버를 돌렸다.

"서버와 리더까지 폰 한 대로 할 수 있느냐"는 질문에 대해, 안드로이드는 Termux로 Node를 설치하면 폰 한 대가 서버·리더·핫스팟을 전부 맡을 수 있다는 답이 먼저 나왔다 . 핫스팟으로 로컬 네트워크를 만드는 절차는 이미 정리돼 있었고, 안드로이드 전용 경로로 Termux 설치 후 pkg install nodejs까지 안내된 상태였다.

증상

Termux를 설치한 뒤 "내 디렉토리로 이동하는 걸 어떻게 해야 하는지 모르겠다"는 질문이 나왔다 . 터미널을 처음 접한 상태라 cd가 뭘 가리키는지조차 감이 안 잡히는 수준이었다.

원인

Termux는 안드로이드 앱 샌드박스 안에서 자기만의 독립된 홈 디렉터리(~)로 켜진다. 기본 상태에서는 폰의 공유 저장소(다운로드, 사진 등)에 접근할 권한이 전혀 없어서, formation 폴더를 다운로드에 아무리 제대로 넣어 놔도 Termux 입장에서는 그 폴더가 존재 자체를 모른다 . 즉 cd를 못 쓰는 게 아니라, cd로 갈 수 있는 경로 자체가 아직 만들어지지 않은 상태다.

이 접근 권한은 termux-setup-storage 명령을 실행하고 안드로이드 권한 팝업에서 허용해야 생기며, 그래야 홈 디렉터리에 storage라는 통로(다운로드는 ~/storage/downloads, 내부저장소 최상위는 ~/storage/shared)가 생긴다 .

해결

세션에서 제시된 절차는 위 "결론"과 동일하다 :

  1. termux-setup-storage 실행 → 권한 팝업 허용
  2. ls ~/storage/downloads 로 프로젝트 폴더 확인, 안 보이면 ls ~/storage/shared 로 더 넓게 탐색
  3. cd ~/storage/downloads/formation/live 로 이동 후 ls로 server.js 존재 확인
  4. node server.js 실행
  5. (선택) cp -r ~/storage/downloads/formation ~/ 로 Termux 홈에 복사해두면 이후 경로가 짧아짐

덤 — 이 절차가 실제로 성공했는지는 확인되지 않았다

대화는 이 안내 직후 핫스팟 네트워크의 데이터 요금 문제로 화제가 넘어갔고 , 이 세션(전체 59턴) 안에서는 formation 폴더를 실제로 찾았는지, node server.js가 Termux에서 정상 기동했는지 확인하는 턴이 없다. 그래서 이 글은 "어시스턴트가 제시한 절차"로만 다룬다. termux-setup-storage와 ~/storage 경로 자체는 Termux의 기본 동작이라 당장 바뀔 가능성은 낮지만, 버전에 따라 세부가 달라질 수 있다는 점은 감안하는 게 안전하다.

취재 후기 — "cd가 안 되는 게 아니라, 갈 곳이 없는 거였어"

박도은
연습실 영상 동기화 앱 있잖아, 노트북 없이 폰 하나로 서버까지 돌리려고 Termux 깔았는데, 다운로드에 넣어둔 프로젝트 폴더가 안 보여.
정바다
cd Download 쳐봐, 리눅스 계열은 보통 그렇게 들어가.

박도은이 쳐본다.

박도은
"그런 디렉터리 없음"이래. 대문자 Download도 아니고, 소문자 download도 다 없어.
정바다
그럼 이름이 다른가 보네. downloads로 끝에 s 붙여봐.
정하늘
잠깐, 이름 문제라면 애초에 ls로 홈 디렉터리 안에 뭐가 있는지부터 봤어야지. 거기 뭐가 있는데?
박도은
그냥 비어있어. 진짜 아무것도 없어. Termux 깔고 한 번도 안 건드린 폴더처럼.
박도현
그거면 이름 문제가 아니야. 폴더 이름을 맞혀서 찾는 게 아니라, 애초에 폰의 다운로드 폴더 자체가 이 안에 안 들어와 있는 거 아니야?
정하늘
그 말이 맞을 수도 있어. Termux가 앱 하나니까, 폰 전체 파일을 볼 권한을 따로 안 받았을 수 있잖아.
박도은
그럼 권한을 어떻게 받는데? 설정 들어가서 켜는 그런 거야?
정바다
Termux 안에서 받는 명령이 있을 거야, termux-setup-storage라고
박도은
쳐봤어. 팝업 뜨고 허용 눌렀더니 홈에 storage라는 폴더가 새로 생겼어.
정하늘
그게 통로니까, 이제 ls ~/storage/downloads 쳐봐. 거기 formation이 보이는지가 진짜 답이야

박도은이 확인한다.

박도은
...지금 치는 중이야. 근데 통로가 열린 거 자체는 확실히 맞아, storage 밑으로 폴더들이 쭉 나오거든.
박도현
통로가 열렸다는 거랑 거기 formation이 있다는 건 다른 얘기야. cd를 못 쓴 게 아니라 갈 길이 아예 없었던 거다, 거기까진 맞고.
정바다
그 안에 formation이 없으면 또 다른 문제가 열리는 거고.
박도은
일단 cd ~/storage/downloads/formation/live 치고 server.js 있는지 ls로 보는 것까지 지금 해볼게.
정하늘
안 보이면 ~/storage/shared로 더 넓게 찾으면 돼. 다운로드 말고 다른 데 뒀을 수도 있으니까.
박도현
찾고 나면 cp -r로 Termux 홈에 옮겨두는 게 나아. 매번 그 긴 경로 안 쳐도 되게.
정하늘
터미널을 처음 켰을 때 "파일이 안 보인다"가 버그처럼 느껴지는 게 당연해. 하지만 앱이 샌드박스 안에서 시작한다면, 그건 권한을 안 줬다는 뜻이지 뭔가 고장 났다는 뜻은 아니야.