특정 폴더의 scp 파일을 병렬로

특정 폴더의 scp 파일을 병렬로

machineAscp 파일을 내 폴더로 가져 오고 싶은데 machineB이것이 제가 하는 방법입니다. primary폴더에서 폴더 로 machineA, 폴더 에서 폴더로 여러 파일을 하나씩 복사하고 있습니다 .primarymachineBsecondarymachineAsecondarymachineB

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/*'

관련 정보