シェルで直接うまく機能する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