1
私はあなたに助けを求めます。私はスクリプトのnoobです、私はFTPSを介して私たちのWebサーバーをバックアップするためのスクリプトを作成する必要があります。このスクリプトは作成しましたが、バックアップファイルを作成するだけですが、そのファイルを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
スクリプトの2行目に 'set -vx'を挿入してください。 'set -vx'はシェルのデバッグ/トレース機能です。 '-v'オプションは、処理されるコードの"ブロック "を表示します。この場合、' if ... else ... fi'ブロック全体(変更なし)、 ' - x'オプションは実際に実行されるコードの各行( '+'の前に)を表示し、処理中の変数の値を示します。すべての変数が期待通りに展開されていることを確認します。また、スクリプト全体をhttp://shellcheck.netにコピー&ペーストし、フラグが立てられたエラーを修正してください(すべてのエラーは見つかりません)。がんばろう。 – shellter