콘텐츠로 건너뛰기
Home » 20100419 :: 궁극의 폴더 동기화 유틸리티 – DirSync Pro

20100419 :: 궁극의 폴더 동기화 유틸리티 – DirSync Pro

리눅스에서도 쓸만한 폴더 동기화 유틸리티

딱 작년 이 맘 때 쯤 매우 유용한 폴더 동기화 유틸리티인 Allways Sync에 대한 글을 쓴 적이 있습니다. 리눅스로 넘어온 이후에 가장 아쉽고 미련이 남던 프로그램 중 하나였는데요, 물론 리눅스에도 rsync와 같은 간편한 프로그램이 있긴 합니다만 삼바를 통한 공유폴더로의 설정이 안된다든지 하는 문제점이 있습니다. (생각해보니 안될 것도 없다는 생각도 드네요)

지금의 사용환경

지금의 사용환경은 처음 Allways를 쓸 때 보다는 조금 더 변했습니다. 그때는 노트북, 데스크톱이 모두 윈도 시스템이었는데 지금은 노트북, 데스크톱이 모두 리눅스 (데스크톱은 가끔 윈도)이며, 각종 자료들은 PC에 저장하지 않고 별도의 외부 파일 공유 서버에 차곡차곡 저장하고 있습니다.
따라서 다음과 같은 기능을 지원해야 하는 유틸리티가 필요했습니다.

  1. 윈도, 리눅스에서 모두 돌아간다. 윈도는 Allways가 있으니 최소 리눅스에서는 돌아가야 한다.
  2. 양방향 동기화를 지원하고 가능하면 Allways 수준의 설정을 지원한다.
  3. GUI가 있으면 좋다. (rsync는 별도의 front-end가 있습니다만, 사실 명령줄 프로그램입니다.)
  4. 네트워크 드라이브를 지원해야한다. 특히 삼바 공유를 지원해줘야 한다.

DirSync Pro

그래서 뭐 괜찮은 프로그램 없나하고 여기 저기 뒤져보던 중에 DirSync Pro라는 프로그램을 발견했습니다. Pro라는 단어가 들어있긴 합니다만 상용 소프트웨어가 아니라 오픈소스 프로젝트입니다. 일단 사용기능이나 사용기한 등에 제약이 없고, 회사에서 써도 괜찮습니다! 게다가 제가 찾던 기능들은 모두 망라되어 있군요. 아래는 이 프로그램이 자랑하는 feature입니다.

  • 파워풀한 싱크 알고리듬(?)
  • 양방향 동기화와 단방향 동기화를 모두 지원함
  • 양방향 동기화에 대한 다양한 세부 옵션 지원
  • 동기화 할 수 있는 폴더 수에 제한이 없음
  • 하위 디렉터리를 포함하여 재귀적인 (recursively) 동기화가 가능함
  • 거의 제한이 없는 파일 시스템 지원 (FAT, FAT16, FAT32, NTFS, WinFS, UDF, EXT2, EXT3, EXT4 …)
  • 네트워크 드라이브 지원 (올레!)
  • 마운트된 외부 장치 지원 (외장하드, USB 등)
  • 싱크 기능을 통한 차등 백업 가능
  • 동기화 하기 전 최대 50개 까지의 백업 생성 가능
  • 리눅스 파일 시스템의 심볼릭 링크 처리 지원
  • 동기화한 파일의 타임 스탬프 변경 지원 (원본을 동기화한 후 동기화 시점으로 최종 수정 시간을 변경하여 최신 버전임을 명시)
  • 깔끔하고 쉬운 인터페이스 (논란의 소지가 있지만, 동기화유틸을 써본 사람은 쉽게 사용이 가능합니다)
  • 거의 대부분의 OS 지원 (윈도 계열, 맥OS, 리눅스)
  • 별도의 설치가 필요없음. 태생이 포터블 버전임
  • 오픈소스. 무료. 사용기간, 사용량에 제한이 없음 (올레!)
  • 별도의 로컬 데이터베이스를 필요로하지 않음.
  • 기록되는 로그 레벨을 설정을 통해 변경할 수 있음

하나 하나 써내려가면서 마음이 뿌듯해지는 기능들이 아닐 수 없습니다. 그럼 한 번 설치를 해 보겠습니다.

설치

사용환경 :

  • Ubuntu 10.04 b2
  • & Windows XP SP3
  • 파일 공유 서버는 삼바. (윈도, 리눅스에서 접근하는데 별도의 설정이나 제한은 없음)

