맥을 쓰다보면 .DS_Store 파일을 한번씩 보게 됩니다.

.DS_Store (Desktop Services Store)이 녀석은 해당 폴더의 구조, 아이콘의 위치 등의 정보를 가지고 있는 파일인데요.
이 파일을 읽어 파인더(Finder)가 좀 더 빠르게 읽어올 수 있는 도움을 주기도 합니다.(색인 개념)

특히 외장 USB나 이동식 하드에 폴더를 복사하면 이녀석이 함께 복사되어 윈도우 사용자도 이파일을 볼수 있게 되는데요.
(왜냐면 이미 생성되어 있는 이 파일이 폴더를 복사하면 함께 이동하기 때문)

그리고 SMB나 FTP 등으로 마운트한 네트워크 폴더에도 이 파일이 생성됩니다.
암튼 파인더로 폴더를 열기만 하면 색인을 위해 생성된다고 보시면 됩니다.

굳이 이 파일을 제거할 필요는 없습니다. 
(숨김 설정이 되어 있기에 내 맥에서는 파인더 보기 옵션을 건들지 않는 이상 보이지는 않습니다.) 

네트워크 드라이브 연결 시 .DS_Store 생성 막기

그래도 내 맥이 아닌 다른곳에 이파일이 생성되지 않게 보안을 위해 조치를 취해야 하겠다 하시는 분들은 아래의 방법을 사용하시면 됩니다.
– 네트워크 드라이브에 연결할때 생성되는 부분만 막는 겁니다. 
– 내 맥에서는 계속 생성됩니다. 

  1. 터미널 앱을 실행합니다.
    – 런치패드 실행 후 기타 폴더에 있습니다.
    – cmd + space 로 Spotlight 를 열어 한글 이던 영어던 검색하면 리스트에 나옵니다.
맥 .DS_Store 관리 하기 (전체 삭제 및 생성 방지)
  1. 아래 명령어를 입력하고 엔터를 누릅니다. (아래 명령어를 복사해서 붙여넣으세요)
맥 .DS_Store 관리 하기 (전체 삭제 및 생성 방지)
defaults write com.apple.desktopservices DSDontWriteNetworkStores true

추후에 다시 생성되게 하고 싶다면 마지막 true 를 false로 바꾸시면 됩니다.

3. 컴퓨터를 재시동하거나 사용자 계정에서 로그아웃했다 다시 로그인합니다.

내 맥에 있는 모든 .DS_Store 파일 삭제 하기 (한번)

내 맥에 있는 모든 .DS_Store을 지우고 싶다면 아래의 명령어를 사용하시면 됩니다.
마찬가지로 터미널 앱을 실행하여 다음 명령어를 입력합니다.

sudo find / -name ".DS_Store" -depth -exec rm {} \;

암호를 물어보면 내 맥의 암호를 입력하시면 됩니다.

위 내용은 루트 폴더부터 .DS_Store 를 찾아 삭제하는 방식입니다.
위에서 설명했지만 내 맥(로컬)에서의 생성은 막지 못하므로 주기적으로 위 명령어를 실행해 주면 됩니다.
그럼 매번 생각 날때마다 입력해야 되나요?

아니요 아래와 같은 방법으로 스케쥴링이 가능합니다.

내 맥에 있는 모든 .DS_Store 파일 삭제 하기 (스케쥴링)

스케쥴링은 리눅스 crontab 을 사용할 예정입니다.
특정 시간을 주기로 원하는 작업을 계속 실행시켜 주는 아주 유용한 녀석입니다.


터미널 앱을 실행하여 다음 명령어를 입력합니다.

sudo crontab -e
맥 .DS_Store 관리 하기 (전체 삭제 및 생성 방지)

그 후 암호를 입력하면 아래와 같이 나옵니다.

맥 .DS_Store 관리 하기 (전체 삭제 및 생성 방지)

vi 편집기에서 키보드의 I (대문자 i) 문자를 한 번 누르고 다음 명령을 입력하세요.

15 1 * * * root find / -name ".DS_Store" -depth -exec rm {} \;

이 crontab 항목의 형식은 다음과 같습니다.
<Minute> <Hour> <DayOfMonth> <Month> <DayOfWeek> <User Command>.

즉 매일 오전 1:15 에 자동으로 명령을 실행하는 원리입니다.
시간을 변경하고자 하면 원하는 시간으로 바꿔주시면 됩니다.

예를 들어 저는 매월 1일 오전 9시 00분에 한번 싹 정리를 해주고 싶다라고 하면

00 9 1 * * root find / -name ".DS_Store" -depth -exec rm {} \;

이렇게 입력하면 됩니다.

참고: 컴퓨터가 스케줄된 시간에 꺼져 있다면 이 명령이 실행되지 않습니다.

이제 저장하고 편집기를 종료할 차례입니다.
esc 키를 누르면 INSERT 가 없어지며 명령어를 입력할 수 있습니다.

ZZ (대문자, Shift+z 를 두번 입력하면 됩니다.) 를 입력합니다. (별도로 입력하는 명령어가 보여지지는 않습니다.)

crontab: installing new crontab

위 메세지가 보인다면 정상적으로 저장 및 생성이 된 것입니다.

그럼 등록이 잘 되었나 확인해 볼까요?

sudo crontab -l

위 명령어를 입력하면 현재 crontab에 등록된 리스트를 볼 수 있습니다.
하나도 등록되지 않았다면, no crontab for <user명>을 출력 합니다.

맥 .DS_Store 관리 하기 (전체 삭제 및 생성 방지)
위와 같이 1개의 작업이 등록되어 있습니다.

만약 등록한 일정을 삭제하고 싶다면 다시 편집 모드로 들어가서 내용을 다 지우던지 또는 아래 명령어로 처리하면 됩니다.
다만 이건 아에 crontab 스케줄을 모두 삭제하는 거라 포스팅 내용 외에 다른 스케줄이 있다면 실행하지 마시기 바랍니다.

sudo crontab -r

즐거운 맥 라이프 되세요~

맥 .DS_Store 관리 하기 (전체 삭제 및 생성 방지)