NTFS 형식인 USB에 파일을 쓰는게 Mac에서는… 이게 너무 힘들게 해서 라즈베리 OS를 복사하려다가 Mac에서는 도저히 쓰기가 안 되고 포맷팅을 엄청나게 했지만 읽기 전용 무한 루프를 돌다가 윈도우 PC에서 그냥..아주 쉽게 ^^ 복붙했던 기억이 있습니다.
구글링을 엄청 했었네요…그런데 MS-DOS(FAT) 포맷팅만으로도 그냥 문제가 해결되었던 사람들이 너무너무너무너무너무 많아서 제 케이스와 일치되는 걸 찾느라 산넘고 물넘었습니다. 그러다가 언제까지고 그 문제 때문에 힘들 수 없다라는 사실에 드디어!!!!! 정말 간신히 해결책을 찾았고 저같이 고생하는 사람들을 위해서 공유해봅니다.
결론만 요약하자면,
- Mac의 Dist Utility 디스크 유틸리티에서 MS-DOS(FAT) 포맷만으로도 쓰기가 되시는 분들은 그렇게 하시면 됩니다. 그런데 그렇게 해도 안 되셨다면, 이 글을 계속 읽어주시면 됩니다.
- 참고로 MS-DOS(FAT)은 맥, 윈도우 양쪽 파일 읽기/쓰기 호환이 되도록 선택하는 것인데 한 파일당 4GB를 넘는 것은 읽기/쓰기가 안 되기 때문에 4GB가 넘는 경우 양쪽 OS 호환이 되면서 쓰기가 가능해지려면 ExFAT으로 포맷팅하셔야 되지만 간혹 MS에서도 지원을 더 이상 하지 않아서 파일이 날라가는 경우도 있었다고 합니다.
Disk Utility에서 포맷팅했는데도 쓰기가 안 된다면 Third Party 소프트웨어를 이용해서 포맷팅하면 된다고 해서 했었는데도 여전히 읽기 전용이었어서 참 힘들었었는데요 이렇게 다양한 방법을 동원해 포맷팅을 했으나 (그래서 포맷은 MS-DOS FAT 이었지만) 여전히 읽기 전용이셨던 분들을 위해 정리해봅니다.
먼저 Disk Utility에서 MS-DOS(FAT)으로 포맷팅하는 방법입니다.
< MS-DOS(FAT)으로 포맷팅하는 방법 >
- USB를 컴퓨터에 연결시킨 상태에서
- 맥북 검색창에서 “디스크 유틸리티” 를 검색하여 디스크 유틸리티를 실행시킵니다
- 왼쪽에 활성화된 USB를 클릭한 후, “지우기”를 선택하여 MS-DOS(FAT)으로 포맷으로 지우기를 합니다.
- 그러고 나서 Finder를 실행시켜서 USB에 대해서 우클릭하여 “정보 가져오기”를 누릅니다. 이 때 읽기 전용이라고 안 나오신 분들은 축하드립니다. 그렇게 해서 쓰기까지 하시면 됩니다. 그런데 만약 여기서 여전히 읽기 전용이시라면 다음 스텝을 계속 진행시켜줍니다.
< 터미널에서 쓰기 가능하게 작업해주기 >
이 방법은 https://apple.stackexchange.com/questions/148875/i-cant-write-to-my-flash-drive-and-it-is-already-in-the-ms-dos-fat-format-w 에 올라온 답변들 중에 제 상황에 딱 맞게 해결방법을 적어준 것을 정리해놓은 것입니다. 답변 작성자분도 맥북에서 USB를 저같이 포맷해도 쓰기가 안 되는 상황 때문에 face palming을 하고 …. 사전적 정의는 네이버에서 다음과 같았습니다.

