scp를 사용하여 폴더를 원격에서 로컬로 복사하려면 어떻게합니까? [닫은]


2695

scp?를 사용하여 원격에서 로컬 호스트로 폴더를 어떻게 복사 합니까?

ssh서버에 로그인 할 때 사용 합니다.
그런 다음 원격 폴더 foo를 local 에 복사하고 싶습니다 /home/user/Desktop.

어떻게하면 되나요?


61
OP의 질문은 ssh'd를 원격 호스트로 원격에서 로컬 호스트로 파일을 복사 할 수 있는지 여부였습니다 . 왜 단일 답변이 자신의 질문에 올바르게 답변되지 않았는지 잘 모르겠습니다.
JeffDror

3
질문의 전제가 잘못되었습니다. 일단 ssh에 로그인하면 로그인 한 컴퓨터에서 로그인 한 클라이언트로 파일을 다시 이동시키는 방법이 생각됩니다. 그러나 scp는 ssh 연결을 인식하지 못하거나 사용할 수 없습니다. 자체 연결을 만들고 있습니다. 따라서 간단한 해결책은 로컬 워크 스테이션에서 새 터미널 창을 만들고 원격 서버에서 로컬 시스템으로 파일을 전송하는 scp를 실행하는 것입니다. 예를 들어, scp -i key user @ remote : / remote-dir / remote-file / local-dir / local-file
jeffmcneill

12
질문은 주제에 맞지 않을 수도 있지만 Google에서 가장 높은 순위의 게시물이기도합니다. 이를 잠그면 아무도 더 나은 솔루션을 제공하기 위해 업데이트 할 수 없습니다.
Alex Harvey

3
최근에 수퍼 유저의 다른 도구에 대한 명령 줄과 관련하여 비슷한 "좀 더 깊이있는"질문을했으며, 거기에있는 모드에 의해 스택 오버 플로우로 옮겨졌습니다. 어쨌든 나는 mods 경합에 동의합니다 : SuperUser에게 이것을 움직여서 잠금을 해제하고 더 많은 답변을 얻을 수 있습니까?
Nikhil VJ

3
일반적으로 stackoverflow에 대한 전체 "주제별"반응은 플랫폼의 가장 큰 결함입니다. 지나치게 마티 네
AdamC

답변:


4935
scp -r user@your.server.example.com:/path/to/foo /home/user/Desktop/

foo의 끝에 후행 '/'를 포함시키지 않으면 디렉토리의 내용 만이 아니라 디렉토리 자체 (내용 포함)가 이동합니다.

에서 man scp( 온라인 설명서 참조 )

-r 전체 디렉토리를 재귀 적으로 복사


1408
나는 매번이 구글. 관련 만화 : xkcd.com/1168
cptloop

10
내가 알았던 두 가지 알아 두기 : -C플래그는 압축을 추가 하고 플래그는 dimuthu의 답변에서 볼 수 있듯이-c 더 나은 성능을 위해 다른 암호 유형을 전달할 수 있습니다scp -c blowfish a@b:something .
Automatico

79
파일 수정 시간, 권한 등을 유지하려면 -p를 사용하십시오! scp -pr user @ ...
Ber

27
이 답변에는 중요한 설명이 없습니다. 당신은 끝낼 것인가 Desktop/foo또는 당신은 할 것이다 Desktop/allcontentsofFooGohereSCP이, 실행하는 나에게 이상한 때로는 행동하는 것 한 가지는 다음 다른
Toskan

7
@Toskan은 scp -r user@your.server.example.com:/path/to/foo /home/user/Desktop/당신으로 끝나야합니다 Desktop/foo. 함께 scp -r user@your.server.example.com:/path/to/foo/. /home/user/Desktop/ 당신의 내용으로 종료됩니다 fooDesktop와 모든 하위 DIRS foo에서 천지Desktop
요안

307

scp의 모든 기능을 사용하려면 다음 단계를 수행해야합니다.

  1. 공개 키 인증
  2. ssh 별명 작성

