현재 FTP 사이트에서 파일을 다운로드하는 bash 스크립트가 있습니다. 모든 파일의 목록을 유지하고 매니페스트에없는 새 파일 만 다운로드하도록 스크립트를 수정하고 싶습니다. bash에서이 작업을 수행 할 수있는 방법이 있습니까? 아니면 bash가 실제로 수행 할 수있는 한계를 밀고 있습니까?Bash 이전에 파일을 다운로드하지 않은 경우에만 FTP에서 파일을 다운로드하는 스크립트
답변
내 제안은 다운로드하려는 파일 목록을 가져 와서 매니페스트와 비교 한 다음 매니페스트가 아닌 파일을 다운로드하는 것입니다. 이런 식으로 뭔가 작업을해야합니다 :
ftp [email protected] <<EOF
ls * filelist.txt
EOF
cat filelist.txt | awk '{print $9}' | tail -n +3 > filenames.txt
while IFS= read -r file
do
if [[ ! $(grep "$file" manifest.txt) ]]; then
echo "$file is not in manifest"
fi
done < "filenames.txt"
는 물론, 당신이 filelist.txt
및 filenames.txt
적절한 경로를 포함하도록 변경해야합니다. 또한 echo
명령을 변경하여 실제 다운로드를 수행하는 데 사용할 파일이나 변수에 파일 이름을 추가하십시오. 여기
*
을 변경하려는거야)
은 처음 세 줄은 파일의 목록을 잡아 ftp
를 사용
cat
라인은 ftp ls
명령의 출력을 구문 분석하여 파일 이름 부분 만 잡고 다른 파일에 넣습니다.
while 루프는 파일 목록을 검토하고 grep을 사용하여 파일 이름이 매니페스트 파일에 있는지 확인합니다. 그렇지 않은 경우 다운로드하여 매니페스트에 추가 할 수 있습니다.
궁금한 점이 있으면 알려주세요.
희망이 도움이됩니다.
감사합니다. 새로 다운로드 한 파일 이름으로 매니페스트를 업데이트하는 가장 좋은 방법은 무엇입니까? 고마워! – Danny
매니페스트에 저장할 정보에 따라 다음과 같이 할 수 있습니다 :'echo "$ file - $ (date)">> manifest.txt' - 두 배 이상 (''>>' ")는 결과를 파일에 추가하는 것을 의미하고'$ (date)'는 date 명령의 출력을 가져온다. ('Tue Apr 18 10:34:52 PDT 2017'). –
- 1. ftp에서 파일을 다운로드하지 못했습니다.
- 2. ftp에서 파일을 다운로드하는 작업 예약
- 3. ftp에서 파일을 다운로드하는 방법은 무엇입니까?
- 4. 웹 사이트에 로그인하고 파일을 다운로드하는 Bash 스크립트
- 5. powershell을 사용하여 ftp에서 여러 파일을 다운로드하는 방법
- 6. FTP에서 로컬 저장소로 파일을 다운로드하는 Webclient Stream
- 7. 목록에서 파일을 다운로드하지 않은 경우
- 8. 예기치 않은 파일을 만드는 Bash 스크립트
- 9. 다운로드하지 않고 ftp에서 jarfile을 실행하십시오.
- 10. C#을 사용하여 FTP에서 수많은 파일을 다운로드하는 방법?
- 11. 안드로이드에서 FTP에서 파일을 다운로드하는 중 파일 시스템 읽기 오류가 발생했습니다.
- 12. C#을 사용하여 ftp에서 로컬 디렉토리로 파일을 다운로드하는 방법은 무엇입니까?
- 13. 이미 다운로드하지 않은 채로 파일을 열면
- 14. 에뮬레이터에서 apk 파일을 다운로드하지 못했습니다.
- 15. 다운로드없이 파일을 ftp에서 http로 (그 반대)
- 16. CGI로 파일을 다운로드하는 방법
- 17. Curl로 파일을 다운로드하기위한 Bash 스크립트
- 18. 파일을 복사하는 리눅스 bash 스크립트
- 19. tar.gz 파일을 확인하기위한 bash 스크립트
- 20. 로그 파일을 보관하기위한 Bash 스크립트
- 21. 많은 파일을 편집하기위한 Bash 스크립트
- 22. MediaPipeline에서 파일을 다운로드하지 않습니다.
- 23. FTP에 연결하고 파일을 다운로드하는 Python 2.5 스크립트
- 24. 다운로드 폴더에 파일을 다운로드하지 않습니다.
- 25. RAR 파일을 다운로드하는 방법은 무엇입니까?
- 26. N 일 이전에 파일을 삭제했지만 특정 폴더에있는 파일을 제외하는 Bash 스크립트
- 27. URL에서 파일을 다운로드하지 않았습니다.
- 28. 브라우저에서 파일을 다운로드하지 마십시오.
- 29. 서버에서 파일을 다운로드하지 않습니다.
- 30. 서버에서 파일을 다운로드하지 못했습니다.
속도와 관련 파일의 수에 따라 다릅니다. 나는 매분마다 수천 개의 파일을 검사하는 것과 같은 것을 썼다. 목록을 유지하고 나열된 크기와 비교하여받은 크기를 확인합니다. lftp를 사용하여 꽤 잘 작동합니다. 그러나 간단한 경우 rsync를 사용할 수 있습니다. –
안타깝게도 로컬의 파일은 아카이브로 이동되지만 리모컨의 파일은 가끔 이동하기 때문에 rsync를 옵션으로 사용할 수 없습니다. 나는이 일을 하루에 2 ~ 3 회하고 파일 수는 약 1-10 (그리고 10은 많이) 일 수 있습니다. 내가 도울 수 있다면 나는 lftp를 위해 열려있다. 고맙습니다! – Danny
어. 코드는 약 500 줄이고/private/data를 가지고 있지만 기본적으로 'ls'명령에 lftp를 사용하고 이전의 명령에서 제공 한 것과 비교하여 출력과 비교 (sort 및 2 'interleaved bash 루프를 통해)를 기록합니다 다음 lftp 'get'스크립트 파일을 작성하여 호출하십시오. –