2012년 5월 13일 일요일

맥 오토메이터(automator) 삽질을 이용한 사파리 북마크(safari bookmark), 주소록 자동 백업 및 반자동 동기화

하 뭐 제목이 대따 거창하다.

이번 삽질의 개요를 살펴볼작시면....

일단, 아이클라우드 서비스를 이용할 수 없는 사람에게나 유용한 방법이다. 아이클라우드로 사파리 북마크나 주소록을 동기화 하고 있을 대부분의 독자님들은 다른 곳에서 즐거운 웹질 하시면 되겠다.

왜 아이클라우드 서비스를 이용할 수 없는 사람이냐 하면...
우리 사무실은 대부분의 클라우드 서비스 트래픽을 막아놨다 ㅠㅜ
그리고 내 맥들은 다 라이언 안깔렸다 ㅠㅜ
그리고 여러 가지 이유로 난 라이언이 싫다 ㅠㅜ

또한, 아이폰/아이패드 및 그 외 다양한 iOS 디바이스를 맥에 동기화 하여 사용하는데, "그 외의 다른 맥"이 또 있는 분들께 유효하다.


이번 삽질을 통해서 얻게 되는 기능은 다음 시나리오와 같다.

0. 전제조건.
 - iOS 디바이스와 동기화 하는 맥이 이미 있으며, 둘 중 어느 쪽에서건 주소록/사파리 북마크를 수정해도 동기화 하고 나면 똑같아진다. 즉, 베이스 스테이션이 되는 맥이 존재한다.


1. 베이스 스테이션이 되는 맥에서, 매일 밤 자정 즈음, 사파리 북마크 데이터 파일(plist)과 주소록 아카이브 파일(abbu)을 mail 앱을 실행해서 첨부파일로 넣은 다음 지정된 사람(나;;)에게 메일로 보낸다.

2. 베이스 스테이션이 아닌 "다른 맥"에서, 아무 때고 메일로 첨부된 데이터 파일이나 아카이브 파일을 다운로드 받은 다음 맥에 적용시킨다.

3. 주소록 데이터 수정이나 사파리 북마크 수정은 "다른 맥"에서는 하지 않고, iOS 디바이스에서 하거나, 집에 가서 베이스 스테이션 맥에서 한다. (해 보니 99% 확률로 iOS 디바이스에서 하게 되더라;)



다들 잘 알고 있듯이, 사파리 북마크 데이터 파일은, ~/라이브러리/safari 경로에 있는 Bookmarks.plist 파일이다.
달랑 하나뿐이고, 용량도 얼마 되지 않으니 메일로 주고 받는 데에 아무 문제가 없다.



문제는 주소록 데이터 아카이브 파일이다.
주소록 데이터가 통째로 다 들어있는 아카이브 파일 취급에 대해서는 애플 홈페이지를 참조하자.

요컨데, "주소록"을 실행해서, "보내기"를 눌러 줘야 한다는거다. 그러면 확장자가 abbu인 주소록 데이터 아카이브 파일이 만들어진다.
이 파일을 다른 맥에서 받아서 열어주면, 기존의 주소록 데이터가 홀랑 날아가고 아카이브 내용으로 전부 대치된다.


삽질 그 첫번째.

주소록의 데이터 자체가 ~/라이브러리/Application Support/AddressBook 폴더 안에 있다는 건 유명한 사실이다.



그냥 저 파일들 복사해다가 붙여넣기 해도 될 꺼 아냐?

주소록 데이터는 시스템이 항상 관여하고 있기 때문에, 그냥 복사-붙여넣기가 안된다. (해 봤다 ㅠㅜ)
뭐 권한 설정 해결하고 작업 몇 개 죽였다가 다시 실행하면 가능하겠지만... 그럼 데이터를 받아보는 단말기 쪽에서 하는 일이 너무 많아지잖아? 터미널도 열어야 하고 폴더 열어서 파일도 복사해 넣어야 하고... 그거 하기 귀찮으면 스크립트 짜야 하고... 야 안돼애~ ㅠ0ㅜ


삽질 두번째.

그럼, 아카이브 파일을 만들려면, 주소록을 열어야 하고, 단축키도 알 수 없는 보내기 메뉴를 마우스로 눌러서, 파일 이름을 지정해 줘야 하네?
오토메이터에서 이거 할 수 있나?
오, 작업 흐름을 스크린에서 그대로 레코딩 하는 기능이 있어... 그럴싸한데?

다른 작업을 사용자가 진행중이거나, 마우스로 누르는 포인트가 다르거나, 타이밍이 다르면 실패....
현실적으로 써먹을 수가 없다.



삽질 빼고 결론으로 가자면, (아 이거 기나긴 시간을 너무 삽질해서 결론 쓰기 억울할 정도임 ㅠㅜ) 그냥 위의 AddressBook 폴더를 통째로 복사해서 확장자를 abbu로 붙여주면 아카이브 패키지 완성;;;

이렇게 폴더를 복사해서, 확장자를 abbu로 붙여만 주면, 경고 메시지 한 번 만나고...

이 폴더가 파일로 보일 수도 있답니다...
아카이브 파일 완성 -_-;;

허무;;;;;;;;;

(잠깐 눈물좀 닦고)

