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