BashスクリプトのTar除外パラメータは機能しません。

BashスクリプトのTar除外パラメータは機能しません。

シェルで直接うまく機能するtarコマンドラインがあります。

tar --exclude=out/pictures/\*.{jpg,gif,png,jpeg} --exclude=tmp/\*.{txt,php} --exclude=log/\*.{log,sql} -cvf /backups/mydomain.tar -C /var/www/vhosts/mydomain.com/httpdocs content

このコマンドをbashスクリプトに入れて実行すると、除外パラメータは無視されます。

私は次のようないくつかの異なる構文を試しました。

tar --exclude="out/pictures/\*.{jpg,gif,png,jpeg}" -cvf /backups/mydomain.tar -C /var/www/vhosts/mydomain.com/httpdocs content

tar --exclude='out/pictures/\*.{jpg,gif,png,jpeg}' -cvf /backups/mydomain.tar -C /var/www/vhosts/mydomain.com/httpdocs content

tar --exclude out/pictures/\*.{jpg,gif,png,jpeg} -cvf /backups/mydomain.tar -C /var/www/vhosts/mydomain.com/httpdocs content

tar --exclude= out/pictures/\*.{jpg,gif,png,jpeg} -cvf /backups/mydomain.tar -C /var/www/vhosts/mydomain.com/httpdocs content

しかし、何も動作しません。除外パラメータは単に無視されます。

単純な--excludeは--exclude="tmp"期待どおりに動作します。パラメータの使用を開始すると、私が想定している構文が壊れます。

Ubuntu 18.04.5でtar(GNU tar)1.29を実行しています。

ベストアンサー1

ブレーキ拡張はshではなくbashでのみ機能します。 Shebangがbashに設定されていることを確認してください。

#!/usr/bin/env bash

スクリプトを実行可能にして直接呼び出します。

chmod +x myscript.sh
./myscript.sh

コマンドの前にechoを追加して、いつでも拡張を確認できます。

echo tar --exclude=out/pictures/\*.{jpg,gif,png,jpeg} --exclude=tmp/\*.{txt,php} --exclude=log/\*.{log,sql} -cvf /backups/mydomain.tar -C /var/www/vhosts/mydomain.com/httpdocs content

おすすめ記事