wget -i 각 파일이 완료되면 알림(처리 목적)

wget -i 각 파일이 완료되면 알림(처리 목적)

처리할 수 있기를 바랍니다많은 종류의파일을 wget -i다운로드하자마자 다운로드합니다(목록의 모든 파일이 완료될 때까지 기다리는 대신 전체 wget프로세스가 종료됩니다). 문제는 wget파일이 그 자리에서 다운로드되기 때문에 언제 파일을 처리해도 안전한지(완전히 다운로드되었는지) 확인할 수 없다는 것입니다. 이상적으로 원칙적인 접근 방식은 wget먼저 파일을 임시 디렉터리에 다운로드한 다음 mv완료되면 실제 대상 디렉터리에 다운로드하는 것입니다. 원자* 이기 때문에 mv대상 디렉터리에 있는 모든 파일이 완전히 다운로드되어 처리할 준비가 되었음을 보장할 수 있습니다.

맨페이지를 살펴봤지만 이와 관련된 내용을 찾을 수 없는 것 같습니다. 현재 해킹 은 fuser. wget그러나 이는 매우 취약하므로( wget파일을 여러 번 열면 어떻게 되나요?) 피하고 싶습니다.

이를 완전히 달성할 수 있는 방법이 없다면 동일한 효과를 얻을 수 있는 해결 방법이 있습니까? 관련된 경우 이러한 파일은 HTML 페이지입니다.

*추가: 분명히mv아마도 원자가 아닐 것입니다.(내 환경에서는 사실입니다.) 엄격한 원자성이 필요하다고 생각하지는 않습니다. 유일한 요구 사항은 파일 이름이 대상 디렉터리로 변경되면 파일이 완전히 다운로드된다는 것입니다(그리고 전체 콘텐츠는 새 경로에서 즉시 사용할 수 있습니다).

편집: 프로세스를 여러 명령으로 분할하는 것도 특정 핵심 기능 (속도 제한, HTTP 연결 유지, DNS 캐싱 등) wget의 사용을 방지하므로 이상적이지 않습니다 .wget

답변1

대신 사용하십시오 aria2c:

aria2c --on-download-complete="/path/to/script" -i file

따라서 스크립트는 다음과 같을 수 있습니다.

#!/bin/bash
notify-send "Finished: $3"
  • $1aria2c의 gid입니다.
  • $2파일 개수입니다.
  • $3파일 이름입니다.

관련 정보