카테고리 보관물: 유용한 프로그램

파일 동기화 프로그램 FreeFileSync

작업물 파일을 백업하는데 단순히 복사하는 것 보다 좋은 방법이 없을까 고민한 적이 있었습니다. 여러가지 백업 프로그램이 있지만 과거의 파일이 필요하거나 내용을 빠르게 확인하여야 하는 경우 기존 백업 프로그램에서는 확인하기가 쉽지 않아 단순 복사에 의존했었습니다. 그래서 나만의 백업 프로그램을 제작해서 사용하려고 이런저런 생각을 해 보았는데 생각보다 많은 노력이 들어갈 것 같았습니다. 그렇다면 분명히 원하는 기능을 가진 프로그램이 있을 것이라는 생각이 들어서 검색을 시작하였습니다. 비슷한 기능을 하는 프로그램이 몇 종류 있었는데 필자의 상황에 맞는 프로그램은 FreeFileSync 이었습니다.

이 프로그램은 원본과 대상의 파일을 비교하여 서로 같게 만들어 주는 프로그램 입니다. 다음 주소에서 다운로드 받을 수 있습니다.

http://www.freefilesync.org/download.php

설치 후 실행하면 다음과 같은 화면이 나타납니다.

FreeFileSync 실행화면

FreeFileSync 실행화면

새로 만들기 버튼을 클릭하면 설정된 값이 초기화 됩니다. 이 상태에서 원하는 형태로 설정하면 됩니다. 먼저 왼쪽 영역에 있는 찾아보기 버튼을 클릭하여 원본 폴더를 지정합니다. 그 다음 우측 영역에 있는 찾아보기 버튼을 클릭하여 대상이 되는 폴더를 선택합니다.

톱니바퀴모양의 버튼을 클릭하면 비교 기준, 필터, 동기화 처리 방식을 지정할 수 있습니다.

설정 대화상자

설정 대화상자

비교탭에서 비교 방식을 지정합니다. 파일 시간 및 크기, 파일 내용, 파일 크기 선택사항이 있는데 파일 시간 및 크기를 지정하면 됩니다.

필터탭에서는 포함하거나 제외할 파일을 지정합니다. 기본적으로 포함은 *(모두) 이고 제외는 휴지통 및 시스템에서 사용하는 파일들이 지정되어 있습니다. 제가 사용해 본 바로는 모두를 포함하고 일부 제외할 파일이나 폴더를 지정하는 것이 편했습니다. 유의할 사항은 전체 경로가 아니라 원본으로 지정된 경로를 기준으로 지정을 해야 한다는 것입니다. 예시 보이기 링크를 클릭하면 내용을 볼 수 있습니다. 예를 들어 원본이 C:\Source 이고 C:\Source\file.txt 파일을 제외하고 싶다면 \file.txt 으로 지정하여야 합니다.

마지막으로 동기화탭은 어떤 방식으로 파일을 동기화 할지 지정합니다. 각 버튼을 클릭해 보면 자세한 설명을 확인할 수 있습니다. 본인과 맞는 방식을 선택하면 됩니다.

설정 후 저장하면 목록에 나타납니다. 필요에 따라 여러개를 생성하여 관리하시면 됩니다. 필자의 경우 개발에 관련해서 주고 받은 자료 백업용, 휴대전화로 촬영한 이미지 백업용, 작업 소스 백업 파일 백업용 세개를 만들었고 PC 내의 별도의 디스크, 외장 저장장치에 백업 되도록 설정하여 관리하고 있습니다.

비교 버튼을 클릭하면 아래 이미지와 같이 원본과 대상 폴더를 비교하는 작업이 시작됩니다. 자료의 양에 따라 시간이 많이 소요될 수 있습니다.

원본과 대상폴더의 비교

원본과 대상폴더의 비교

비교가 끝나면 대상 파일의 개수와 용량을 보여 줍니다.

비교를 마치고 대상 파일 및 폴더 정보 표시

비교를 마치고 대상 파일 및 폴더 정보 표시

