machineA
scp 파일을 내 폴더로 가져 오고 싶은데 machineB
이것이 제가 하는 방법입니다. primary
폴더에서 폴더 로 machineA
, 폴더 에서 폴더로 여러 파일을 하나씩 복사하고 있습니다 .primary
machineB
secondary
machineA
secondary
machineB
trinity@machineB:~$ scp trinity@machineA:/data01/primary/* /data01/primary/
trinity@machineB:~$ scp trinity@machineA:/data02/secondary/* /data02/secondary/
여러 파일을 동시에 복사할 수 있는 방법이 있습니까? 한 폴더에서 한 번에 5개의 파일을 다운로드할 수 있나요? 그러면 한 번에 하나의 파일을 복사하는 대신 기본 폴더 또는 보조 폴더에서 각각 5개의 파일을 복사하고 싶습니다.
machineA
기본적으로 기본 폴더와 보조 폴더에 있는 모든 항목을 병렬 로 복사하고 싶습니다 machineB
.
사용할 수 있다면 내 상자에도 GNU Parallel이 설치되어 있습니다. 아래 명령을 시도했지만 작동하지 않습니다. 해당 폴더에서 모든 항목이 복사될 때까지 한 번에 5개의 파일을 병렬로 복사해야 한다고 예상했습니다.
parallel -j 5 scp trinity@machineA:/data01/primary/* /data01/primary/
내 병렬 구문에 문제가 있나요? 원격 폴더에서 모든 파일이 복사될 때까지 5개의 파일을 원격 폴더에서 병렬로 복사할 수 있는 가장 좋은 방법은 무엇입니까?
답변1
병렬 연결을 사용하면 속도가 더 빨라질 것이라고 생각하는 이유는 무엇입니까? SCP는 몇 개의 작은 파일을 전송하는 매우 간단한 도구이며 처리량과 성능에는 아무런 영향을 미치지 않습니다. 더 많은 병렬 프로세스에서 실행하면 속도가 조금 더 빨라질 수 있지만 크게는 아닙니다. 다른 방법으로 할 수 있는 작업은 다음과 같습니다.
sftp
예를 들어 다음과 같이 더 나은 처리량과 더 영리한 복사(충분해야 함)를 얻으려면 사용하십시오 .-r
ControlMaster
병렬 TCP 연결의 오버헤드를 제거하는 데 사용- 올바른 매개변수를 사용하여
parallel
나는 다음과 같이 시작할 것입니다 sftp
:
sftp -r trinity@machineA:/data01/primary/ /data01/primary/
답변2
원격 측에서 발생하려면 * 확장이 필요합니다.
ssh machineA 'parallel -j 5 scp {} machineB:/data01/primary/ ::: /data01/primary/*'