이처럼 애플 유저로써 한탄하셨다고 하네요… ㅎㅎ 사실 프로그래밍을 공부하다보면 하라는 대로 하였으나 원하는 대로 프로그램이 동작하지 않는 경우가 종종 있는 것 같습니다. 물론 컴퓨터를 껐다 키면 마법같이 되는 경우도 있고, 또 어떤 경우는 프로그램을 다시 재설치하니 깨끗이 해결된 경우도 있었고 (재설치가 언제나 답은 아니기에 많이 헤매다가 얻어 걸렸었습니다) 또 어떤 경우는 제 쪽에서 minor하게 무수히 많은 스텝 중에 건너뛴 경우도 있고 또는 버전차이로 인한 문제 등등 정말 여러 문제가 있는데요 이 경우 안 될 때는 계속 안 되는 같은 방법을 쓰기보다 전혀 다른 방법을 찾는 게 해결의 길인 것 같습니다.
즉, 포맷팅하라고 해서 했는데도 안 되는 경우는 차라리 다른 방법을 열심히 구글링하는 게 에러를 해결하는 방법 같습니다. 문제는..막상 이 상황에 처해지면 사람은 왜인지 계속 같은 방법을 최소한 5번 이상은 해보게 되는 것 같습니다. 그럴 때 너무 지치지 말고 다른 방법으로 얼른 가면 좋을텐데 ^^ 혹시라도 내가 그 방법을 잘못해서 놓친 게 아닐까 하는 의심 때문에 맴맴 돌면서 같은 방법을 검증하다가 결국 결국에는 다른 해결방법을 찾게 되는 것 같습니다. 그래도 다행히 공동지성이라는 것이 있어서 전세계 사람들이 문제 해결방법을 친절하게 달아주는 덕분에 깔끔하게 해결할 수 있었습니다. 서론이 좀 길었는데요 이제 본론으로 가보도록 하겠습니다~~
1. Terminal 터미널 창 띄우기 (검색창에서 “Terminal” 또는 “터미널”)
2. USB 이름과 IDENTIFIER 식별자 알아내기
diskutil list
라고 타이핑 >> 그러면 결과들이 나오는데요 그 중에 쓰기를 하려고 하는 USB 정보를 보시면 됩니다. 그 전에 포맷팅할 때 이름이 없는 경우는 눈에 잘 띄는 이름으로 포맷팅을 하면 해당 이름으로 보일 것입니다. 아래 예시에서는 “LEARN_LOVE” 입니다. 앞으로 “LEARN_LOVE” 라는 예시를 가지고 설명하도록 하겠습니다. 실제로는 여러분이 가지고 계신 USB의 이름을 사용하시면 됩니다. 포맷팅 할 때 아무것도 지정을 안하셨을 경우 “NO NAME”으로 되어 있으실 수도 있습니다.

3. USB 이름 환경변수로 지정해서 매번 중복으로 치지 않게 작업
USB에 해당하는 IDENTIFIER 이름을 환경변수로 지정하여 매번 타이핑하지 않아도 되게 해줍니다.
export NAME="LEARN_LOVE"
이렇게 하고 나서 변수 세팅이 제대로 되었는지 확인하기 위해 echo $NAME
을 해주시면 변수명이 똑같이 출력되는 것을 확인하실 수 있습니다.
4. USB unmount 해주기
sudo diskutil unmount /dev/<IDENTIFIER 입력>
타이핑
예를 들어 LEARN_LOVE 예시에서는 IDENTIFIER가 disk2s1 이기 때문에 sudo diskutil unmount /dev/disk2s1
이라고 타이핑 하시면 됩니다.
그러면 결과가
Volume LEARN_LOVE on disk2s1 unmounted 라고 나옵니다.
5. 디렉토리 생성하기
sudo mkdir /Volumes/$NAME
라고 타이핑 >> 출력 결과 없음
6. USB mount 해주기
sudo mount -w -t msdos /dev/<IDENTIFIER 입력>/Volumes/$NAME
타이핑 >> 출력 결과 없음
예를 들면, sudo mount -w -t msdos /dev/disk2s1 /Volumes/$NAME
7. 쓰기가 가능해진 것인지 확실히 체크하기 위해 tmp.txt 라는 샘플 텍스트 파일을 USB에 생성
touch /Volumes/$NAME/tmp.txt
타이핑
8. USB에 저장된 파일 리스트 불러오기
ls -al /Volumes/$NAME
타이핑 >> tmp.txt 라고 샘플로 만들어진 파일이 보이면 이제 쓰기가 가능해진 것이 확실해진 것입니다~!! 아래와 같이 tmp.txt 라는 파일이 보이면 쓰기가 가능해진 것입니다. 이제부터 자유롭게 Finder에서 파일을 복붙하여 USB로 쓰기가 가능해집니다.

작업 순서대로 적은 명령어 총정리입니다.
9. 작업 종료 후 USB unmount 해주기
sudo diskutil unmount /dev/<IDENTIFIER 입력>
타이핑
예를 들어 LEARN_LOVE 예시에서는 IDENTIFIER가 disk2s1 이기 때문에 sudo diskutil unmount /dev/disk2s1
이라고 타이핑 하시면 됩니다.
# 1. usb 명, identifier 명 알아내기
diskutil list
# 2. usb unmount 하기
sudo diskutil unmount /dev/<IDENTIFIER 명>
# 3. usb에 새로운 디렉토리 생성하기. 여기서 $NAME은 USB명.
sudo mkdir /Volumes/$NAME
# 4. usb mount 하기
sudo mount -w -t msdos /dev/<IDENTIFIER 명> /Volumes/$NAME
# 5. 쓰기가 되는지 검증용으로 샘플 파일 작성하기
touch /Volumes/$NAME/tmp.txt
# 6. usb에 저장된 파일 리스트를 불러와서 방금 작성한 파일이 제대로 써졌는지 더블체크하기
ls -al /Volumes/$NAME
# 7. 파일 옮기는 작업 종료 후 unmount하기
sudo diskutil unmount <IDENTIFIER 명>
ex) sudo diskutil unmount /dev/disk2s1
조금이나마 도움이 되셨으면 좋겠습니다 감사합니다~!! 🙂