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
答え2
2つの異なる質問をしています。逆順:
より良いオプションは
rsync
FTPと同じくらい簡単ですが、よりスマートです。私はそれを強くお勧めします。変数を一重引用符で囲んだため、変数は解決されません。観察する:
$foo=bar $echo $foo bar $echo '$foo' $foo $echo "$foo" bar
コマンドを再作成して二重引用符で囲むと、ジョブが開始されます。