SCP로 서버에 파일 전송하기: 리눅스 기반 안전한 파일 전송 방법
처음 서버를 접하였을 때,
서버에 파일을 어떻게 보내야 하는지 모를 수 있습니다.
이 경우, 리눅스의 'scp' 명령어를 사용하면 파일 전송이 간단해집니다.
오늘은 scp 명령어를 이용한 파일 전송 방법에 대해 알아보겠습니다
1. SCP
SCP는 Secure Copy의 약자로,
원격 시스템 간에 파일이나 디렉토리를 안전하게 복사하기 위한 리눅스의 명령어입니다.
SSH(Secure Shell) 프로토콜을 기반으로 동작해서,
파일 전송 과정이 암호화되기 때문에,
중요한 파일들을 안전하게 전송할 수 있게 해 줍니다.
아래는 scp 명령어의 기본적인 사용법과 옵션에 대한 설명입니다.
scp [옵션] [복사할 파일 or 디렉토리 경로] [복사할 대상의 경로]
주요 옵션으로는 다음과 같은 것들이 있습니다.
- -r: 디렉토리 내의 모든 파일과 하위 디렉토리를 포함하여 복사(디렉토리를 재귀적으로 복사)
- 복사할 곳에 해당 디렉토리가 없을 경우, 생성시켜서 복사할 수 있음
- -P <port>: 사용할 포트를 지정
- 기본값은 22입니다.
- -p: 원본 파일의 속성(권한, 소유자, 그룹 등)을 유지하는 옵션
- -v: 상세한 출력을 표시하여 전송 상태를 보여
- -C: 압축된 데이터를 전송
- -i <identity_file>: 개인 키 파일을 지정하여 인증하도록 함
2. SCP 사용예
2-1. 로컬에서 서버로 단일파일복사
이번에는 실제로 SCP를 사용하여서 서버와 로컬 컴퓨터간에 파일을 이동시켜 보도록 하겠습니다.
아래와 같이 'test.txt'를 로컬에서 서버컴퓨터로 이동하는 명령어입니다.
scp test.txt username@호스트아이피주소:/home/user/destination
이렇게 파일을 복사하면 파일의 소유자는 누구일까요?
위에서 서버컴퓨터에 로그인한 username이 됩니다.
서버에 파일을 전송할 때는 해당 파일의 권한과 소유권이 적절하게 설정되어야 하는데요.
잘못된 권한 설정은 보안을 취약하게 할 수 있기 때문입니다.
만약 파일의 소유자를 변경하고자 한다면 아래와 같이 'chown' 명령어를 사용해주면 됩니다.
아래에서는 'file.txt'파일에 대해서,
'sudo 그룹'의 'user1'로 소유자를 변경하는 명령어 입니다.
sudo chown user1:sudo file.txt
2-2. 복수 파일 복사하기
여러개의 파일을 복사할 때는 아래와 같이 해주면 됩니다.
scp file1 file2 file3 username@remote_server:/remote/directory/
2-3. 서버에서 로컬로 파일 복사하기
이번에는 로컬컴퓨터에서 서버로 파일을 업로드 하는 것이 아니라,
서버에서 로컬로 복사하는 방법을 알아보겠습니다.
위에서 한 것과 순서만 바꾸면 되는데요.
마지막의 '.'은 현재 디렉토리를 의미합니다.
즉, 아래 명령어는 data.txt파일을 로컬의 현재 디렉토리로 복사하라는 명령어 입니다.
(물론 로컬의 디렉토리를 지정해서 그곳에 받을 수도 있습니다.)
scp username@호스트아이피주소:/home/user/destination/data.txt .
실행은 마찬가지로 로컬에서 하면 됩니다.
3. 팁
3-1. 현재 폴더
터미널에서 현재 폴더의 위치를 알고 싶을 때는 다음 명령어를 입력해 주면 됩니다.
pwd
3-2. home 디렉토리의 표현 방법
리눅스에서 home 디렉토리는 아래와 같은 방법들로 표현할 수 있습니다.
모든 경로의 root가 되는 디렉토리이므로, 이것의 표현법을 알아둘 필요가 있겠지요.
- $HOME: 이것은 환경 변수로, 현재 사용자의 홈 디렉토리 경로를 가리킴.
- 'echo $HOME'을 입력해보면 실제 home 디렉토리를 볼 수 있음.
- ~: 이 기호는 현재 사용자의 홈 디렉토리를 나타내는 축약된 표현.
쉘에서 'cd ~'나 단순히 'cd' 명령을 입력하면 홈 디렉토리로 이동. - /home/<유저명>:일반적으로 사용자의 홈 디렉토리를 나타냄.
- '/home' 디렉토리는 보통 일반 사용자들의 홈 디렉토리를 위한 공간으로 사용
- root 사용자의 경우 홈 디렉토리는 일반적으로 '/root'에 별도로 구성됨
4. 정리
지금까지 서버로 파일을 전송하는 방법인 Secure Copy (scp)에 대해 살펴보았습니다.
대부분의 경우 로컬에서 변경 사항을 Git에 올린 후,
서버에서 pull하는 방식을 사용하지만,
scp를 통한 파일 전송 방법도 알아두면 상황에 따라 유용하게 사용할 수 있습니다.