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 {}
xargs
xargs
... | 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 명령에서 사용할 수 있습니다.all
webservers
dbservers
gpunodes
pdsh
pdcp
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
이는 remote
FQDN 또는 IP 주소일 수 있습니다.
반면, 컴퓨터를 사용 중이고 원격 컴퓨터에서 파일을 받으려는 경우:
scp username@remote:/file/to/send /where/to/put
답변3
부분에서 추론할 수 있습니다 ...
.
여러 소스 파일을 복사할 수 있지만 하나의 대상에만 복사할 수 있습니다. 이는 ...
이 위치에 추가 파일을 지정할 수 있음을 의미합니다. 는 ...
바로 뒤에 나오 므로 file1
이것이 소스여야 합니다.
예 : scp fileA fileB fileC
복사 fileA
및 fileB
.fileC