2017-10-30 19 views
1

도움을 요청하고 싶습니다. 저는 스크립트 멍청한 놈입니다. FTPS를 통해 웹 서버를 백업하기위한 스크립트를 만들어야합니다. 이 스크립트를 만들었지 만 백업 파일 만 만들지 만 그 파일을 FTPS 서버에 업로드하지는 않습니다. 하지만 lftp 명령 만 실행하면 작동합니다. 나는 이것을 오랫동안보고있다. 그러나 나는 그것을 발견 할 수 없다. 왜 효과가 없다. 누군가 도움을 줄 수 있는가? 고맙습니다!bash 백업 스크립트 - pleskbackup + lftp

#!/bin/bash 

# SETTINGS 

RMDATE=$(date --iso -d '10 days ago').tar 
FTPUSER=user 
FTPPW=pass 
FTPSERVER=my.server.com 
LFTP=/usr/bin/lftp 

# DELETE OLD BACKUPS 

rmold() { 
$LFTP << EOF 
open ${FTPUSER}:${FTPPW}@${FTPSERVER} 
rm -rf ${RMDATE} 
bye 
EOF 
echo "Done." 
} 

# PLESK BACKUP 

if /usr/local/psa/bin/pleskbackup server -v --exclude-logs >/tmp/backup-plesk.log 2>&1 --output-file=/var/www/bak/`date -I`.tar; then 
     if lftp -c "open ${FTPUSER}:${FTPPW}@${FTPSERVER}; put /var/www/bak/`date -I`.tar"; then 
       rm -f /var/www/bak/`date -I`.tar 
       /usr/bin/sendEmail <<< some parameters >>> # backup success message 
       rmold 
     else 
       /usr/bin/sendEmail <<< some parameters >>> # upload error message 
     exit 1 
     fi 
else 
     /usr/bin/sendEmail <<< some parameters >>> # backup error message 
     exit 1 
fi 
+0

스크립트의 두 번째 줄에'set -vx'를 삽입하십시오. 'set -vx'는 쉘의 디버그/트레이스 기능입니다. '-v' 옵션은 처리 될 코드의 "블록"을 보여줄 것입니다.이 경우에는 (변경없이)'if ... else ... fi' 블록 전체와' x' 옵션은 실제 실행되는 코드의 각 라인 ('+'로 시작)을 보여 주며, 처리되는 변수의 값을 보여줍니다. 모든 변수가 예상대로 확장되는지 확인하십시오. 또한 http://shellcheck.net에 전체 스크립트를 복사/붙여 넣기하고 플래그가 지정된 오류를 수정하십시오 (모든 오류를 찾을 수는 없습니다). 행운을 빕니다. – shellter

답변

0

FTP FEAT 및 인증서에 문제가있었습니다. lftp 설정 파일에서 FEAT를 사용할 수 없게되었고 인증서에 대한 전체 경로가 지정되었습니다. 이제 작동합니다.