저는 lftp mirror --reverse
원격 서버에 파일과 디렉터리를 업로드하는 쉘 스크립트를 사용하고 있습니다. 그 직전에는 모든 것을 삭제하곤 했습니다 glob -a rm -r -f *
. 문제는 그 속도가 그리 빠르지 않다는 것이다. 전체 작업, 특히 재귀 삭제에는 몇 분이 걸립니다. 수백 개의 파일로 수 메가바이트의 데이터를 업로드하고 있는데 대부분의 파일은 변경되지 않은 상태입니다. FTPS 프로토콜을 통해 연결하고 있습니다.
질문
스크립트의 성능을 어떻게 향상시킬 수 있나요?
로컬 컴퓨터에 존재하지 않는 원격 서버의 파일을 삭제하면서 새로운 파일이나 로컬에서 변경된 파일만 업로드하려고 합니다. 안타깝게도 이것이 가능한지, 어떻게 달성할 수 있는지 모르겠습니다.
전체 스크립트:
lftp $host << EOF
user $username $password
cd $destination_directory
glob -a rm -r -f *
mirror --reverse $local_directory .
exit
EOF
답변1
해결책이 바로 눈앞에 있습니다. LFTP 매뉴얼을 조사하는 동안 명령에 내 요구 사항에 완벽하게 맞는 옵션이 mirror
있다는 것을 발견했습니다.--delete
--delete
소스에 없는 파일은 삭제하세요~LFTP 매뉴얼
나는 변했어
glob -a rm -r -f *
mirror --reverse $local_directory .
도착하다
mirror --reverse --delete $local_directory .