특정 폴더에서 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/*'

관련 정보