티스토리 뷰

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
사용자 삽입 이미지

 토탈 커맨더는 상당히 유명한 파일 관리자이다. 파일 관리자라는게 윈도우에서는 사실 DOS 시절만큼 유용하지는 않는데, 탐색기가 그 역할을 많이 해주기 때문이다.

 회사에서 많은 사람들이 토탈 커맨더를 쓰고, 회사에서도 구입을 해서 지원을 해주고 있는데, 회사에서 토탈 커맨더를 이용하는 기능 중에 하나는 파일 분할/결합 기능이다. 회사 메일로 파일을 첨부해서 보낼 때 최대 50메가의 제한이 있는데, 이보다 큰 파일을 보낼 때 파일을 분할해서 보내는 것이다.

 이 분할/결합 기능을 잠깐 살펴보자. 분할된 파일은 XXXX.001, XXXX.002 형식의 파일이 여러개 생기고, XXXX.crc 라는 파일이 생긴다. 이 crc 라는 파일을 열어보면 다음과 같은 내용이다.

filename=XXXX.xxx
size=0000000
crc32=535AAF17


 정말 간단한 내용이다. 파일이름은 뭐고, 결합했을 때의 크기는 얼마이고, crc32 라는 값은 535AAF17 이라는 것이다. 이 crc32 라는 것은 이름만 봐도 알 수 있듯이 체크섬일 것이다. 구글로 검색해보니 역시 zlib 의 checksum 이다. 그리고 분할된 파일들의 용량을 보니, 그냥 파일 확장자의 번호에 따라서 단순히 합치기만 하면 될 것 같았다.

 그래서 간단히 테스트하려고 파이썬으로 코딩해봤다. 파이썬에서는 기본적으로 zlib 를 제공해준다.

import zlib

def testmain():
    f1 = open("A.001", "rb")
    f2 = open("A.002", "rb")

    of = open("result.zip", "wb")

    d1 = f1.read()
    d2 = f2.read()
    of.write(d1)
    of.write(d2)

    strCRC = zlib.crc32(d1 + d2)
    print "SIZE  : " + str(len(d1) + len(d2))
    print "CRC32 : %08X" % (0xFFFFFFFFL & (strCRC))
    f1.close()
    f2.close()
    of.close()

if __name__ == "__main__":
    testmain()
 결과는 간단히 크기, 체크섬 모두 XX.crc 내용과 같았다.

 이런 분할/결합 방법이 널리 쓰이는 건지는 모르겠지만 토탈 커맨더 같은 유명한 프로그램이 쓸 정도면 제법 괜찮은 방법인것 같다. 나중에 시간되면 C# 으로 간단한 유틸리티를 만들어봐야겠다. 구글에서 검색해보면 C# 으로 CRC32 를 구하는 코드도 쉽게 구할 수 있다.

댓글
최근에 올라온 글
Total
Today
Yesterday