오늘 회사에서 여느때와 다름없이 scp를 통해 파일을 타 서버로 전송하고 있었다. 문득 scp는 왜 scp인가 싶어 검색하니, Secure Copy의 줄임말이라고 한다. 그럼 왜 Secure라는 단어가 붙었나 싶어 더 찾아보니 SSH 기반이라 Secure라고 하더라.
얼마나 Secure한지 더 찾아보려던 찰나, scp는 너무 오래되고 융통성이 없어 OpenSSH 8.0부터 deprecated 되었다고 한다. 대안으로 Linux에서 원격지의 파일 전송을 위해 sftp, rsync 를 사용하라고 하는데... scp와 뭐가 다른지 알아보자.
Linux에서 기본으로 제공하는 OpenSSH에 포함된 명령어로 원격 파일 전송을 했다면 한번쯤 써봤을 법한 명령어다. SSH (Secure Shell) 프로토콜 기반으로 ssh에서 기본적으로 요구되는 사용자 정보를 입력해야 사용할 수 있다. 22 포트를 사용한다. 명령어 사용법은 다음과 같다.
scp [-r][user@]host:file path
원격지의 파일 시스템에 접근하는 용도로 사용된다. 22 포트를 사용한다. scp와의 차이점은 파일 시스템 제어 기능이 추가적으로 있다는 점이다. 그 예시로는 중단된 전송 재개, 디렉터리 나열, 원격 파일 제거가 있다. 명령어 사용법은 다음과 같다. scp 사용법과는 사뭇 다른 차이점도 있다.
sftp user@host
(비밀번호 입력)
get filename (원격지에서 로컬로 다운로드)
put filename (로컬에서 원격지로 업로드)
원격지의 파일 동기화를 위해 사용하는 명령어다. 물론 scp와 같이 원격지에 파일 전송도 할 수 있다. 22 포트를 사용한다. mariadb와 같은 서비스에서는 이중화된 서버간 replication을 할때, rsync 명령어를 통해 원격 디렉토리간 파일 동기화를 진행하기도 한다. 기본 Linux 패키지에는 제공되지 않는 명령어로 별도로 다운받아야지만 사용할 수 있다. 명령어 사용법은 다음과 같다. rsync와 scp의 차이점으로는 rsync는 파일의 링크 정보도 전송하는 기능이 있다. (scp는 링크파일의 경우 새로운 일반 파일로 저장한다.)
rsync [-r][user@]host:file path
scp를 자주 사용한 사용자라면 sftp보다는 rsync를 사용하는 것이 더 익숙할 것이다. scp를 계속 사용해도 문제는 없지만 scp가 deprecated된 이유 중 하나인 보안을 생각한다면 rsync 사용을 추천한다.
(참고자료)
Deprecating scp