자, 하여간 이렇게 하면 주소록 아카이브 데이터 파일을 쉽게 얻을 수 있다는 걸 확인했다.





이제, "자동으로 보내는 방법"을 지정하면 된다.

제일 쉬운 방법은, 맥에 기본으로 들어있는 오토메이터 되겠다.



이 오토메이터가 뭐하는 녀석인고 하니...

맥용 작업 진행 자동화 생성기다.
꽤 여러 가지를 할 수 있는데, 너무 여러 가지를 할 수 있으니, 자세한 건 애플 홈페이지에서 보시고 찬찬히 연구해 보시길...



하여간, 오토메이터를 이용해서 파일을 첨부해서 메일로 보내는 동작을 구현해 보자.

긴 말보다 스크린샷이 더 낫겠다.

오토메이터에 익숙하지 않은 분들이 대부분일 테니, 왼쪽의 보관함 항목과 오른쪽의 작업 내용을 비교해서 보면 편할 것 같다.

새로운 Mail 메시지 작성. 받을 사람으로 "나"를 먼저 지정해 두고, 제목과 메시지 내용을 적어둔다. 계정에서는 메일을 보낼 계정을 선택.

지정된 파인더 항목, 여기서는 주소록 데이터가 들어있는 폴더다. 이걸 "가져온다"는건, 작업 목록으로 가져온다는 뜻이다.

파인더 항목 복사. 폴더를 골랐으니, 대상을 데스크탑으로 지정하면 걍 폴더가 복사된다. 기존의 파일 대치는, 작업 도중에 우연히 같은 폴더가 제거되지 않았을 경우 덮어쓰기 하라는 옵션.

파인더 항목 이름 변경. 세부 내용을 보면 확장자만 변경할 수 있는 옵션이 있다. 확장자만 abbu로 변경하는 동작을 통해서, 폴더가 주소록 아카이브 데이터로 변신한다.

파인더 항목 하나를 더 가져온다. 이번에 가져온 항목은 사파리 북마크 파일이다.

"앞에 있는 메시지에 첨부 파일 추가"라는 작업을 통해서, 아까 취급했던 항목들이 죄다 메일에 첨부파일로 붙는다.

걍 지금까지 만든 메일을 보내라는 거...

이제 메일이 다 보내졌으니, 임시로 만든 주소록 아카이브 파일은 삭제해도 된다. 아카이브 데이터를 지정해서...

휴지통으로 이동하면 끝.


끝난줄 알았지?

"일련의 작업을 자동으로 진행"하게 해 주는 것이 오토메이터인데, "때 되면 자동으로 진행"하게 해 주는 것은, 역시 iCal 만한 게 없다.


"자동으로 이메일 보내기"라는 이벤트를 iCal에 이렇게 등록한다.

시작 시간은 자정, 이메일 보내기에 문제가 발생해서(인터넷 회선 문제라거나, 쥐메일 서버 문제라거나) 제대로 메일을 못 보내면 한 시간동안만 삽질 하고 자동으로 종료.

매일매일 반복. (그러니 매일 수동으로 옛날 버전을 지워줘야 하는 문제가;;)

캘린더 그룹은 iOS 디바이스와 동기화 하지 않는 시스템 알람. (링크 타고 들어가서 왜 이런 짓을 했는지 읽어보시길)

알람 방법은 파일 열기. 여는 파일은 위에서 만든 오토메이터 작업흐름 파일. 시간은 1분 후. (왜 1분 후냐면.... 바로 위의 링크를 다녀오셨다면 아시겠지만, 자정에 자동 업데이트 하는 날씨 정보가 있어서 그렇다..)

뭐 이렇게 간단하게 끝.


...난줄 알았지?


삽질 세번째;;

오토메이터 작업흐름 파일을 파일열기로 지정해 놨더니, 작업 흐름이 진행되는게 아니고, 오토메이터가 실행돼서 작업흐름 파일을 "편집"할 수 있게 되더라 OTL

해당 파일 하나만 "오토메이터"가 실행되지 않고 "작업흐름 내용"이 실행되도록 하려면, 정보입수에서 실행하는 방법을 바꿔준다.

요렇게 "다음으로 열기"가 "Automator"로 지정이 돼 있는 것을 그냥 "Automator Runner"로 선택해 주면 끝.





이제, 매일 밤 자정에, 내가 딴 작업을 하고 있건 안 하고 있건 상관 없이, 내 동기화 베이스 스테이션인 맥북 2009 late에서(거의 맥미니처럼 쓰고 있다;;) 자동으로 사파리 북마크와 주소록 데이터를 정리해서 나한테 메일로 보내준다.

오케이 좋아.

필요할 때 회사 업무용으로 사용하는 맥북에어나, 사진작업용으로 사용하는 맥프로에서 메일을 열고...
북마크 plist 파일은 다운받아서 정해진 폴더로 넣으면 돼고, 주소록 아카이브는 그냥 클릭하면 업데이트 끝.




요기서 팁 한가지.

북마크 파일을 좀 쉽고 게으르게 던져넣는 방법.



사파리 폴더를 툴바에 등록해 두고, 북마크 plist를 툴바의 사파리 폴더로 던지면 끝.


끝이라능.....