저는 한 번에 여러 기가 바이트 파일을 전송할 수있는 로컬 디렉토리에 원격 디렉토리를 효율적으로 미러링해야하는 lftp 스크립트를 작성했습니다.lftp 내 기준을 충족시키지 않는 디렉토리를 미러링합니다.
요구 사항 중 하나는 로컬 사용자가 더 이상 필요하지 않을 때 로컬 파일을 삭제할 수 있으며이 스크립트를 실행하는 "로컬"컴퓨터가 여러 대 있으므로 원격 파일을 삭제하지 않을 때까지 삭제하지 않을 것입니다. 나는 그것을 필요로하는 모든 사람들을 알고있다. 따라서 스크립트는 --newer-than 플래그를 사용하여 lftp 스크립트가 마지막으로 로컬에서 실행 된 이후 원격 서버에서 새로 작성되거나 수정 된 파일 만 미러링합니다.
다음은 스크립트의 중요한 비트의 다음 EOF가 bash는 스크립트의 실제 끝이 아니다는 것을
가lftp -u $login,$pass $host << EOF
set ftp:ssl-allow yes
set ftp:ssl-protect-data yes
set ftp:ssl-protect-list yes
set ftp:ssl-force yes
set mirror:use-pget-n 5
mirror -X * -I share*/* --newer-than=/local/file/last.run --continue --parallel=5 $remote_dir $local_dir
quit
EOF
참고.
공유/디렉토리의 내용 (last.run 파일의 타임 스탬프보다 NEWER 인 공유/디렉토리 자체 포함)을 제외한 $ remote_dir의 모든 항목을 제외합니다.
내가 주에있는 다른 특별히 지정된 디렉토리가 있다고 가정 한 경우를 제외하고 예상대로이 작동이/그래서 주/shareWHATEVER/stuff.txt이 존재
shareWHATEVER/
했다.shareWHATEVER/stuff.txt가 처음 실행될 때 로컬로 원격 복사되며 모두 정상입니다.
stuff.txt를 포함하여 전체적으로 shareWHATEVER 디렉토리를 삭제하면 다음 번에 스크립트가 실행될 때 원격 서버에서 타임 스탬프가 변경되지 않았더라도 stuff.txt는 미러링되지 않지만 shareWHATEVER는 그대로 유지됩니다 .
그래서 로컬에서는 share/shareWHATEVER/디렉토리가 비어있는 것처럼 보입니다.
왜 shareWHATEVER가 자체 타임 스탬프 나 파일의 타임 스탬프도 내 로컬 확인보다 많지 않은데도 복사되는 이유는 무엇입니까?
감사합니다.