だから私はバックアップスクリプトを書いていますが、.isoファイルをスキップしたいと思います。
コマンドラインでコマンドを使用すると、すべてがうまく機能します。
rsync -a --delete --exclude='*.iso' /home/user/Desktop/Work /mnt/profile/Desktop/
ただし、スクリプトで使用しようとすると、「除外」設定は適用されず、.isoファイルはコピーされ続けます。スクリプトは次のとおりです。
#!/bin/bash
set -e
SRC_DIR="/home/user/Desktop/Work"
DST_MOUNTPOINT="/mnt/profile"
DST_DIR="/mnt/profile/Desktop/"
OPTIONS=" --exclude='*.iso' "
mountpoint -q $DST_MOUNTPOINT || mount $DST_MOUNTPOINT
rsync -a --delete $OPTIONS $SRC_DIR $DST_DIR
スクリプトを実行してPIDを取得して/proc/PID/cmdlineを確認すると、除外設定があります。
私は何が間違っていましたか?
ベストアンサー1
除外パターンの周りに引用符を付けます。
OPTIONS=" --exclude='*.iso' "
rsync $OPTIONS
ここではOPTIONS
コマンドラインで引用されていないため、単語の区切りが発生し、末尾のスペースは削除されます。ただし、文字列の単一引用符はそのまま残り、ファイル名の先頭と末尾に引用符を含めることはできないため、パターンは一致しません。<space>--exclude='*.iso'<space>
rsync
rsync
追加の引用符(およびスペース)を削除し、変数を引用します。
OPTIONS="--exclude=*.iso"
rsync "$OPTIONS" "$SRC_DIR" "$DST_DIR"