Linux에서 SCP 명령을 사용하는 방법

scp 명령을 사용하여 Linux 시스템에서 원격 시스템으로 파일을 전송하는 데 도움이 되는 쉬운 자습서입니다.

SCP는 '보안 복사'를 의미합니다. SCP Linux에서 제공하는 명령줄 유틸리티로, 안전하지 않은 네트워크를 통해 한 시스템에서 다른 시스템으로 파일과 디렉토리를 전송할 수 있습니다.

한 시스템에서 다른 시스템으로 파일을 복사하려면 SCP 파일과 디렉토리를 안전하게 전송할 수 있는 매우 좋은 옵션이 될 수 있습니다. 두 통신 기계가 동일한 네트워크를 통해 연결된 경우 다음을 사용합니다. SCP 가능해진다.

에 크게 의존할 수 있습니다. SCP 전송 중인 파일과 전송에 사용된 암호가 모두 암호화되어 있어 기밀성 및 무결성을 위한 명령입니다. 이 전송이 진행되는 동안 누군가가 트래픽을 스누핑하려고 해도 민감한 정보는 공개되지 않습니다.

이 튜토리얼에서는 다양한 예제를 볼 것입니다. SCP 명령. 우리는 또한 자주 사용되는 옵션 중 일부를 살펴볼 것입니다 SCP 명령.

scp 명령 시작하기

사용 SCP 파일/디렉토리를 전송할 수 있는 명령:

  • 로컬 시스템에서 원격 시스템으로.
  • 두 원격 시스템 사이.
  • 원격 시스템에서 로컬 시스템으로.

일반 구문:

scp [옵션] [source_file_name] [user@destination_Host]:destination_folder

이 명령어의 기본 속성을 하나씩 알아봅시다.

  • [소스_파일_이름] 복사하려는 소스 파일입니다.
  • [user@destination_Host] 이것은 파일을 복사하려는 원격 시스템의 사용자 이름입니다. 원격 시스템의 IP 주소는 '@' 기호.
  • [대상_폴더] 복사한 파일을 저장할 디렉토리입니다.

메모: 결장(:) 기호는 로컬 위치와 원격 위치를 구분하기 때문에 구문에 사용됩니다. 콜론(:) 파일을 복사해야 하는 디렉터리를 지정하려면 원격 시스템과 함께 사용합니다. 대상 디렉토리를 지정하지 않으면 파일이 원격 시스템 사용자의 홈 디렉토리에 복사됩니다.

함께 사용되는 옵션 SCP

와 함께 사용되는 가장 인기 있는 옵션 중 일부는 SCP 명령은 아래에 나열됩니다.

옵션설명
-씨전송될 파일의 ​​압축 허용
-V자세한 출력을 제공
-아르 자형파일과 디렉토리를 재귀적으로 복사
-피파일의 권한, 모드 및 액세스 시간 보존
-피에서 사용하는 기본 포트 변경 SCP 명령

이 옵션의 예는 자습서에서 자세히 살펴보겠습니다.

로컬에서 원격 시스템으로 파일 복사

SCP 다음 구문을 사용하여 로컬 시스템에서 원격 시스템으로 파일을 전송할 수 있습니다. 이를 통해 원격에 위치한 서버로 파일을 전송하거나 업로드할 수 있습니다.

일반 구문:

scp [파일_이름] remote_user@host:[대상_폴더]

예시:

scp 아파치-톰캣-9.0.8.tar.gz [email protected]:gaurav

이 예에서는 'apache-tomcat-9.0.8.tar.gz' 파일을 로컬 시스템에서 IP 주소가 '143.110.178.221'인 원격 시스템으로 복사합니다.

원격 시스템에서 파일은 이제 'gaurav'라는 디렉토리에 복사됩니다.

산출:

KB gaurav@ubuntu:~$ scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav [email protected]의 비밀번호: apache-tomcat-9.0.8.tar.gz .890% 79 /s 02:00 gaurav@ubuntu:~$ 

파일에 대한 원격 시스템의 출력을 확인하겠습니다.

root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav# ls apache-tomcat-9.0.8.tar.gz root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav#

따라서 파일은 다음을 사용하여 원격 시스템에 성공적으로 복사됩니다. SCP 명령.

원격 시스템에 여러 파일 복사

이전 예에서 우리는 다음을 사용하여 원격 시스템으로 파일을 전송하는 방법을 배웠습니다. SCP 명령. 이제 이 명령을 사용하여 로컬 시스템에서 원격 시스템으로 여러 파일을 전송하는 방법을 살펴보겠습니다.

