아스키모드 - 전송과정에서 포맷을 변경
바이너리 - 파일 그대로 전송
> 파일 포맷을 왜 변경하고 어떻게 변경하는가 ?
UNIX(Linmux 포함) 시스템과 DOS(MS Window 포함)는 텍스트파일(아스키코드로 이루어지는 파일)을 표현하는 방식이 다르다.(바이너리는 같다)
새로운 라인의 시작을 알리는 개행문자(newline character)의 표현이 다른데
개행문자란 : 쉽게 말해 글을 쓰다가 엔터를 치면 줄이 바뀌게 되는데 그때 끼어드는 문자를 말한다.
개행문자 코드는 다음처럼 다르다.(UNIX 시스템에서의 방식)
UNIX : \n
DOS : \r\n
UNIX <==> DOS 텍스트 파일 전송이 될때는 개행문자를 해당 시스템에 맞게 변경해줘야 한다.
예로써, DOS에서 UNIX 시스템으로 전송할때 개행문자 변경이 다음과 같다
\r\n => \n
(UNIX에서 DOS로 변경하면 반대)
아스키 모드에선 서버가 파일을 전송할때 라인단위로 읽어서 라인의 끝에 \r\n을 붙여서 보내야한다.
Hi,
My name is brian.
위 내용을 아스키모드로 보내면 아래와 같다. 쉽게 생각해서 줄바꿈문자 \n을 \r\n으로 바꿔서 보낸다고 보면 된다.
Hi,\r\n
My name is brian.\r\n
바이너리 모드에서는 줄바꿈 문자도 하나의 데이터로 취급되기 때문에 아래와 같다.
Hi,\n
My name is brian.\n
그래서 바이너리 파일을 아스키 모드로 보낼때 파일이 깨지는 이류가 바이너리 파일에서는 \n이 줄바꿈 문자로 사용된게 아니라 단순히
데이터를 표현하는 한 문자인데 이걸 모두 \r\n으로 변환해서 보내 때문에 파일이 망가지는 것이다.
=> 서버이전 시 .png 파일을 못불러와서 에러가 난다면, data폴더를 바이너리 전송방식으로 설정하고 내려받고 다시 바이너리 방식으로 덮어쓰면된다.
[출처] ftp전송방식 - 아스키(ASCII), 바이너리(binary)|작성자 JGsoft
http://blog.naver.com/jaegunkim?Redirect=Log&logNo=70179722968