2017-10-30 4 views
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 
+0

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

答えて

0

FTP FEATと証明書に問題がありました。 lftp設定ファイルでFEATを無効にし、証明書へのフルパスを指定しました。それは今働く。

関連する問題