일반 구문:

scp [파일 1] [파일 2] [파일 n] remote_username@remote_host:[특정 디렉토리]

이 간단한 과정을 예를 들어 이해해 봅시다.

예시:

scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav

여기에서 원격 시스템에 복사할 명령에 여러 파일이 언급되어 있습니다.

산출:

gaurav@ubuntu:~$ scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav [email protected]의 비밀번호: ath.html 900% 90.1 02 abc.txt 100% 0 0.0KB/s 00:00 ppa-purge_0.2.8+bzr56_all.deb 100% 4360 42.2KB/s 00:00 gaurav@ubuntu:~$

원격 시스템에서:

root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav# ls -l total 9800 -rw-r--r-- 1 루트 루트 0 Oct 5 08:58 abc.txt -rw-r-- r-- 1 루트 루트 9818695 Oct 5 08:35 apache-tomcat-9.0.8.tar.gz -rw-r--r-- 1 루트 루트 204057 Oct 5 08:58 ath.html -rw-r-- r-- 1 루트 루트 4360 Oct 5 08:58 ppa-purge_0.2.8+bzr56_all.deb root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav#

이제 세 파일 모두 원격 시스템에 복사됩니다.

원격 시스템에 디렉토리 복사

당신이 사용할 수있는 SCP 로컬 시스템에서 원격 시스템으로 디렉토리를 복사하는 명령입니다. 프로세스는 파일 복사와 유사합니다. 디렉토리의 내용도 복사하려면 다음을 사용할 수 있습니다. -아르 자형 옵션 SCP 명령.

그만큼 -아르 자형 옵션은 디렉토리를 재귀적으로 복사하는 데 사용됩니다. 즉, 디렉토리 내의 모든 하위 폴더와 파일도 복사됩니다.

일반 구문:

scp -r [디렉토리 경로] remote_username@remote_host:[대상_디렉토리]

예시:

scp -r PycharmProjects [email protected]:gaurav

산출:

gaurav@ubuntu:~$ scp -r PycharmProjects [email protected]:gaurav [email protected]의 암호: __main__.py 100% 623 7.8KB/s 00:00 3 __init0__ :00 completion.py 100% 2929 28.1KB/s 00:00 search.py ​​100% 4728 38.7KB/s 00:00 uninstall.py 100% 2963 32.5KB/s 00:00 hash.py 100% 163KB s 00:00 check.py 100% 1430 16.8KB/s 00:00 configuration.py 100% 7125 50.4KB/s 00:00 show.py 100% 6289 49.8KB/s 00:00 download.py 6 6230% KB/s 00:00 gaurav@ubuntu:~$ 

사용 -아르 자형 옵션 SCP 명령은 디렉토리 내의 모든 하위 폴더와 파일을 로컬 시스템에서 원격 시스템으로 복사합니다.

scp 프로세스에 대한 자세한 정보 표시

당신은 사용할 수 있습니다 -V (소문자 V) 옵션을 사용하여 원격 또는 로컬 시스템에 복사 중인 파일에 대한 정보를 표시합니다. 이러한 유형의 출력을 자세한 출력이라고도 합니다.

이 옵션을 사용하면 파일에 대한 전체 디버그 정보가 화면에 표시됩니다.

일반 구문:

scp -v [파일 이름] user_name@user_host:

예시:

scp -v 아파치-톰캣-9.0.8.tar.gz [email protected]:팀

산출:

gaurav@ubuntu:~$ scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team 실행: program /usr/bin/ssh 호스트 159.89.170.11, 사용자 루트, 명령 scp -v -t 팀 OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 2017년 12월 7일 debug1: 구성 데이터 읽기 /home/gaurav/.ssh/config debug1: 구성 데이터 읽기 /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config 19행: * debug1에 대한 옵션 적용: 159.89.170.11 [159.89.170.11] 포트 22에 연결. debug1: 연결이 설정되었습니다. debug1: key_load_public: 해당 파일 또는 디렉터리가 없습니다. debug1: ID 파일 /home/gaurav/.ssh/id_rsa 유형 -1 apache-tomcat-9.0.8.tar.gz 100% 9589KB 99.8KB/s 01:36 debug1: client_input_channel_req: 채널 0 rtype 종료 상태 응답 0 디버그1: 채널 0: 무료: 클라이언트 세션, nchannels 1 디버그1: fd 0 지우기 O_NONBLOCK 디버그1: fd 1 지우기 O_NONBLOCK 전송됨: 9826736 전송, 수신 4016바이트, 97.2초 바이트: 전송됨 101133.9, 수신됨 41.3 debug1: 종료 상태 0 gaurav@ubuntu:~$ 

