lftp를 이용해 s3 sync처럼 CLI에서 FTP에 파일 동기화 하기

아직도 가끔은 FTP를 통해서 산출물을 배포해달라는 클라이언트가 있습니다.
가급적 지양하는 방법이지만 어쩔 수 없이 써야 할 때가 있죠.
역시 가장 쉽게 FTP를 이용하는 방법은 FileZilla같은 FTP클라이언트를 쓰는 거지만, 가급적이면 CLI 상에서 해결을 했으면 하는 바람이 들었습니다.

s3의 경우 위와 같이 CLI의 sync명령을 이용하면 s3 버킷에 파일을 배포할 수 있는데요,
단순 업로드가 아닌 파일을 비교해서 변경된 내역들만 업데이트를 해주게 됩니다.
웹스톰의 터미널 뷰에서 바로 실행도 가능하고, 스크립트를 미리 만들어서 자동화도 시킬 수 있죠.

이런 컨셉으로 CLI에서 FTP 동기화를 하는 방법을 찾아보았습니다.

OSX에서는 리눅스의 ftp 클라이언트인 lftp를 brew를 통해서 설치하고 이용할 수 있습니다.
리눅스를 쓰신다면 yum이나 apt-get을 통해서 설치하시면 되겠구요.
윈도를 쓰신다면 음… 이건 윈도를 잘 아시는 다른 분들에게 토스를…

설치 후 lftp 명령으로 ftp에 접속할 수 있습니다.
-u 에는 아이디를 입력할 수 있습니다.
username,password 형태로 콤마를 이용해 패스워드까지 한번에 넣을 수도 있지만, 히스토리에 남게 되기 때문에 보안상 좋진 않습니다.

mirror 명령을 이용해 서버 -> 로컬로 동기화를 시킬 수 있습니다. 우리는 반대로 로컬 -> 서버의 동기화를 하려는 것이므로 -R 옵션을 사용합니다. -e 옵션으로 소스에서 삭제된 파일을 타겟쪽에서도 삭제시킬 수 있습니다.

초기 목적은 자동화였으므로 위와 같이 한줄로 실행 가능하게 스크립트를 작성합니다.

끝.