変数を変換しない Bash スクリプト

変数を変換しない Bash スクリプト

FTPを介して私のBoxアカウントにRaspberry Piバックアップを実行するためのbashスクリプトを作成しようとしています。ほとんどの場合は機能しますが、何らかの理由で変数をその変数が表すテキストに変換しません。このスクリプトを実行すると:

#!/bin/bash

FILENAME=backup-$(date +%Y-%m-%d).tar.gz

tar -czvf /tmp/$FILENAME /home/pi/

lftp -c 'open -e "set ftps:initial-prot ""; \
   set ftp:ssl-force true; \
   set ftp:ssl-protect-data true; \
   put /tmp/$FILENAME; " \
   -u "USERNAME", "PASSWORD" \
   ftps://ftp.box.com:990/Automation/RPI/Backups

アーカイブを作成し、正常にサーバーに接続しますが、次のエラーが発生します。

put: /tmp/$FILENAME: No such file or directory

$FILENAMEを "backup-$(date +%Y-%m-%d).tar.gz"に置き換えようとしましたが、それでも返されます。

put: /home/pi/+%Y-%m-%d).tar.gz: No such file or directory

「backup*.tar.gz」を使用すると、同様の結果が返されます。変数やワイルドカードの代わりに特定のファイル名を使用している場合にのみ機能させることができますが、バックアップを自動化するためにcronジョブを設定したいので、この方法は機能しません。

それでは、この問題を解決する方法を知っているか、より良いオプションを持っている人はいますか?ありがとうございます!

ベストアンサー1

誰もが同じ問題がある場合に備えて、私が書いたスクリプトは次のとおりです。

#!/bin/bash

FILENAME="backup-$(date +%Y-%m-%d).tar.gz"

echo $FILENAME
tar -czvf /tmp/$FILENAME /home/pi/


lftp << EOF
        set ftps:initial-prot
        set ftp:ssl-force true
        set ftp:ssl-protect-data true
        open -u "USERNAME","PASSWORD" ftps://ftp.box.com:990/Automation/RPI/Backups
        put /tmp/$FILENAME
        bye
EOF

rm /tmp/$FILENAME

おすすめ記事