그런 다음 예를 들어 ~ / .ssh / config가있는 경우 :

Host test
    User testuser
    HostName test-site.com
    Port 22022

Host prod
    User produser
    HostName production-site.com
    Port 22022

비밀번호 입력을 피하고 다음 과 같이 scp 구문을 단순화 할 수 있습니다 .

scp -r prod:/path/foo /home/user/Desktop   # copy to local
scp -r prod:/path/foo test:/tmp            # copy from remote prod to remote test

또한 원격 경로 완성을 사용할 수 있습니다.

scp test:/var/log/  # press tab twice
Display all 151 possibilities? (y or n)

최신 정보:

원격 bash-completion을 활성화하려면 호스트 <source><target>호스트 모두에 bash-shell이 있고 제대로 작동하는 bash-completion이 있어야합니다. 자세한 내용은 관련 질문을 참조하십시오.

scp를 사용할 때 원격 경로에 자동 완성을 활성화하는 방법은 무엇입니까?
SCP 파일 이름 탭 완성


12
구성 파일에 대해 몰랐습니다.
dmastylo

탭 완성은 말도 안되며, 로컬 호스트에서 완료됩니다.
Bernhard

14
@ b.long 문제는 "원격 폴더 foo를 로컬 데스크탑에 복사하는 방법"입니다. 내 대답은 "scp -r prod : / path / foo / home / user / Desktop" 입니다. 당신이 관계를 볼 수 있기를 바랍니다.
Alexander Yancharuk

2
@Bernhard bash-shell을 사용하고 있기 때문에 나에게 분명했습니다. 저를 가리켜 주셔서 감사합니다! 답변이 업데이트되었습니다.
Alexander Yancharuk

1
@Alexander Yancharuk : 답변 주셔서 감사합니다. 구문 만 다루는 것보다 더 자세합니다.
검투사

217

로컬 위치 에서 원격 위치로 모두 복사 (업로드)

scp -r /path/from/destination username@hostname:/path/to/destination

원격 위치 에서 로컬 위치로 모두 복사하려면 (다운로드)

scp -r username@hostname:/path/from/destination /path/to/destination

사용자 정의 포트 번호 xxxx가있는 사용자 정의 포트

 scp -r -P xxxx username@hostname:/path/from/destination /path/to/destination

현재 디렉토리에서 원격에서 로컬로 복사

scp -r username@hostname:/path/from/file .

도움:

  1. -r 모든 디렉토리와 파일을 재귀 적으로 복사
  2. 의 전체 위치를 항상 사용 /하십시오.pwd
  3. scp 기존의 모든 파일을 대체합니다
  4. hostname 호스트 이름 또는 IP 주소입니다
  5. 사용자 정의 포트가 필요한 경우 (포트 22 외에) -P portnumber
  6. . (점) -현재 작업 디렉토리를 의미하므로 서버에서 다운로드 / 복사하고 여기에만 붙여 넣기

참고 : 방화벽에서 포트가 허용되지 않아서 사용자 정의 포트가 작동하지 않는 경우가 있으므로 방화벽에서 사용자 정의 포트가 수신 및 발신 연결에 허용되는지 확인하십시오.


1
scp는 포트에 -P (대문자 P)를 사용하는 반면 (이상하게는) ssh는 -p (소문자)를 사용하는 것으로 보입니다 (적어도 최신 버전의 Raspbian Jessie 및 Ubuntu에서는).
Adam Plocher

-p는 "원본 파일의 수정 시간, 액세스 시간 및 모드"를 유지하기 위해 예약되어 있습니다. 따라서 포트에 해당 포트를 사용하는 경우 작동하지 않을 수 있습니다. ;-) 소문자 p를 다르게 사용하는 다른 버전이없는 한.
Adam Plocher

ssh로 예. scp와는 다릅니다 (나는 가정합니다).
Adam Plocher

디렉토리에 공백이 있으면 무엇을 넣어야합니까?
Brethlosze

@hyprfrcb pwd위치를 알아 내고 사용 하기
Shiv Singh