여기에서 출력에서 ​​파일의 디버그 정보가 터미널에 표시되는 것을 볼 수 있습니다. SCP 명령은 다음과 함께 사용됩니다. -V 옵션.

두 원격 호스트 간에 파일 전송

Linux를 사용하면 여러 원격 호스트에 연결할 수 있습니다. 다음을 사용하여 두 원격 호스트 간에 파일과 디렉토리를 전송할 수 있습니다. SCP 명령.

일반 구문:

scp remote_user_1@host_1:/[파일 이름] remote_user_2@host_2:[폴더에_저장]

구문이 좀 더 넓어 보일 수 있지만 매우 간단합니다. 여기에서 명령의 첫 번째 부분은 파일을 복사할 원격 사용자에 대한 입력을 제공합니다. 콜론(:) 및 / 두 원격 시스템 간에 전송할 파일 이름 또는 디렉토리 이름을 지정하는 데 사용됩니다.

두 번째 부분은 파일이 복사될 대상 원격 시스템에 대한 정보를 제공합니다.

예시:

scp -r [email protected]:gaurav [email protected]:/팀

여기서는 로컬 시스템에서 원격 시스템으로 'gaurav'라는 디렉터리를 재귀적으로 복사합니다. 파일은 원격 시스템의 '팀' 폴더에 복사됩니다.

산출:

gaurav@ubuntu:~$ scp -r [email protected]:/gaurav [email protected]:/team [email protected]의 비밀번호: 1.py 100% 134 261.3KB/s 변수 100% 377 949.2KB/s 00:00 abc.txt 100% 0 0.0KB/s 00:00 ath.html 100% 199KB 41.8MB/s 00:00 gaurav@ubuntu:~$

여기에서 우리는 SCP 한 원격 서버에서 다른 원격 서버로 'gaurav'라는 디렉토리를 전송하는 로컬 시스템의 명령.

원격 시스템에서 로컬 시스템으로 파일 전송

다음을 사용하여 원격 시스템에서 로컬 시스템으로 파일 또는 디렉토리를 쉽게 전송할 수 있습니다. SCP 명령. 간단히 말해서 다음을 사용하여 원격 서버에서 로컬 시스템으로 여러 파일 또는 디렉토리를 다운로드할 수 있습니다. SCP 명령.

일반 구문:

scp remote_username@user_host:/files/file.txt /[folder_of_local_system]

산출:

gaurav@ubuntu:~$ scp [email protected]:how.txt . [email protected]의 비밀번호: how.txt 100% 11 0.1KB/s 00:00 gaurav@ubuntu:~$

여기에서 원격 서버에서 내 홈 디렉토리로 파일을 다운로드(복사)했습니다. 따라서 나는 점(.) 파일을 내 홈 디렉토리에 복사하도록 명령에 지정합니다.

샘플 출력:

gaurav@ubuntu:~$ ls -l how.txt -rw-r--r-- 1 gaurav gaurav 11 Oct 6 09:49 how.txt gaurav@ubuntu:~$ 

이제 파일이 원격 서버에서 내 홈 디렉토리로 복사됩니다.

같은 방법으로 원격 서버에서 여러 파일이나 디렉토리를 다운로드할 수 있습니다. SCP 적절한 옵션을 사용하여 명령합니다.

더 빠른 전송을 위해 파일 압축

경우에 따라 대용량 파일을 전송하는 데 시간이 오래 걸릴 수 있습니다. 이 문제는 사용하는 동안 해결할 수 있습니다. SCP 명령 -씨 (대문자 ) 옵션.

사용 -씨 옵션은 더 빠른 전송을 용이하게 하여 시간을 절약하는 더 큰 크기의 파일을 압축합니다.

이 옵션에 대한 흥미로운 사실 ​​중 하나는 대상 시스템에서 파일이 원래 크기로 복사되지만 전송 프로세스 중에 더 빠른 전송이 가능하도록 크기가 압축된다는 것입니다. 따라서 압축은 네트워크에서만 수행됩니다.

일반 구문:

scp -C [파일 이름] user_name@user_host:[대상_폴더]

차이점을 이해하기 위해 비교 예를 살펴 보겠습니다.

