처리할 수 있기를 바랍니다많은 종류의파일을 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"
$1
aria2c의 gid입니다.$2
파일 개수입니다.$3
파일 이름입니다.