우측의 동기화 버튼을 클릭하면 지금 동기화를 시작여부를 묻고 시작 버튼을 클릭하면 설정한 대로 동기화가 진행됩니다. 시간은 대상 폴더와 파일의 개수에 따라 결정됩니다. 필자가 사용해본 결과 용량이 작은 파일이 많은 경우 시간이 많이 소요되었습니다. 동기화가 마무리 되면 다음의 화면에 나타납니다. 로그탭을 클릭하여 복사된 파일과 폴더를 확인할 수 있습니다.

동기화 완료

동기화 완료

원본과 대상폴더가 설정에 따라 동기화 되었음을 확인하실 수 있습니다. 그런데 폴더와 파일은 수시로 변하는데 그때마다 프로그램을 실행하여 비교 후 동기화 버튼을 클릭하는 것은 효율적이지 않습니다. 그것을 해결할 수 있는 일괄작업으로 저장 기능이 있습니다. 구성설정 상단 5개 버튼 중 가장 오른쪽에 있는 버튼이 바로 일괄작업으로 저장할 수 있습니다. 이 버튼을 클릭하면 다음과 같은 대화상자가 나타납니다.

일괄 작업으로 저장 대화상자

일괄 작업으로 저장 대화상자

필요한 설정을 선택하고 다른 이름으로 저장 버튼을 클릭하면 ffs_batch 확장자를 가지는 파일로 저장할 수 있습니다. 이 파일을 텍스트 에디터로 열어보면 설정을 저장한 xml 파일임을 알 수 있습니다. 일괄 작업 예약 방법은? 링크를 클릭하면 작업 스케줄러에 설정하는 방법을 안내하고 있는 주소를 오픈합니다. 요약하면 실행 프로그램에는 FreeFileSync 실행파일을 지정하고 인수 추가 란에 저장한 파일을 지정하여 스케줄을 만들면 된다라는 것 입니다. 필자는 하루 두번 점심 시간과 오후 6 시 조금 지나서 자동으로 실행되도록 스케줄을 추가하여 운영하고 있습니다. 일일히 프로그램을 실행하지 않아도 알아서 실행이 되므로 매우 편리합니다.

무료로 사용할 수 있고 폴더비교 성능도 좋은 FreeFileSync 에 대해 소개해 보았습니다.

반복적인 작업을 줄여주는 AutoHotKey

AutoHotKey 는 하나의 프로그램이지만 사용할 수 있는 범위가 무척 다양합니다. 단축키를 지정하여 키가 눌려지면 여러가지 동작을 할 수 있도록 해 주는 프로그램 입니다. 다음의 링크에서 다운로드 받을 수 있습니다.

https://autohotkey.com/

포럼도 활성화 되어 있어 많은 정보를 얻을 수 있습니다. 스크립트 기반으로 되어 있어서 처음에는 익숙하지 않을 수도 있습니다. 하지만 잘 살펴보고 필요한 것을 위해 변경하다 보면 그리 어렵지 않습니다. 스크립트 작성하는 방법과 예제는 홈페이지를 참조하시면 됩니다.

