열심히 만든 대용량 자료의 배포에 대한 고민
과거 업데이트 패키지부터 현재 GARS, VARS 까지 꽤나 다양한 도구들을 만들고 이를 배포하면서 항상 고민이었던 것이 있었습니다.
"이 파일들을 어디서 어떻게 배포할 것인가?"
자신이 관리하는 서버 공간을 내어준 고마운 분도 계셨지만 그건 제 공간이 아니었고, 제 나름의 호스팅 공간을 활용해보기도 했지만 용량과 트래픽이 언제나 모자라 금방 죽어버렸고, 지금은 외국의 무료 자료실인 MediaFire 를 통해 배포하고 있지만 업로드 용량 제한과 외국인지라 다운로드 속도가 느린 단점이 있습니다. 역시나 개인이 몇백메가의 파일을 꾸준히 배포하기란 참 쉬운 일이 아니었습니다.
그런데 웹 서비스 중 블로그나 카페, 메일 등의 첨부 파일 업로드 용량은 개별 파일에는 어느 정도의 용량 제한이 있지만 활용할 수 있는 전체 용량과 트래픽은 거의 무제한인 경우가 많습니다. 그리고 국내 서비스라면 보통 다운로드 속도 또한 빠르죠. 그리고 특정 서비스들은 다른 다운로드 스크립트를 거치지 않고 직접 다운로드가 가능하기도 하고요.
하지만 직접 다운로드가 가능하더라도 이러한 서비스들의 첨부 파일을 그대로 활용하기엔 문제가 좀 있습니다. 자료를 제공하는 제가 불편한 것은 별 문제가 아니지만, 결정적인 것은 다운로드 받으시는 분들이 적게는 몇 개에서 많게는 몇십 개에 이르는 분할 파일들을 일일히 다운로드 받아야 한다는 문제가 있습니다. 이것은 방문자 입장에서 굉장히 큰 불편으로 다가오게 됩니다.
"만약에 블로그, 카페, 메일 등의 첨부 파일을 통해 몇백 MB 에 이르는 파일을 배포한다면 어떻게 해야 할까?"
이번에 VARS 의 새 버전을 배포하면서 불현듯 예전에 했었던 그 생각이 나더군요. 이번 포스팅은 과거 그러한 고민을 한 후 제 나름대로 구상했었던 방법을 설명하는 글입니다. 이런 쪽으로는 포스팅을 한 기억도 없고, 그러니 생각난 김에 정리하는 것도 나쁘지 않을 것 같네요. 인터넷 공간에 업로드 된 (직접 다운로드 가능한) 다량의 파일을 간편하게 자동으로 다운로드할 수 있는 자동화 도구를 만들기 위한 작은 참고가 될 수도 있고, 뭐 방법을 알면 여러분들이 활용하기 나름이니까요.
참고로 이번 글에서 만들게 될 자동 다운로드 도구는 대용량의 단일 파일을 다운로드 하는 것이 아닌 몇십 개에 이르는 다량의 파일들을 한 번에 다운로드하는 것에 특화된 것입니다. 그 중에서도 하나의 파일을 여러 개로 분할한 분할 파일들의 일괄 다운로드를 기준으로 잡고 있습니다.
자동 다운로드 도구의 목표
제가 이 자동 다운로드 도구에서 생각한 것은 다음의 세 가지 입니다.
1. 사용자 입장에서 사용이 간단할 것. 할 수 있다면 실행 한 번으로 끝나게.
2. 분할 업로드된 파일들을 모두 자동으로 다운로드하고 다운 받은 파일들이 문제가 없는지 검증할 수 있을 것.
3. 분할된 파일들을 원래의 파일로 합쳐서 가장 눈에 띄는 바탕 화면(또는 다운로드 폴더)로 저장할 것.
2. 분할 업로드된 파일들을 모두 자동으로 다운로드하고 다운 받은 파일들이 문제가 없는지 검증할 수 있을 것.
3. 분할된 파일들을 원래의 파일로 합쳐서 가장 눈에 띄는 바탕 화면(또는 다운로드 폴더)로 저장할 것.
쉽게 아래와 같은 도구를 만드는 거죠. 해당 파일은 별건 아니고 포스팅 설명용으로 열혈강호 2 의 캐릭터 일러스트를 모아 놓은 약 22MB 크기의 압축 파일을 다운로드 받는 도구입니다. 해당 압축 파일은 이번 글을 위해 5MB 의 크기로 분할하여 티스토리에 업로드하였고요. 한 번 아래의 도구를 다운로드 받으셔서 실행해보시면 어떤 건지 아실 수 있을 듯 하네요.
* 참고로 WinRAR SFX 파일들은 일반적으로 많이 사용되는 파일이 아니기 때문에, 다운로드 과정에서 일부 백신이나 웹 브라우저의 보안 검사 결과 의심 파일로 인식이 될 수 있습니다. 바이러스라는 게 아니라 잘 모르는 파일이니 그럴 수도 있다는 일종의 경고로 보시면 됩니다. 설명할 제작 과정을 보시면 아시겠지만 아무런 문제가 없는 파일이니 걱정하지 마세요. 다운로드 받으시고 해당 파일을 바이러스 검사해보셔도 별 문제가 없는 것을 확인하실 수 있을 겁니다.
즉, 단일 파일을 곧바로 바탕 화면으로 다운로드 했을 때와 같은 효과를 분할 파일을 통해서도 이루어내는 게 목적이죠. 대충 무엇인지는 아시겠죠? 참고로 제가 아는 게 거의 배치 파일 뿐인지라 배치 파일을 기반으로 만들었습니다. 일단 여기에서 사용된 주요한 도구와 기술들은 아래와 같습니다. [원래는 이 글에서 모든 걸 설명하려고 했는데 이게 은근히 분량이 장난이 아니네요? 그래서 따로 작성하기로 했습니다.]
Wget - 간단하게 인터넷의 파일을 다운로드 받는 명령형 도구, 윈도우용
HJSplit 3.0 - 간단한 파일 분할 및 병합 프로그램
파일 병합(Join) 프로그램이 없을 때 간단하게 Copy 명령만으로 분할된 파일들을 하나로 합치는 방법
FCIV - 명령형 해시값 체크 프로그램, 마이크로소프트
WinRAR - 자동 풀림(SFX) 기능을 이용하여 자동 실행 파일 만들기
배치 파일에서 바탕 화면, 내 문서, 다운로드와 같은 사용자 폴더의 경로를 정확하게 구하기
HJSplit 3.0 - 간단한 파일 분할 및 병합 프로그램
파일 병합(Join) 프로그램이 없을 때 간단하게 Copy 명령만으로 분할된 파일들을 하나로 합치는 방법
FCIV - 명령형 해시값 체크 프로그램, 마이크로소프트
WinRAR - 자동 풀림(SFX) 기능을 이용하여 자동 실행 파일 만들기
배치 파일에서 바탕 화면, 내 문서, 다운로드와 같은 사용자 폴더의 경로를 정확하게 구하기
참고하시고요. 그럼 앞서 제공한 자동 다운로드 도구를 스텝 바이 스텝으로 만들어 보도록 하겠습니다.
분할 파일의 준비 및 업로드
간단하게 앞서 이야기한 것과 같은 일러스트 이미지 몇 장을 압축한 ZIP 압축 파일을 준비해봤습니다.
작업의 원본이 될 대용량 파일의 모습
그리고 이렇게 준비한 파일을 간단하게 앞서 언급한 HJSplit 을 사용하여 5MB 크기로 분할 저장하였습니다. 참고로 이 때 5MB 는 그냥 제가 임의로 정한 겁니다. 자신이 사용할 서비스에서 지원하는 첨부 파일 업로드 용량 내외에서 적절히 분할하면 됩니다.
이렇게 분할된 파일을 모두 업로드합니다. 저는 티스토리에 업로드하도록 하겠습니다.
기본적으로 준비해야 할 것은 모두 마쳤습니다. 이제 이렇게 준비한 분할 파일과 업로드된 파일들을 통해 자동 다운로드 도구를 만들러 가보죠.
자동 다운로드 도구 배치 파일의 수정
1. 자동 다운로드 도구 뼈대
제가 미리 필요한 파일과 배치 파일을 준비했습니다. 아래의 뼈대 파일을 다운로드 받은 후 압축을 풀어주면 됩니다.
AutoDown.cmd 파일을 메모장으로 열어보면 FileOri, URL001 ~ URL099, Hash001 ~ Hash009 라는 총 세 가지 범주의 변수들이 배치 파일 시작 부분에 위치하고 있습니다. 이제 여기에 알맞게 값들을 채워넣으면 됩니다.
FileOri = 원본 파일 이름
URL0XX = 다운로드 URL
Hash0XX = 파일 해시값
URL0XX = 다운로드 URL
Hash0XX = 파일 해시값
2. 원본 파일 이름의 지정
FileOri 에는 원본 파일 이름을 지정합니다. 분할 파일은 모두 원본이름.001, 원본이름.002, 원본이름.003 ... 과 같이 파일 이름이 지정되기 때문에 원본 파일 이름을 지정하면 배치 파일 내에서 분할 파일들의 이름을 자동으로 지정하게 됩니다. 그리고 최종적으로 다운로드 완료된 파일의 이름으로 설정됩니다. 아무튼 이번 글에서는 Illust.zip 이 되겠죠.
set FileOri=Illust.zip
3. 다운로드 URL 과 MD5 해시값의 지정
이제부터는 각각의 분할 파일마다 공통적으로 반복해야 하는 작업입니다. 정확하게 분할 파일 순서대로 작업해야 하니 헷갈리지 마세요.
먼저 업로드한 첫 번재 파일의 다운로드 URL 을 알아냅니다. 인터넷 익스플로러에선 다운로드 링크를 마우스 오른쪽 버튼으로 클릭하고 속성으로 들어가면 주소(URL) 이 표시되니 이를 복사하면 되며, 크롬의 경우엔 마찬가지로 다운로드 링크를 마우스 오른족 버튼으로 클릭하면 링크 주소 복사가 있고 이를 선택하면 해당 다운로드 주소가 곧바로 클립보드로 복사됩니다.
인터넷 익스프롤러
크롬
이렇게 복사한 주소를 그대로 URL001 에 입력합니다.
set URL001=http://capplestorage.tistory.com/attachment/cfile27.uf@1308214450A7B5461064C1.001
다음으로 HJSplit, HashTab, FCIV 등의 해시값 체크 프로그램으로 해당 파일의 MD5 해시값을 알아냅니다. [개인적으론 HashTab 추천] 이 때 해시값의 대소문자 여부는 상관이 없습니다.
이렇게 알아낸 MD5 해시값을 그대로 Hash001 에 입력합니다.
set Hash001=A689A05BA81FCC3790B36DE5D7449C8A
나머지 분할 파일들도 모두 동일하게 작업하시면 됩니다.
이 외에는 배치 파일 내에서 여러분들이 건드릴 부분은 없습니다. 작업을 모두 마쳤으면 저장하신 후 반드시 AutoDown.cmd 파일을 한 번 실행하여 정상적으로 다운로드가 이루어지고 최종적으로 바탕 화면에 다운로드 된 파일도 이상이 없는지 확인합니다.
이 확인 작업이 필요한 이유는 먼저 URL 이 잘못된 경우 중간에 파일이 빠지게 되어 최종적으로 완성된 파일이 깨질 수가 있고, 해시값이 잘못된 경우 그 잘못 입력된 해시값으로 인해 다운로드 중간 확인 과정을 넘어가지 못해 계속 하나의 파일을 무한정 다시 받는 문제가 생길 수도 있기 때문입니다. 그러니 반드시 하나의 파일을 무한정 다시 받지는 않는지, 다운로드가 완료되어 바탕 화면에 생성된 파일이 정상적인 파일인지 확인하시길 바랍니다.
사실 작업은 끝났습니다. 이대로 AutoDown.cmd, fciv.exe, wget.exe 세 가지 파일 그대로 압축하여 제공해도 되죠. 하지만 이럴 경우 사용자가 다시 압축을 풀고 배치 파일을 실행해야 하는 불편이 있죠. 그래서 이러한 불편을 해소하기 위해 실행 한 번으로 모든 것이 자동으로 이루어지도록 WinRAR 를 통해 SFX 실행 압축 파일로 만들어 보도록 하겠습니다.
WinRAR SFX 자동 실행 압축 파일 만들기
이제 완성된 뼈대 파일 세 개를 WinRAR 를 통해 SFX 자동 실행 파일로 압축을 시작합니다.
01. 세 개의 파일을 그대로 압축 파일에 추가합니다.
02. 압축 파일의 이름은 원하는대로 적절히 지정하고, 자동풀림(SFX) 압축파일 생성과 압축된 파일 테스트를 체크합니다. 그 외 나머지는 굳이 건드릴 필요는 없습니다.
02. 압축 파일의 이름은 원하는대로 적절히 지정하고, 자동풀림(SFX) 압축파일 생성과 압축된 파일 테스트를 체크합니다. 그 외 나머지는 굳이 건드릴 필요는 없습니다.
03. 고급 탭의 SFX 옵션으로 들어갑니다.
04. 설치 탭에서 압축 푼 후 실행할 파일로 AutoDown.cmd 를 지정합니다.
05. 모드 탭에서 임시 폴더에 풀기를 체크해주고, 사일런트 모드를 모두 숨기기로 설정합니다. 이를 통해 배치 파일 작업이 임시 폴더에서 진행되도록 하며, 사용자의 추가적인 입력없이 곧바로 작업이 진행될 수 있게 됩니다.
06. 업데이트 탭의 덮어쓰기 모드를 모든 파일 덮어쓰기로 설정합니다. 이렇게 함으로써 같은 파일(또는 동일한 종류의 파일)을 실행하였을 때 혹시나 남아 있을지 모르는 기존의 파일들이 간섭을 일으킬 수 있는 문제를 해결할 수 있습니다.
07. 마지막으로 텍스트와 아이콘 탭의 자동풀림(SFX) 아이콘 파일을 지정해주면 자신만의 아이콘이 적용된 실행 파일을 만들 수 있습니다. 그 외에 딱히 더 건드릴 부분은 없습니다. 그대로 확인을 클릭합니다.
08. 다시 WinRAR 창으로 돌아오면 확인을 눌러 압축을 진행하면 자동 다운로드 도구가 완성됩니다. 최종적으로 해당 파일을 실행해보아 마찬가지로 다운로드에 문제가 없는지 확인합니다.
좀 더 첨언하자면 포함된 파일들의 특성상 압축에 굳이 솔리드 방식을 사용할 필요는 없을 듯 하고요. 압축률도 최고로 지정할 필요가 없습니다. [이런 작은 파일들은 오히려 용량이 늘어납니다.] 글에서와 같이 RAR SFX 로 만들어도 되고, ZIP SFX 로 만들어도 되는데 그건 개인 취향 문제이고요. 그 외에 해당 배치 파일에 포함된 작업들은 관리자 권한이 필요가 없기 때문에 굳이 관리자 권한을 획득할 필요도 없습니다. 그러한 연유로 32비트 64비트용으로 따로 제작할 필요 없이, 32비트용 하나만 만들어서 32비트, 64비트 윈도우 모두에서 사용할 수 있습니다.
끝 입니다. 배치 파일이 핵심인데 배치 파일에서 여러분들이 손댈 게 없으니 뭔가 이야기할 꺼리가 없네요. ^^;
이러한 방식이 과연 정상적인 서비스 이용에 속하는 것인가?
자동 다운로드 도구를 만들어 보았습니다. 하지만 제 블로그 구독자 여러분들은 제가 이러한 방식의 자동 다운로드 도구를 통해 GARS 나 VARS 를 배포하는 걸 보신적은 없으실 겁니다. 그것은 "이것을 정상적인 서비스의 이용으로 봐도 좋을 것인가?" 란 의문 때문이었습니다.
같은 파일일지라도 사용자가 해당 서비스에 방문하여 다운로드를 받는 것과 해당 서비스에 방문하지 않고 다른 곳에서 곧바로 다운로드를 받는 것은 분명 큰 차이가 있죠. 그래서 보통 많은 서비스들이 직접 다운로드를 제공하지 않기도 합니다. 물론 글에서 예제로 든 티스토리는 티스토리 내의 자료를 티스토리의 외부에서도 활용할 수 있도록 외부 링크를 허용하고 있긴 하지만 이와 같이 wget 을 통해 파일을 자동으로 다운로드 받는 것을 과연 외부 링크의 범주로 볼 수 있을까요?
솔직하게 모르겠습니다. 그래서 저는 일단은 만들었지만 사용은 안 하고 있습니다. 그래도 이 글을 올리는 것은 배치 파일을 통해 이러한 작업도 가능하다는 것을 보여드리고 싶었습니다. 다른 곳에서도 응용은 가능하니까요. 자동 다운로드 도구의 제작은 여기까지입니다.
p.s 자신이 직접 운영하고 관리하는 서버 또는 호스팅 공간에 업로드된 파일을 통하는 것은 아무런 문제가 되질 않겠죠. 단지 그러한 공간을 가지고 있다면 FTP 를 통해 단일 파일로 올리는데 별 문제가 없을 테고, 그래서 굳이 이러한 방식을 사용하지 않아도 될 테지만요. ^^;
그리고 글에서 사용된 일러스트 압축 파일엔 아래와 같은 열혈강호 2 캐릭터 일러스트들이 포함되어 있습니다. 이거 제 기억으론 제가 중학교 때부터 보던 건데 도대체 완결은 언제 날지 항상 궁금하네요. 문득 보니까 그냥 옛날 생각이 나네요. ^^;
그리고 글에서 사용된 일러스트 압축 파일엔 아래와 같은 열혈강호 2 캐릭터 일러스트들이 포함되어 있습니다. 이거 제 기억으론 제가 중학교 때부터 보던 건데 도대체 완결은 언제 날지 항상 궁금하네요. 문득 보니까 그냥 옛날 생각이 나네요. ^^;