scp 복사 방향: 소스는 무엇이고 타겟은 무엇입니까?

scp 복사 방향: 소스는 무엇이고 타겟은 무엇입니까?

scp의 man 소개는 다음과 같습니다.

scp [-1246BCpqrv] [-c 비밀번호] [-F ssh_config] [-i ID 파일] [-l 제한 사항] [-o ssh_option] [-P 포트] [-S 프로그램] [[user@]host1:]file1 . .. [[사용자@]호스트2:]파일2

소스는 무엇이며 타겟은 무엇입니까? 저는 항상 복제가 어느 방향으로 일어나는지 궁금했습니다. 어떻게 정의되나요?

답변1

Unix 명령은 거의 항상(매우몇 가지 예외를 제외하고 소스가 대상보다 우선합니다. 대부분의 경우 최종 목표 이전에 여러 소스를 사용할 수 있습니다.

포함하다 scp.

일부 명령(예: GNU 버전 cp및 ) 에는 대상을 먼저 배치할 수 있는 mv옵션(예: -t또는 )이 있습니다.--target-directory=DIRECTORY그러나 기본값은 표준 "대상 전 소스"입니다.. 이는 유용하므로 이와 같은 것을 사용할 때 소스 앞에 대상을 배치하거나 with find ... -exec cp -t target/ {} +사용을 피할 수 있습니다 (이 방법은 훨씬 느리고 각 인수에 가능한 한 많은 명령을 수용하는 대신 인수당 하나의 명령을 분기하게 됩니다( 명령줄), 예를 들어-I {}xargsxargs... | xargs -0r mv -t target/... | xargs -0r -I {} mv {} target/

위와 같은 명시적인 재정의 옵션이 없으면 "소스 전 대상"은 거의 들어본 적이 없습니다. 너무 드물기 때문에 "어? 뭐야?"라고 생각할 권리가 있습니다.


scp동시에 여러 파일을 여러 컴퓨터로 전송 해야 하는 경우 다음과 같이 for 루프에서 수행하세요.

for h in host1 host2 host3... ; do
  scp file1 file2 file3... "user@$h:/path/"
done

또는 사용pdcp 병렬 분산 쉘에서. pdsh대부분의 Linux 배포판용으로 패키지되어 있습니다.

예를 들어

pdcp -w host1,host2,host3 file1 file2 file3 /path/to/target/

pdsh이는 임의의 그룹 이름(예: , , , , 또는 기타 이름)을 사용하여 호스트 및 호스트 그룹을 정의하는 데 사용할 수 있는 구성 파일이 포함된 매우 간단한 예입니다 . 그런 다음 or 명령에서 사용할 수 있습니다.allwebserversdbserversgpunodespdshpdcp

pdsh -g all 'uname -a ; uptime'
pdcp -g webservers index.html /var/www/

위의 루프와 달리 for명령을 실행하거나 한 번에 한 호스트씩 순차적으로 파일을 복사하지 않습니다. 컴퓨터의 CPU 코어 수에 따라 합리적인 제한을 두고 여러 명령을 병렬로 실행합니다.

답변2

scp명령을 사용하면 다음을 지정할 수 있습니다.원천(복사할 파일 또는 디렉터리) 및표적(복사된 파일이나 디렉터리의 위치) 구문은 다음 scp과 같습니다.

원격 컴퓨터에 파일을 보내려는 컴퓨터를 사용하는 경우:

scp /file/to/send username@remote:/where/to/put

이는 remoteFQDN 또는 IP 주소일 수 있습니다.

반면, 컴퓨터를 사용 중이고 원격 컴퓨터에서 파일을 받으려는 경우:

scp username@remote:/file/to/send /where/to/put

답변3

부분에서 추론할 수 있습니다 ....

여러 소스 파일을 복사할 수 있지만 하나의 대상에만 복사할 수 있습니다. 이는 ...이 위치에 추가 파일을 지정할 수 있음을 의미합니다. 는 ...바로 뒤에 나오 므로 file1이것이 소스여야 합니다.

예 : scp fileA fileB fileC복사 fileAfileB.fileC

관련 정보