48

내가 항상 사용하는 것은 :

scp -r username@IP:/path/to/server/source/folder/  .

. (점) : 의미 current folder합니다. 서버에서 복사하여 여기에만 붙여 넣으십시오.

IP : IP 주소와 같 125.55.41.311거나 호스트와 같은 호스트 일 수 있습니다 ns1.mysite.com.


9
.현재 디렉토리 를 가리키는 것을 지적 해 주셔서 감사합니다 !
ericmjl

35

원격 서버에서 먼저 카탈로그를 압축하는 것이 좋습니다.

tar czfP backup.tar.gz /path/to/catalog

둘째, 원격에서 다운로드하십시오.

scp user@your.server.example.com:/path/to/backup.tar.gz .

마지막으로 파일을 추출하십시오.

tar -xzvf backup.tar.gz

10
"더 나은"은 전송중인 데이터와 서버에 압축하여 압축 해제 / 압축 해제를 수행하는 노력에 따라 크게 달라집니다. 그리고 :와 같이 -C플래그 를 사용하여 scp에 압축을 추가 할 수 있습니다 scp -C a@b:bigfile ..
Automatico

4
이것은 @cptloop에 의해 만들어진 의견을 생각 나게한다! : D xkcd.com/1168
GoodSp33d

22

원격 위치에서 다운로드 할 파일이 하나라도 있고 보안에 신경 쓰지 않는다면 scp 기본 암호화 (Triple-DES)를 'blowfish'와 같은 것으로 변경하십시오.

파일 복사 시간이 크게 줄어 듭니다.

scp -c blowfish -r user@your.server.example.com:/path/to/foo /home/user/Desktop/

2
이 블로그 게시물 에 따르면 arcfour대신 대신 성능이 향상 blowfish되지만 보안 결함이 있습니다.
Automatico

20

전형적인 시나리오

scp -r -P port username@ip:/path-to-folder  .

샘플과 함께 설명

scp -r -P 27000 abc@10.70.12.12:/tmp/hotel_dump .

어디,

port = 27000
username = "abc" , remote server username
path-to-folder = tmp/hotel_dump
. = current local directory

답변 주셔서 감사합니다. 특정 SSH 포트의 -P가 도움이되었습니다.
redoff

19

Unity 툴바의 파일로 이동

여기에 이미지 설명을 입력하십시오

Ctrl + l을 누르고 here_goes_your_user_name@192.168.10.123을 작성하십시오.

192.168.1.103은 연결하려는 호스트입니다.

여기에 하나의 예

여기에 이미지 설명을 입력하십시오


12

문제는 scp명령 을 사용하여 폴더를 원격에서 로컬로 복사하는 방법이었습니다 .

$ scp -r userRemote@remoteIp:/path/remoteDir /path/localDir

그러나 sftpSSH 파일 전송 프로토콜 (SFTP (Secure File Transfer Protocol))은 신뢰할 수있는 데이터 스트림을 통해 파일 액세스, 파일 전송 및 파일 관리를 제공하는 네트워크 프로토콜입니다 (wikipedia).

$ sftp user_remote@remote_ip

sftp> cd /path/to/remoteDir

sftp> get -r remoteDir

Fetching /path/to/remoteDir to localDir 100% 398 0.4KB/s 00:00

sftp명령에 대한 도움말을 보려면 help또는을 입력하십시오 ?.


12

혹시으로 실행 "너무 많은 인증 실패" , 당신이 벌인 SSH 서버에 추가 한 정확한 SSH 키를 지정 :

scp -r -i /path/to/local/key user@remote.tld:/path/to/folder /your/local/target/dir

5

이유를 모르겠지만 소스 서버 지시문 전에 로컬 폴더를 사용해야했습니다. 작동하게

scp -r . root@888.888.888.888:/usr/share/nginx/www/example.org/

1
사용자에게 권한이 있다고 가정하면 다음을 사용하지 않고 절대 경로를 수행 할 수 있습니까root@
Jonathan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.