본문 바로가기

내가 작업한 것들/소프트웨어

WEBDAV 에서 받은 파일이 다 깨진거 같을때 ?!

 어느날, 기존에 WEBDAV 에 올려 뒀던 파일을 내려 받고 나서 열려고 하니 뭔가 이상해 지고, 파일 내용이 단순 텍스트로만 된 것이 아래 이미지 처럼 보이는 경우를 격는다면?



 혹시 이런 경우가 생기는 것은 먼저 HEX editor 로 아래 2 바이트 코드가 0x78 과 0x9C 로 시작 되는지 확인 해 보는 것이 좋습니다. 만약 이 경우는 WEBDAV 서버로 올린 클라이언트가 deflate 로 압축해서 보냈거나, 서버가 내용을 deflate 로 압축 한상태를 받는 클라이언트가 이를 인지 하지 못하고 그대로 파일을 받은 경우 입니다.



 이 0x78 과 0x9C 는 zlib 의 compress 를 거치면 만들어 지는 Magic header 이며, 이 경우 단순 deflate 를 거친 버퍼를 그대로 저장하는 경우라 하겠습니다.

 그래서 WEBDAV 로 미친듯이 파일을 받고 나서 몽땅 다 이런 상황에 처했다면 제가 만든 간단한 command console 에서 구동이 가능한 유틸로 원래 파일로 복구 할 수 있습니다. 사실 클라이언트가 이를 자동으로 처리하면 편하겠지만, 실상 그러지 못한 경우가 있기 때문에 필요한 부분이기도 합니다.



 먼저 파일은 2개가 있습니다만, 하나는 실행 바이너리만 있고, 하나는 소스코드(코드블럭스 프로젝트 와 mingw 용 소스코드)만 있습니다. 실행 파일만 받으시려면 아래의 zfiledcd_verison0_1_0_0.zip 파일만 받아 압축을 풀어 쓰시면 됩니다.


 실행 파일만 쓰는 경우 다음과 같이 쓰시면 됩니다.

  • zfiledcd (다운로드 받은 폴더 위치) (찾을 파일 이름) (--replace)
    • 예제1 :
      현재 실행 하는 폴더 위치 부터 모든 파일을 검색 해서 zlib 압축이면 해제 함.
      단, 압축이 해제된 파일은 확장자가 원래 파일 이름 뒤에 .extract 가 붙음.
      • zfiledcd.exe
    • 예제2:
      현재 실행 하는 폴더 위치 부터 모든 파일을 검색 해서 zlib 압축이면 이를 해제 하고 압축된 파일이름에 덮어 쒸움.
      • zfiledcd.exe --replace
    • 예제3:
      D: 드라이브의 download 폴더 안의 모든 파일을 검사해서 zlib 압축이면 이를 해제 하고 원래 파일로 교체.
      • zfiledcd.exe d:/download --replace
    • 예제4:
      D:드라이브의 download 폴더 내에 확장자가 .txt 인 파일만 검사 하고, zlib 압축이면 이를 해제 및 교체 함.
      • zfiledcd.exe d:/download *.txt --replace

 보통 다운로드 받은 파일 폴더로 zfiledcd.exe 를 복제 한 다음 단순히 zfiledcd --replace 로 전체 모두를 원래대로 변환 하는 편리한 방법을 추천 드립니다.

 단, 이 프로그램은 2바이트 언어인 한글이나 중국어 등등은 고려되지 않았으므로, 이를 위해서는 소스코드를 수정해서 기능을 향상 시켜 쓰시는 것을 추천 드립니다.


다운로드는 아래 2파일중 마음대로 쓰시기 바랍니다.


zfiledcd_src_v_0_1_0_0.zip


zfiledcd_verison0_1_0_0.zip