を防ぐため、私は奇妙な問題を経験し、私はそれがは、スクリプトからの対端末からコマンドを実行する - ワイルドカードのパスを - グロブ展開
スクリプト
echo "tar -zcvf $file $base/$target $exclude_args"
cd $base && tar -zcvf $file $base/$target $exclude_args
グロブファイル/ディレクトリとは何かを持っていると思います出力
tar -zcvf www_2017-04-24.tar.gz /var/www --exclude '/var/www/bak/*/*' --exclude '/var/www/test'
除外するパスが省略されているスクリプト(すべてのディレクトリがgzipで圧縮された)
を実行していますパテからの出力を直接実行する場合は/var/www/bak/*/*
下のディレクトリは、GZIPから
更新
コマンドは、SSH経由で送信される場合がありparse_exclude_paths(){
# escape forward slashes to avoid the paths to expand
args=$(echo "$exclude" | sed 's,/,\\\/,g')
args=$(printf " --exclude '%s'" $args)
# strip escapes
echo "$args" | sed 's,\\\/,/,g'
}
exclude="/var/www/bak/*/* /var/www/test"
exclude_args=''
if [ ! -z "$exclude" ]; then
exclude_args="$(parse_exclude_paths "$exclude")"
fi
更新2
何の問題も除外されず、除外されますパスは、私はあなたの質問の履歴を詮索し、そのyou'rを見たのgzip
ssh [email protected]$host 'cd '"$base"' && tar -zcvf $file '"$base/$target $exclude_args"
どちらのシェルを使用していますか? 'bash'など? – Inian
それはdebianの下にあるだけです。 – clarkk
除外パターンをスクリプトとコマンドラインの両方で一重引用符で囲みますか?あなたの端末やテキストエディタが一重引用符を翻訳上の引用符(またはバッククォートなど)に翻訳している可能性はありますか? –