tarを除外するためにbashスクリプトを使用することはできません。
#!/bin/bash
CMD='tar --exclude=*.{db,log,token} -zcvf /home/pi/backup/2020.11.08-18.04.59.backup.tgz -P /home/pi/backup/test'
echo $CMD
sudo $CMD
しかし、echo出力コマンドを実行すると機能します。
tar --exclude=*.{db,log,token} -zcvf /home/pi/backup/2020.11.08-18.04.59.backup.tgz -P /home/pi/backup/test
ファイル拡張子に基づいてファイルを除外しようとしています。
タール(GNUタール)1.30
答え1
Bashでは配列を使用する必要があります。
cmd=(tar --exclude='*'.{db,log,token} -zcvf /home/pi/backup/2020.11.08-18.04.59.backup.tgz -P /home/pi/backup/test)
echo "${cmd[@]}"
=> tar --exclude=*.db --exclude=*.log --exclude=*.token ...
"${cmd[@]}"
# etc
上記は、誰かがコマンドを失敗させるために'*'
現在のディレクトリに--exclude=foo.log
というファイルを植えるのを防ぐためです。--exclude=bar.log
これはtarには関係ありませんが、シェルとコマンドラインを解析して拡張する方法に関連しています{db,log,...}
。