shell 명령어 - scp를 사용하여 원격에서 로컬로 폴더를 복사하는 방법은 무엇입니까?




파일 전송 (10)

scp 사용하여 원격 호스트에서 로컬 호스트로 폴더를 복사하는 방법은 무엇입니까?

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

이것을 달성하는 방법?


Answers

전형적인 시나리오,

scp -r -P port [email protected]:/path-to-folder  .

샘플로 설명하면,

scp -r -P 27000 [email protected]:/tmp/hotel_dump .

어디에,

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

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을 가능하게하려면 bash-shell을 <source><target> 호스트 모두에두고 bash-completion을 올바르게 작동시켜야합니다. 자세한 내용은 관련 질문을 참조하십시오.

scp를 사용할 때 원격 경로에 자동 완성 기능을 사용하려면 어떻게해야합니까?
SCP 파일 이름 탭 완료


내가 항상 사용하는 것은 :

scp -r [email protected]:/path/to/server/source/folder/  .

. (점) : current folder 의미 current folder . 따라서 서버에서 복사하여 여기에 붙여 넣으십시오.

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


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

$ scp -r [email protected]:/path/remoteDir /path/localDir

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

$ sftp [email protected]_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 또는 ? 입력하십시오 ? .


이유는 모르겠지만 원본 서버 지시문 앞에 로컬 폴더를 사용해야했습니다. 작동하게 만들기

scp -r . [email protected]:/usr/share/nginx/www/example.org

"너무 많은 인증 실패" 가 발생하는 경우 severs ssh 서버에 추가 한 정확한 SSH 키를 지정하십시오.

scp -r -i /path/to/local/key [email protected]:/path/to/folder /your/local/target/dir

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

scp -r /path/from/destination [email protected]:/path/to/destination

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

scp -r [email protected]:/path/from/destination /path/to/destination

사용자 지정 포트 여기서 xxxx사용자 지정 포트 번호입니다.

 scp -r -P xxxx [email protected]:/path/from/destination /path/to/destination

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

scp -r [email protected]:/path/from/file .

도움:

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

참고 : 포트가 방화벽에서 허용되지 않아서 사용자 지정 포트가 작동하지 않는 경우가 있으므로 방화벽에서 들어오고 나가는 연결에 대해 사용자 지정 포트가 허용되는지 확인하십시오


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

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

scp -c blowfish -r [email protected]:/path/to/foo /home/user/Desktop/

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

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

둘째, 리모컨에서 다운로드 :

scp [email protected]:/path/to/backup.tar.gz .

마지막에 파일의 압축을 풉니 다.

tar -xzvf backup.tar.gz

어딘가에서 뭔가 scp 해야합니다. scp ./styles/ 가 있으므로 보안 사본 ./styles/ 말하고 있지만 복사 할 위치는 아닙니다.

일반적으로 다운로드하려면 다음과 같이하십시오.

# download: remote -> local
scp [email protected]_host:remote_file local_file 

여기서 local_file 은 실제로 복사하려는 파일을 넣을 디렉토리입니다. 업로드하려면 반대입니다.

# upload: local -> remote
scp local_file [email protected]_host:remote_file

전체 디렉토리를 복사하려면 -r 이 필요합니다. scpcp 와 유사하지만 [email protected]_host:file 과 로컬 파일만으로 파일을 지정할 수 있다는 점만 다릅니다.

편집 : 주석에 명시된 바와 같이 로컬 및 원격 호스트의 사용자 이름이 동일하면 원격 파일을 지정할 때 사용자를 생략 할 수 있습니다.







shell command-line copy scp