수천 개의 파일을 효율적으로 다운로드하는 방법은 무엇입니까?

2046 단어 devopsbashhelp
여보세요.

서버에서 내 컴퓨터로 ~40,000개의 파일을 복사해야 하고 이 문제를 해결하는 가장 좋은 방법이 무엇인지 궁금합니다.

SCP를 사용하여


  • 슬로우
  • 많은 대역폭을 소비함

  • rsync 사용


  • 슬로우
  • 더 적은 대역폭을 소비함
  • 네트워크 문제가 발생한 후 복사를 재개할 수 있음

  • tar 다음 scp 사용


  • 덜 느림
  • 더 적은 대역폭을 소비함

  • tar 다음 rsync 사용


  • 덜 느림
  • 더 적은 대역폭을 소비함
  • 네트워크 문제가 발생한 후 복사를 재개할 수 있음

  • tar를 사용한 다음 scp와 병렬로 분할


  • 빠름
  • 더 적은 대역폭을 소비함

  • tar를 사용한 다음 rsync와 병렬로 분할


  • 빠름
  • 더 적은 대역폭을 소비함
  • 네트워크 문제가 발생한 후 복사를 재개할 수 있음



  • 나는 마지막 것을 선택할 것이라고 생각하지만 내 경우에는 어떻게 하시겠습니까?


    편집: tar 다음 split 다음 parallel rsync를 사용하기 위한 bash 명령:

    전제 조건: 병렬 설치 및 경고 제거:

    sudo apt install parallel && echo "will cite" | parallel --citation &>/dev/null
    



    # on server
    tar cfz files.tar.gz ~/path/to/folder/
    split -b 20M files.tar.gz fragment_
    
    # on local machine
    cat $(ssh host@server ls -1 fragment_*) | parallel rsync -z host@server:{} .
    cat frament_* > files.tar.gz
    tar xvf files.tar.gz
    



    편집 2: 즉석에서 파일을 압축하고 전송이 중지된 위치에서 다시 시작을 처리할 수 있기 때문에 간단한 rsync 명령을 사용했습니다.

    rsync는 항상 사용 가능한 최대 대역폭을 사용하기 때문에 parallel 로 해결할 수 있는 병목 현상이 아닙니다.

    좋은 웹페이지 즐겨찾기