터미널에서 원격 서버와의 파일을 전송하거나 내려받기가 필요할때가 있다.
이럴때 가장 많이 사용하는 방법은 SCP와 rcync를 활용한 방법이 가장 보편적이므로 이 두가지를 활용하는 방법을 기록하였다.
1. SCP 명령어 사용하기 (가장 기본)
💻 로컬 PC ➔ 원격 서버로 파일 보내기 (업로드:upload)
# scp [보낼_파일_경로] [서버_계정]@[서버_IP]:[저장할_서버_경로]
scp /home/user/test.txt [email protected]:/var/www/html
💻 원격 서버 ➔ 로컬 PC로 파일 가져오기 (다운로드:download)
# scp [서버_계정]@[서버_IP]:[가져올_파일_경로] [저장할_로컬_경로]
scp [email protected]:/var/www/img.jpg /Users/myname/Downloads
📂 폴더(디렉토리) 전체를 전송할 때 (-r 옵션)
폴더 내부의 모든 파일과 하위 폴더를 함께 보낼 때는 반드시 -r 옵션을 추가해야 합니다.
scp -r /home/user/my_folder [email protected]:/var/www/
🔑 SSH 포트 번호가 22번이 아닐 때 (-P 대문자 옵션)
scp -P 2222 /home/user/test.txt [email protected]:/var/www/
🔑 SSH key를 이용한 파일 전송
# 로컬 PC ➔ 원격 서버로 파일 보내기
scp -i ~/.ssh/your.key /home/user/test.txt [email protected]:/var/www/
# 원격 서버 ➔ 로컬 PC로 파일 가져오기
scp -i ~/.ssh/your.key [email protected]:/var/www/ /home/user/test.txt
2. rsync 명령어 사용하기 (대용량/이어받기 추천)
파일 크기가 크거나 네트워크가 불안정하다면 rsync 가 훨씬 효율적인 방법이며,
전송이 끊겨도 이어서 받을 수 있고, 변경된 부분만 골라서 전송(동기화)할 수 있다.
💻 로컬 PC ➔ 원격 서버로 파일 보내기 (업로드:upload)
# rsync -avzP [보낼_파일_경로] [서버_계정]@[서버_IP]:[저장할_서버_경로]
rsync -avzP /home/user/test.txt [email protected]:/var/www-avzP: 진행 상황(P)을 보면서, 압축(z)하여, 파일 속성을 유지(a)한 채 상세히(v) 전송하라는 옵션입니다.
💻 원격 서버 ➔ 로컬 PC로 파일 가져오기 (다운로드)
# rsync -avzP [서버_계정]@[서버_IP]:[가져올_서버_파일_경로] [저장할_로컬_경로]
rsync -avzP [email protected]:/var/www/test.txt /home/user
📂 폴더 전체 가져오기 (가장 많이 쓰는 방식)
서버의 logs 폴더 전체를 내 PC의 현재 디렉토리(.)로 동기화합니다.
# rsync -avzP [서버_계정]@[서버_IP]:[가져올_서버_폴더_경로] [저장할_로컬_폴더_경로]
rsync -avzP [email protected]:/var/log/nginx/ ./nginx_logs/
🔑 SSH 포트가 다르다면 -e 'ssh -p 포트번호' 옵션을 추가합니다.
rsync -avzP -e 'ssh -p 2222' /home/user/test.txt [email protected]:/var/www