-C 옵션 없이 전송:

gaurav@ubuntu:~$ scp -rv dlink [email protected]:team 실행: program /usr/bin/ssh host 68.183.82.183, 사용자 루트, 명령 scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu 3, OpenSSL 1.0.2n 7 Dec 2017 debug1: 구성 데이터 읽기 /home/trinity/.ssh/config debug1: 구성 데이터 읽기 /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: * debug1에 대한 옵션 적용 : 68.183.82.183 [68.183.82.183] 포트 22번으로 연결 중입니다. debug1: 연결이 설정되었습니다. debug1: client_input_channel_req: 채널 0 rtype 종료 상태 응답 0 디버그1: 채널 0: 무료: 클라이언트 세션, nchannels 1 디버그1: fd 0 지우기 O_NONBLOCK 디버그1: fd 1 지우기 O_NONBLOCK 전송됨: 7516504 전송, 수신 4008바이트, in7 초당: 전송 100693.7, 수신 53.7 debug1: 종료 상태 0 gaurav@ubuntu:~$ 

위의 출력에서 ​​우리는 전송에 필요한 시간이 74.6초임을 알 수 있습니다. -C 옵션을 사용하여 동일한 파일을 전송하려고 시도하고 차이점을 관찰합니다.

-C 옵션으로 전송:

gaurav@ubuntu:~$ scp -Crv dlink [email protected]:team 실행: program /usr/bin/ssh host 68.183.82.183, 사용자 루트, 명령 scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu 3, OpenSSL 1.0.2n 7 Dec 2017 debug1: 구성 데이터 읽기 /home/trinity/.ssh/config debug1: 구성 데이터 읽기 /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: * debug1에 대한 옵션 적용 : 68.183.82.183 [68.183.82.183] 포트 22번으로 연결 중입니다. debug1: 연결이 설정되었습니다. . . C webupload.img 100% 1834KB 98.7KB/s 00:18 파일 전송 모드: C0664 1877552 router.img 싱크: C0664 1877552 router.img router.img 100% 1834KB 10003KB/s 파일 전송: 1834KB 10003KB/s 3754103 DSL-2750U-Release-IN-T-01.00.07.zip 싱크: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip DSL-2750U-Release-IN-0.T-01 100% 3666KB 218.5KB/s 00:16 싱크: E debug1: client_input_channel_req: 채널 0 rtype 종료 상태 응답 0 debug1: 채널 0: 여유: 클라이언트 세션, nchannels 1 debug1: fd 0 지우기 O_NONBLOCK 디버그1: fd 1 지우기 전송됨: 전송된 7518864, 수신된 3828바이트, 51.0초 만에 초당 바이트 수: 전송된 100245.4, 수신된 51.0 debug1: 종료 상태 0 debug1: 압축 발신: 원시 데이터 7511925, 압축된 7513136: 압축된 원시 데이터 1.00 debug1 인수 999, 팩터 0.68 gaurav@ubuntu:~$

여기서 우리는 다음을 사용하여 쉽게 관찰할 수 있습니다. -씨 옵션 SCP 명령을 사용하면 네트워크를 통해 파일을 압축할 수 있으므로 시간을 절약할 수 있습니다.

파일 전송에 다른 ssh 포트 사용

사용하면서 SCP 배포되는 기본 포트는 포트 22. 사용자는 이 포트 선택을 사용자 정의할 수 있습니다. 당신은 사용할 수 있습니다 -피 (대문자 P 옵션) SCP 선택한 포트를 사용하도록 명령합니다.

일반 구문:

cp -P [new_port_number] [file_name/directory_name] remote_user@host:[대상_폴더]

예시:

scp -P 4248 dlink [email protected]:팀

위의 명령을 사용하여 파일을 원격 서버로 전송합니다. 하지만 이번에 사용되는 포트는 포트 4248 기본값 대신 포트 22.

결론

이 튜토리얼을 통해 우리는 동적 특성에 대해 배웠습니다. SCP 한 시스템에서 다른 시스템으로 파일을 전송하거나 복사하는 데 사용되는 명령입니다. 이 옵션을 사용하여 원격 서버에서 파일이나 디렉터리를 다운로드할 수도 있습니다. 따라서 우리는 다음과 같이 결론을 내릴 수 있습니다. SCP 명령은 둘 이상의 시스템과 원격 서버를 동시에 처리해야 할 때 파일 전송에 매우 유용합니다.