본문 바로가기

리눅스-기초명령어/파일 관리

SCP (Secure Copy)

1. SCP (Secure Copy)

ssh 원격 접속 프로토콜을 기반으로 원격지에 있는 파일과 디렉터리를  보내거나 가져올 때 사용하는 파일 전송 프로토콜이다.

 

사용법

scp [옵션] [원격이나 로컬에서 복사할 파일] [원격지_id]@[원격지_ip]:[받는 위치]

 

옵션

옵션 설명
-r 디렉토리의 내용물까지 복사
-v 과정을 자세히 보여준다



happy.txt 보내기

[root@rocky1 ~]# scp happy.txt rocky2:/tmp #rocky2의 tmp디렉토리에 보내기
root@rocky2's password:
happy.txt               100%    0     0.0KB/s   00:00   
[root@rocky1 ~]# ssh rocky2 ls -l /tmp/happy.txt # 확인
root@rocky2's password:
-rw-r--r--. 1 root root 0 May 12 12:50 /tmp/happy.txt

 

-r       

# test 디렉토리를 생성하고 그 안에 파일을 생성을 미리 해야한다.
[root@rocky1 ~]# scp -r test rocky2:/root #-r 옵션으로 복사
root@rocky2's password:
hi.txt                            100%    5     7.2KB/s   00:00   
test.txt                         100%    5     8.2KB/s   00:00   
[root@rocky1 ~]# ssh rocky2 ls -R
root@rocky2's password:
.:
test
./test:
hi.txt
test.txt

# test 디렉토리 안에 파일들도 복사가 되었다.

 

원격에서 파일 복사하기

[root@rocky1 .ssh]# scp rocky2:/etc/ssh/sshd_config /tmp
sshd_config                                   100% 3623     2.4MB/s   00:00   
[root@rocky1 .ssh]# cd /tmp
[root@rocky1 tmp]# ls
sshd_config

 

이름을 변경하여 복사하기

[root@rocky2 ~]# ls
Documents  Downloads  Music  Pictures  Videos  anaconda-ks.cfg  hi.txt  test  #rocky2 디렉토리 내부
[root@rocky2 ~]# exit
#로그아웃
Connection to rocky2 closed.
[root@rocky1 ~]# ls
A  Documents  Downloads  Music  Pictures  Videos  hi.txt  test
[root@rocky1 ~]# scp A rocky2:/root/B  #A를 B로 이름을 바꿔 복사
A                                             100%    0     0.0KB/s   00:00   
[root@rocky1 ~]# ssh rocky2 ls

Documents
Downloads
Music
Pictures
Videos
anaconda-ks.cfg
# A가 B로 복사되었다.



2. rsync (remote synchronous)

파일과 디렉토리를 동기화 하기 위한 프로토콜이자 리눅스 유틸리티 명령어 이다

이 명령어를 통해 로컬에 있는 파일이나 디렉토리를 원격 서버에 전송하거나 원격에서 다운로드 할 수 있다. 또한 scp 와는 다르게 그룹 및 소유권 및 허가권도 유지하여 복사하여 파일을 가져올수 있다. 

(리눅스 최소권장으로 서버를 설치했을시에는 깔려있지 않을수도있다. dnf install rsync 로 다운받을 수 있다.)



사용법

rsync [option][source][destination]

 

옵션

옵션 설명
-v 자세한 정보를 출력한다.(--verbose)
-z 데이터를 압축하여 송수신 한다.(--compress)
-a -rlptgoD를 한번에 실행 할 때 사용 (--archive) 
-h 용량을 사람이 보기 편한 단위로 출력해 준다.
-u 소스 경로보다 최신 파일이 이미 있는 경우 가져오지 않는다.(--update)
--delete   송신측에서 없는 파일이 수신측의 백업 디렉토리에 존재시 삭제

 

-avh : 대표적으로 많이쓰는 옵션으로 데이터를 압축하여 보낼때 사용

a - 원본 파일의 권한, 소유자, 그룹, 시간 정보를 그대로 유지하며, 하위 디렉토리까지 모두 복사

v - 자세한 출력 모드로 진행 상황과 파일 복사 정보를 화면에 출력한다.

h - 파일 크기를 읽기 쉬운 형태(KB, MB, GB 등)로 출력하게 된다. 

 

rsync 예시

 

[root@rocky1 ~]# rsync hi.txt rocky2:/root #hi.txt를 rocky2로 복사
[root@rocky1 ~]# ssh rocky2 ls -l
합계 24
...
-rw-r--r--. 1 root root   3  5월  8 17:47 hi.txt 



-avh예시

[root@rocky2 ~]# rsync -avh /root/ rocky1:/root/ #루트홈 디렉토리를 동기화 시킵니다.
                           .                                           
                           .
                           .
sent 88.73M bytes  received 56.52K bytes  19.73M bytes/sec
total size is 88.46M  speedup is 1.00
[root@rocky2 ~]# ssh rocky1  #서버로 이동하여
root@rocky1's password: 
Last login: Mon May  8 14:58:30 2023 from 192.168.72.128 
[root@rocky1 ~]# ll #리스트로 확인해보면 파일이 동기화 된것을 알 수있다.
rwxr-xr-x. 2 root root    6  4월 24 16:44 Desktop
                           .
                           .
                           .
drwxr-xr-x. 2 root root    6  4월 24 16:44 Videos

 

-azh 예시

[root@rocky2 tmp]# rsync -azvh /root/ rocky1:/root/ #루트홈 디렉토리를 압축하여 동기화 시킵니다.
root@rocky1's password:                                           
sending incremental file list                                         

sent 130.75K bytes  received 528 bytes  37.51K bytes/sec
total size is 88.46M  speedup is 673.88

결과는 크게 다르지않지만 디렉토리가 많을때나 압축시 효율이 좋을때 사용한다.

(때로는 압축시간이 있어서 더많은시간이 걸릴 수 도있다.)

 

3. sftp (Secure File Transfer Protocol)

ssh를 기반으로 하는 파일 전송 프로토콜

로컬에 대한 명령은 앞에 l을 붙여 사용한다. 예를 들어 pwd -> lpwd

 

옵션

명령 설명
bye sftp 세션을 종료한다.
get 원격 작업 디렉토리에서 로컬 작업 디렉토리로 파일을 복사한다.
put 로컬 작업 디렉토리에서 원격 작업 디렉토리로 파일을 복사한다.



옵션 설명
-r 디렉토리를 복사한다.



접속

[root@rocky1 tmp]# sftp rocky2 #username@ip
Connected to rocky2.
sftp>

 

원격 접속 위치와 로컬 위치 확인

sftp> pwd
Remote working directory: /root
sftp> lpwd #로컬 명령어는 앞에 l을 붙인다.
Local working directory: /tmp

 

get [가져올 파일명]

sftp> get happy.txt
Fetching /root/happy.txt to happy.txt
happy.txt                                     100%    6     4.3KB/s   00:00    



put [업로드할 파일명]

sftp> put sad.txt
Uploading sad.txt to /root/sad.txt
sad.txt                                       100%    4     7.7KB/s   00:00    

 

'리눅스-기초명령어 > 파일 관리' 카테고리의 다른 글

tar  (1) 2023.09.01
dd(data dumper)  (0) 2023.09.01