설치전 요구 사항 : 이 프로그램은 자바로 만들어져 있습니다. 그래서 실행에는 Java Runtime Environment가 필요합니다. 우분투에는 기본적으로 OpenJava가 설치되어 있으니 별도로 설치할 필요는 없습니다.(제 경우엔 윈도에서도 freemind를 사용하느라 이미 설치했음. ㅋ) 설치를 위해서는 다운로드 페이지에서 플랫폼에 맞는 파일을 내려받은 다음, 원하는 폴더에 압축을 풀어 놓으면 됩니다. 리눅스 버전의 경우 실행파일의 이름은 dirsyncpro.sh입니다. 이 파일을 실행가능하도록 권한을 변경해 줄 필요는 있지요.

$ chmod +x dirsyncpro.sh

이제 파일 탐색기에서 해당 파일을 더블 클릭하면 프로그램이 실행됩니다. 최초 실행시에는 라이센스에 동의하겠느냐는 대화 상자가 한 번 표시됩니다. 동의해주고 바로 넘어가면 다음과 같은 화면을 볼 수 있습니다. (이하 스크린샷은 윈도 버전에서 찍었습니다. 리눅스는 이게 불편해서…)

설정을 위해서는 세 번째 탭인 ‘Dir Settins’를 선택합니다. (위 스샷의 마우스 포인터가 있는 부분)  디렉터리 세팅에서는 동기화 프로필을 생성할 수 있고, 프로필마다 각각 다른 폴더를 지정하여 동기화를 할 수 있습니다. 프로필 설정 방법을 간략히 살펴보면 다음과 같습니다.

  1. 프로필 이름을 지정합니다. (뭐 기본이죠)
  2. 폴더 A, 폴더 B를 선택합니다. (원본과 사본이 될 곳들입니다.)
  3. 동기화 방향을 지정합니다. A>B,  A<B의 일방 동기화 및 A<>B의 양방향 동기화가 가능합니다.
  4. 동기화 옵션은 디폴트로 사용해도 무방합니다만, 별도의 세팅이 필요한 경우 동기화 옵션을 변경합니다. (동기화 옵션 변경에 대한 내용은 뒤에서 다시 다루겠습니다.)

이 때, 리눅스에서는 삼바 공유가 디렉터리 선택 목록에서 표시되지 않습니다. 노틸러스를 통해 마운트한 삼바 공유 폴더는 숨김 속성을 가지므로 목록에서 표시가 되지 않더군요. 이 경우에 저는 아래와 같이 해당 폴더에 대한 심볼릭 링크를 만들어 해결 했습니다.

  • 노틸러스를 통해 삼바 공유 폴더를 마운트 합니다. (smb://아이디@서버주소/공유폴더이름) 이 때 패스워드가 걸린 경우에는 패스워드를 입력해 줍니다.
  • 이렇게 공유한 폴더는 홈 디렉터리 아래에 ./gvfs/공유이름으로 마운트 됩니다.
  • 그래서 $ ln -s ~/.gvfs/공유이름 심볼릭링크이름 과 같이 명령을 주어 홈 디렉터리에 해당 폴더로의 심볼릭 링크를 생성해서, 디렉터리 란에 심볼릭 링크의 경로를 적어주었습니다. (혹은 아이콘을 눌러 선택해도 됨)
    * 생각해보니 이 방법이면 rsync도 삼바 공유를 지원하지 않을까 싶긴 합니다.

윈도에서는 공유폴더에 \공유.서버.아이피.주소\공유폴더\경로명 과 같은 형태로 접근하므로, 원격 폴더의 이름을 그대로 사용했습니다. 그리고 동기화 버튼은 양방향을 선택했지요. 그리고 특정 폴더는 동기화에서 제외하기 위해 ‘방송’ 폴더는 제외 폴더에 등록하였습니다. (이렇게 하면 ‘방송’이라는 폴더와 그 하위 폴더, 파일이 모두 동기화에서 제외됩니다.)

그런 후 Analyze 버튼을 클릭하면 아래 스크린 샷처럼 분석 결과가 표시됩니다.

이제 play 모양처럼 생긴 Sync 버튼을 클릭해 주면 왔다 갔다 파일의 복사가 진행됩니다. 만약 같은 이름의 파일이 위치한다면 설정에 따라 가장 최근에 변경된 파일이 살아 남도록 합니다. (설정에 따라서는 용량이 가장 큰 파일을 남겨두거나 이름을 바꾸어 두 개의 파일을 모두 남겨둘 수도 있습니다.)
그리하여 저는 노트북 — 공유서버 — 데스크톱의 순으로 연결하여 그간 수동으로 동기화 할 엄두를 못 내던 폴더들을 지금 동기화하고 있습니다. 근 몇 달에 걸친 사항들이 백업되는 과정을 지켜보노라니, 흐뭇하기 그지 없네요.