/ rhcsa-new

RHCSA: Operate running systems - Securely transfer files between systems.

rhcsa-new redhat-new scp command file transfer
https://4am.kr/rhcsa-operate-running-systems-securely-transfer-files-between-systems/

RHCSA : 실행 시스템 운영 – 시스템 간에 안전하게 파일 전송

RHCSA 주제입니다. 아래 참조된 사이트를 번역 및 내용 추가하였습니다.

시작하기 전에

한 시스템에서 다른 시스템으로 파일을 전송하는 방법은 여러가지가 있다.
여기서는 대부분의 호스트에서 일반적으로 설치되어 있는 SSH와 관련된 scp 커맨드를 다룬다.

로컬 파일을 전송하는 경우

1. 전송할 임의의 파일(여기서는 scplocaltestfile로 가정)을 생성한다.
[root@server2 ~]# echo "This is my testfile. from local to remote host" > scplocaltestfile
[root@server2 ~]# 
2. 파일을 원격 호스트(여기서는 server1.example.com으로 가정)에 있는 root 사용자의 홈 디렉토리로 전송하려면, 다음과 같이 입력한다.
[root@server2 ~]# scp scplocaltestfile root@server1.example.com:scplocaltestfile 
root@server1.example.com's password: 
scplocaltestfile                                     100%   47     0.1KB/s   00:00    
[root@server2 ~]# 

노트: 기본적으로 파일은 사용자의 홈 디렉토리에 전송된다. 하지만, 완전한 경로를 주는 것도 가능하다.

3. server1에서 다음과 같이 전송된 파일을 확인할 수 있다.
[root@server1 ~]# ls
Desktop    Downloads  Pictures  Templates  anaconda-ks.cfg       scplocaltestfile
Documents  Music      Public    Videos     initial-setup-ks.cfg
[root@server1 ~]# cat scplocaltestfile 
This is my testfile. from local to remote host
[root@server1 ~]# 

(여러개의)로컬 파일을 전송하는 경우

1. 전송할 임의의 파일들(여기서는 scplocaltestdir내부의 파일들로 가정)을 생성한다.
[root@server2 ~]# mkdir scplocaltestdir
[root@server2 ~]# cd scplocaltestdir/
[root@server2 scplocaltestdir]# touch 1
[root@server2 scplocaltestdir]# touch 2
[root@server2 scplocaltestdir]# touch 3
[root@server2 scplocaltestdir]# touch 4
[root@server2 scplocaltestdir]# touch 5
[root@server2 scplocaltestdir]# touch 6
[root@server2 scplocaltestdir]# ls
1  2  3  4  5  6
[root@server2 scplocaltestdir]# 
2. 파일을 원격 호스트(여기서는 server1.example.com으로 가정)에 있는 root 사용자의 홈 디렉토리로 전송하려면, 다음과 같이 입력한다.
[root@server2 ~]# scp scplocaltestdir/* root@server1.example.com:/root/scptmpdir
root@server1.example.com's password: 
1                                                    100%    0     0.0KB/s   00:00    
2                                                    100%    0     0.0KB/s   00:00    
3                                                    100%    0     0.0KB/s   00:00    
4                                                    100%    0     0.0KB/s   00:00    
5                                                    100%    0     0.0KB/s   00:00    
6                                                    100%    0     0.0KB/s   00:00    
[root@server2 ~]# 
  • 노트: 만약에 *로 디렉토리를 지정했는데, 전송이 되지 않은 경우가 있다. 이 경우는, not a regular file 에러가 발생한 것이므로 tar 커맨드를 이용해서 디렉토리를 전송하도록 한다.
3. server1에서 다음과 같이 전송된 파일을 확인할 수 있다.
[root@server1 ~]# cd scptmpdir/
[root@server1 scptmpdir]# ls
1  2  3  4  5  6
[root@server1 scptmpdir]# 

원격의 파일을 전송받는 경우.

1. 원격의 호스트(여기서는 server1.example.com으로 가정)에, 테스트할 파일(여기서는 scpremotetestfile로 가정)을 생성한다.
[root@server1 ~]# ls
Desktop    Downloads  Pictures  Templates  anaconda-ks.cfg       scplocaltestfile
Documents  Music      Public    Videos     initial-setup-ks.cfg  scptmpdir
[root@server1 ~]# echo "This is a remote-testfile for scp." > scpremotetestfile
[root@server1 ~]# 
2. server2로 돌아가, 파일을 원격 호스트(여기서는 server1.example.com으로 가정)에 있는 root 사용자의 홈 디렉토리로부터 전송받으려면, 다음과 같이 입력한다.
[root@server2 ~]# scp root@server1.example.com:/root/scpremotetestfile scpremotetestfile
root@server1.example.com's password: 
scpremotetestfile                                    100%   35     0.0KB/s   00:00    
[root@server2 ~]# 
3. 다음과 같이 전송받은 파일을 확인할 수 있다.
[root@server2 ~]# ls
Desktop    Music     Templates        initial-setup-ks.cfg  scpremotetestfile
Documents  Pictures  Videos           scplocaltestdir       temp
Downloads  Public    anaconda-ks.cfg  scplocaltestfile
[root@server2 ~]# cat scpremotetestfile 
This is a remote-testfile for scp.
[root@server2 ~]# 

추가 자료

추가적으로, Sander van Vugt의 비디오(5분) 또는 여러가지 scp 옵션들에서 대한 설명 글을 읽을 수 있다.