여러 용도가 있지만 필자는 주로 작업시에 시간을 줄이는데 사용하고 있습니다. 몇 가지 소개해 보겠습니다.

  1. 마우스 드래그하면 자동으로 클립보드에 복사하기
    텍스트 에디터나 IDE 에서 작업을 하다보면 복사(Ctrl+C)와 붙여넣기(Ctrl+V)를 많이 실행하게 됩니다. 마우스를 드래그하여 글자를 선택하면 많은 경우 복사로 이어지게 됩니다. 그래서 마우스를 드래그 하면 자동으로 클립보드에 복사 되도록 하였습니다. 동작방식은 마우스 버튼을 클릭하면 좌표를 저장하고 버튼에서 손가락을 떼었을 때 좌표를 가져와서 서로 비교하여 지정된 길이 이상 차이가 나면 Ctrl+C 가 눌린 것처럼 하는 것 입니다. 무조건 이렇게 할 수도 있고 특정한 프로그램에서만 되도록 할 수 있습니다. 주의할 것은 여러개의 모니터를 사용하는 경우 메인 모니터를 기준으로 하기 때문에 보조 모니터는 좌표가 음수로 나타날 수 있습니다. 아래는 스크립트 입니다.

    ~LButton:: MouseGetPos x1,,win
    
    ~LButton Up::
    SetTitleMatchMode, 2
    TitleList = WordPad,Notepad,Word,AkelPad,Notepad++,UltraEdit,Visual Studio,Chrome,Java,SQL ;프로그램 제목
    Loop parse, TitleList, CSV
    GroupAdd Editors, %A_LoopField%
    
    IfWinActive ahk_group Editors
    {
        ;모니터의 개수와 해상도에 맞게 변경
        MouseGetPos x2	
        if ((x1 <= -1 and x1 >= -1280) and (x2 <= -1 and x2 >= -1280)) or ((x1 <= 1920 and x1 >= 1) and (x2 <= 1920 and x2 >= 1)) or ((x1 <= 3968 and x1 >= 1921) and (x2 <= 3968 and x2 >= 1921))
            if  (x2 - x1) < -30 or (x2 - x1) > 30
    			Send ^c ;Ctrl+C 전송
       return 
    }
    else
    {
       return
    }
    
  2. 마우스 가운데 버튼을 클릭하면 붙여넣기가 되도록 설정
    마우스 가운데 버튼을 클릭하는 경우가 거의 없어서 필자는 붙여넣기가 되도록 하였습니다. Ctrl+V 를 누르는 것보다 시간이 절약됩니다.

    ~Mbutton:: ;마우스 가운데 버튼
    	Send, ^v ;Ctrl+V 전송
    return
    
  3. 특정한 키를 누르면 현재일시가 타이핑되도록 설정
    필자는 파일을 만들거나 자료를 정리할 때 그리고 백업을 할때 일시를 뒤쪽에 붙여서 구별이 쉽게합니다. AutoHotKey 를 이용하지 않을때는 시계를 보고 입력 했었는데 이제는 자동화하였습니다. 생각보다 시간이 많이 절약됩니다. IME_CHECK 함수가 현재 입력기(IME) 모드의 정보를 가져옵니다. Ctrl+Alt+C 키를 누르면 -20170218103640 와 같은 형식으로 직접 입력한 것처럼 입력해 줍니다.

    ^!c:: ;Ctrl+Alt+C 키가 눌렸을때
    ret := IME_CHECK("A") ;키보드 입력상태
    
    if %ret% = 0 ;영문
    {
    	SendInput, -%A_YYYY%%A_MM%%A_DD%%A_Hour%%A_Min%%A_Sec%
    }
    else ;영문이 아니면
    {
    	Send, {vk15sc138} ;한영전환
    	SendInput, -%A_YYYY%%A_MM%%A_DD%%A_Hour%%A_Min%%A_Sec%
    	Send, {vk15sc138} ;한영전환
    }
    return
    
    IME_CHECK(WinTitle)
    {
        WinGet,hWnd,ID,%WinTitle%
        Return Send_ImeControl(ImmGetDefaultIMEWnd(hWnd),0x005,"")
    }
    
  4. 프로그램 실행
    단순 실행은 윈도우 자체로도 가능합니다. 하지만 더 복잡한 동작을 지정할 수 없습니다. AutoHotKey 를 이용하면 더 유연하게 프로그램을 실행할 수 있습니다. 예를 들어 복사된 텍스트로 구글 검색을 하고 싶다거나 영어사전에서 찾아보고 싶은 때가 있습니다. 그럴 때 유용하게 사용할 수 있습니다.

    #g:: Run, http://www.google.com/search?q=%Clipboard% Return ;윈도우키+G 클립보드에 있는 텍스트로 구글검색
    #n:: Run, http://endic.naver.com/search.nhn?sLn=kr&dicQuery=%Clipboard%&x=20&y=16&query=%Clipboard%&target=endic&ie=utf8&query_utf=&isOnlyViewEE=N Return ;윈도우키+N 클립보드에 있는 텍스트로 사전검색
    

이 글에서는 아주 일부의 예만 제시 하였습니다. 평소 반복적이고 시간이 많이 소요되는 작업이 있다면 AutoHotKey를 이용하여 자동화하여 다른 의미 있는 것에 더 많은 시간을 쓸 수 있도록 하시기 바랍니다.