SSH를 통한 Bash 파일에서 WGET를 통해 10 만 파일 이상의 파일을 다운로드하는 것이 얼마나 신뢰할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/380341

  •  22-08-2019
  •  | 
  •  

문제

총 20GB의 데이터가있는 10 만 개가 넘는 파일을 다운로드 할 WGET 명령이 포함 된 bash 파일이 있습니다.

bash 파일은 다음과 같습니다.

wget http://something.com/path/to/file.data

wget http://something.com/path/to/file2.data

wget http://something.com/path/to/file3.data

wget http://something.com/path/to/file4.data

그리고 정확히 114,770 행이 있습니다. SSH가 계정을 가지고 있고 이것을 실행하는 서버로 SSH가 얼마나 신뢰할 수 있습니까? 내 SSH 세션이 결국 타임 아웃 될까요? 나는 전체 시간에 ssh를 받아야합니까? 내 지역 컴퓨터가 충돌/종료되면 어떻게됩니까?

또한, 이것이 얼마나 많은 자원을 취할 것인지 아는 사람이 있습니까? 공유 서버 에서이 작업을하고 싶습니까?

나는 이것이 이상한 질문이라는 것을 알고 있습니다. 누군가 아이디어가 있는지 궁금합니다. 감사!

도움이 되었습니까?

해결책

사용

#nohup ./scriptname &> logname.log

이것은 보장 할 것입니다

  • SSH 세션이 중단 되더라도 프로세스는 계속됩니다.
  • 작동하는 것처럼 모니터링 할 수 있습니다.

또한 정기적 인 간격으로 프롬프트를 가질 수 있으며 로그 분석에 좋습니다. 예를 들어 #echo "1000 files copied"


리소스 활용에 관한 한, 그것은 전적으로 시스템과 주로 네트워크 특성에 의존합니다. 이론적으로 데이터 크기 및 대역폭만으로 시간을 호출 할 수 있습니다. 그러나 실생활에서 지연, 대기 시간 및 데이터 손실이 그림에 들어옵니다.

그러니 약간의 assuptions를 만들고 수학을 해보면 답을 얻을 수 있습니다. :)

다른 팁

통신 매체의 신뢰성, 하드웨어, ...!

당신이 사용할 수있는 screen 원격 컴퓨터에서 연결을 끊는 동안 계속 작동합니다.

스크립트를 쉘에서 분리하고 백그라운드에서 실행되도록하여 로그 아웃 할 때 계속 실행되도록합니다.

또한 다운로드 된 모든 파일을 기록하는 로그 파일 및 모든 오류 메시지와 같은 일종의 진행 표시기를 원합니다. Nohup은 stderr와 stdout을 파일로 보냅니다. 이러한 파일을 사용하면 고장난 다운로드를 선택하고 나중에 실행할 수 있습니다.

작은 파일 세트를 사용하여 먼저 테스트 실행을하여 명령을 내리고 출력을 좋아하는지 확인하십시오.

나는 당신이 당신의 껍질에서 그것을 분리하는 것이 좋습니다 nohup.

$ nohup myLongRunningScript.sh > script.stdout 2>script.stderr &
$ exit

스크립트는 완료로 실행됩니다. 전체적으로 로그인 할 필요가 없습니다.

실패시 재 시도하기 위해 WGET에 제공 할 수있는 옵션을 확인하십시오.

가능하면 모든 파일에 대한 MD5 체크섬을 생성하고이를 사용하여 모두 올바르게 전송되었는지 확인하십시오.

시작하십시오

nohup ./scriptname &

그리고 당신은 괜찮을 것입니다. 또한 진행 상황을 기록하여 어디에서 멈췄는지 알 수 있도록 진행 상황을 기록하는 것이 좋습니다.

wget url >>logfile.log

충분할 수 있습니다.

진행 상황을 모니터링하려면 다음을 수행 할 수 있습니다.

tail -f logfile.log

대체 기술을 보는 것이 가치가있을 수 있습니다. rsync. 나는 많은 프로젝트에서 그것을 사용했으며 매우 잘 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top