ftp mget 덮어쓰지 마세요

ftp mget 덮어쓰지 마세요

저는 ftp 스크립트에서 mget를 사용하고 있으며 mget이 로컬 디렉토리에 이미 존재하는 파일을 가져오는 것을 건너뛰기를 원합니다. 그런 방법이 있나요? 그렇다면 로컬 파일과 원격 파일이 다른 경우 mget이 진행할 수 있는 방법이 있습니까?

편집: 둘 다 훌륭한 답변입니다. 두 번째 답변이 예제를 제공했기 때문에 선택했으며 다음과 같이 수정했습니다.

lftp $HOST -u $USER,$PASSWD -e 'mirror --verbose=3 --only-newer --include "my-extended-regex-expression-of-include-file-patterns" / transfer/'

답변1

다양한 구현이 있습니다 ftp. 다운로드하기 전에 로컬 파일을 확인하는 명령이 ftp있는 프로그램 을 모릅니다 .mget

FTP를 통해 파일을 다운로드할 수 있고 실제로 원하는 파일을 다운로드할 수 있는 프로그램이 많이 있습니다.

  • 원격 전송 프로토콜

    lftp ftp.example.com <<EOF
    mirror --only-missing --file=/path/to/*.ext .
    EOF
    

    최신 파일 --only-missing만 다운로드하는 것을 대체합니다 .--only-newer

  • 얻다

    wget -nc 'ftp://ftp.example.com/path/to/*.ext'
    

    -N최신 파일만 다운로드하는 옵션을 추가합니다.

또는 복잡한 작업을 수행하는 가장 좋은 솔루션은 원격 파일 시스템을 마운트한 다음 일반 파일 조작 도구를 사용하는 것입니다. 다음 명령을 사용하여 FTP 디렉터리를 마운트할 수 있습니다.컬프트프프스.

mkdir mnt
curlftpfs ftp://ftp.example.com/ mnt
rsync -a --ignore-existing mnt/*.ext .   # replace --ignore-existing by -u to download only newer files
fusermount -u mnt

답변2

ftp이 작업은 자체적으로 수행되지 않습니다(대부분의 변형도 마찬가지 sftp). 이는 rsync일반적 으로 lftp.

그래도 문제가 해결되지 않으면 첫 번째 부분(기존 파일)에 대해 구성할 수 있는 rsync최소한 일부 응용 프로그램이 있습니다 . ftp예를 들어:

그러나 (이 스크립트 및 관련 Perl 스크립트를 사용하여) 조사해 볼 가치가 있습니다 rsync.lftp

그리고

관련 정보